<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-301169258518998120</id><updated>2026-10-28T02:27:14.878-07:00</updated><category term="amazon web services"/><category term="aws"/><category term="cloud"/><category term="boto"/><category term="ec2"/><category term="apple"/><category term="cloud computing"/><category term="python"/><category term="iPhone"/><category term="OSX"/><category term="Web Applications"/><category term="amazon linux ami"/><category term="ec2 outage"/><category term="micro instances"/><category term="rit"/><category term="sdb"/><category term="software"/><category term="$NAME"/><category term="10.6"/><category term="420"/><category term="AI"/><category term="ATT"/><category term="AWS Summit Chicago"/><category term="AdLib"/><category term="Amazon Cognito"/><category term="Amazon Echo"/><category term="Amazon Inspector"/><category term="Apache"/><category term="April 1"/><category term="April Fools"/><category term="Beanstalk"/><category term="DropBox"/><category term="Echo Show"/><category term="Events"/><category term="HTTP"/><category term="Jokes"/><category term="Kitchen Assistant"/><category term="Mobile Phones"/><category term="RDS"/><category term="REST"/><category term="RPC"/><category term="SQL"/><category term="SQL Backup"/><category term="Sequel Pro"/><category term="Serverless"/><category term="ServerlessConf"/><category term="Smart Assistant"/><category term="Theories"/><category term="Verizon"/><category term="Web Development"/><category term="WebDav"/><category term="academia"/><category term="academics"/><category term="aci"/><category term="blogging"/><category term="cloud architectures"/><category term="college"/><category term="define cloud"/><category term="design"/><category term="developers"/><category term="disaster recovery"/><category term="dns"/><category term="ebs outage"/><category term="fail"/><category term="gcc"/><category term="google"/><category term="google scholar"/><category term="iOS"/><category term="iPad"/><category term="iTunes Match"/><category term="icloud"/><category term="ios6"/><category term="iphone5"/><category term="itunes"/><category term="logging"/><category term="loggly"/><category term="lxml"/><category term="mac"/><category term="macpro"/><category term="migrating images"/><category term="monitoring"/><category term="newstex"/><category term="phones"/><category term="pyflakes"/><category term="pysvn"/><category term="python2.6"/><category term="remote development"/><category term="research"/><category term="risk management"/><category term="route53"/><category term="rsyslog"/><category term="rules of life"/><category term="s3"/><category term="scholar"/><category term="senior project"/><category term="service"/><category term="simple notification service"/><category term="smartphone"/><category term="snow leopard"/><category term="sns"/><category term="stress"/><category term="sysadmin"/><category term="syslog"/><category term="technology"/><category term="us-east"/><category term="us-west"/><category term="user group"/><category term="vim"/><category term="what is a cloud"/><category term="work"/><category term="xcode"/><title type='text'>Chris Moyer</title><subtitle type='html'>Author of &quot;Building Applications in the Cloud: Concepts, Patterns, and Projects&quot;</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.coredumped.org/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/301169258518998120/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://blog.coredumped.org/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/301169258518998120/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Chris</name><uri>http://www.blogger.com/profile/04068315333804202241</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>103</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-301169258518998120.post-9110776756616583930</id><published>2017-05-18T06:15:00.003-07:00</published><updated>2017-05-18T06:15:25.341-07:00</updated><title type='text'>Three videos every AWS Developer needs to watch (from ServerlessConf)</title><content type='html'>I&#39;m certainly not a fan of Google or Microsoft when it comes to Cloud Computing, in my opinion both are very far behind the curve from where Amazon is, and they both tried jumping in a little bit too late only after Amazon proved it as a viable business model. I&#39;m an AWS Fanboy, and proud of it.&lt;br /&gt;
&lt;br /&gt;
That being said, I know that sometimes my passion for AWS can blind me to other great opportunities. My Fanboy-ness blinded me into thinking CloudSearch was a good idea (hint, it&#39;s not, use &lt;a href=&quot;http://algolia.com/&quot; target=&quot;_blank&quot;&gt;Algolia&lt;/a&gt; instead). It also lead me down the rabbit hole thinking I should use Cognito, instead of the much better and easier integration that &lt;a href=&quot;http://auth0.com/&quot; target=&quot;_blank&quot;&gt;Auth0&lt;/a&gt; has. I like AWS for many of my production workloads, but it&#39;s actually slightly behind in some neat developer features that other cloud providers are now offering in the Serverless space.&lt;br /&gt;
&lt;br /&gt;
I&#39;m not jumping ship, however it&#39;s important for &lt;b&gt;anyone&lt;/b&gt;&amp;nbsp;in the Serverless space to get an understanding of what else is out there. There are two videos from ServerlessConf Austin that illustrate just how much Google and Microsoft love developers (and we all remember how much &lt;a href=&quot;https://www.google.com/url?sa=t&amp;amp;rct=j&amp;amp;q=&amp;amp;esrc=s&amp;amp;source=web&amp;amp;cd=1&amp;amp;cad=rja&amp;amp;uact=8&amp;amp;ved=0ahUKEwiN8o7twPnTAhUBMSYKHcwKD-8QyCkIKTAA&amp;amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DVhh_GeBPOhs&amp;amp;usg=AFQjCNG8Y9t5jpMYEVzTUNjxIESQOfDWzw&amp;amp;sig2=tgPj0eubKlVfSCg5VdrnFQ&quot; target=&quot;_blank&quot;&gt;Microsoft loves developers right&lt;/a&gt;?).&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Microsoft Azure Functions Keynote&lt;/h3&gt;
&lt;div&gt;
Microsoft&#39;s Azure Functions are interesting, essentially they bring something like an IFTTT (If This then That) functionality but for developers. Easy drag-and-drop support to build visual pipelines of your workflows.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;center&quot;&gt;
&lt;center&gt;
&lt;iframe allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/O5QUBEPZrqM&quot; width=&quot;560&quot;&gt;&lt;/iframe&gt;&lt;/center&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Of course, this is very flashy, but in practice probably not that useful without a really simple way to model it in code.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Google Firebase&lt;/h3&gt;
&lt;/div&gt;
&lt;div&gt;
Very flashy, very slick, and very simple for any developer to get started with. Of course there&#39;s a lot of hand-wavy magic, and I know for a fact that they have issues figuring out billing (I&#39;m still occasionally charged for a service I disabled 2 years ago). That being said, this type of developer experience is something AWS really needs to strive to produce.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;center&quot;&gt;
&lt;center&gt;
&lt;iframe allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/i5PtgiPRhJk&quot; width=&quot;560&quot;&gt;&lt;/iframe&gt;&lt;/center&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
If AWS offered this kind of solution on top of DynamoDB and Lambda, imagine how quickly you could get apps built... For now though it might just be prototyping.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
FaaS Lang with StdLib&lt;/h3&gt;
&lt;/div&gt;
&lt;div&gt;
StdLib is probably the smartest of the &quot;competitors&quot; to AWS Lambda. They&#39;re intelligent in that they realized their platform isn&#39;t going to be better than AWS Lambda, more scalable, or even something that last long into the distant future. What they did instead was build something &lt;b&gt;on top of existing FaaS providers&lt;/b&gt;. Building on the success of some of the alternatives like Azure Functions and Google Cloud Functions, &lt;a href=&quot;https://github.com/faaslang/faaslang&quot; target=&quot;_blank&quot;&gt;FaaS Lang&lt;/a&gt;&amp;nbsp;attempts to be a standards library that will run on any existing FaaS provider. It provides a unified way to build applications that will run anywhere.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;center&quot;&gt;
&lt;center&gt;
&lt;iframe allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/m5TFVI5Y5Ro&quot; width=&quot;560&quot;&gt;&lt;/iframe&gt;&lt;/center&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Of course, it&#39;s still yet another standard, so we&#39;ll see if anyone adopts it, but it certainly has the potential to bring competition between providers up to another level, one that simply relies on price, and not functionality.&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://blog.coredumped.org/feeds/9110776756616583930/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/301169258518998120/9110776756616583930' title='79 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/301169258518998120/posts/default/9110776756616583930'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/301169258518998120/posts/default/9110776756616583930'/><link rel='alternate' type='text/html' href='http://blog.coredumped.org/2017/05/three-videos-every-aws-developer-needs.html' title='Three videos every AWS Developer needs to watch (from ServerlessConf)'/><author><name>Chris</name><uri>http://www.blogger.com/profile/04068315333804202241</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/O5QUBEPZrqM/default.jpg" height="72" width="72"/><thr:total>79</thr:total></entry><entry><id>tag:blogger.com,1999:blog-301169258518998120.post-4864257339572855529</id><published>2017-05-09T09:01:00.002-07:00</published><updated>2017-05-09T09:03:03.549-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AI"/><category scheme="http://www.blogger.com/atom/ns#" term="Amazon Echo"/><category scheme="http://www.blogger.com/atom/ns#" term="Echo Show"/><category scheme="http://www.blogger.com/atom/ns#" term="Kitchen Assistant"/><category scheme="http://www.blogger.com/atom/ns#" term="Smart Assistant"/><title type='text'>The Tablet in the Kitchen to look up recipes just got an upgrade</title><content type='html'>Amazon just launched the &lt;a href=&quot;http://amzn.to/2pgGd52&quot; target=&quot;_blank&quot;&gt;Echo Show&lt;/a&gt;:&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://amzn.to/2pgGd52&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://images-na.ssl-images-amazon.com/images/I/61k3R7CRtQL._SL1000_.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
This new addition to the Echo Lineup could mean one very important feature for my Kitchen: I can remove my old First Generation iPad and upgrade to voice-enabled recipes.&lt;br /&gt;
&lt;br /&gt;
This makes sense for Amazon as it&#39;s trying to get into the Video Call replacement space, but it also explains why Amazon has been pushing the &quot;Rich Cards&quot; features of Echo Skills, and Lex.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Time will tell, but by June 28th we&#39;ll get our first look at what could possibly be the new favorite kitchen assistant (the Echo is my current favorite kitchen assistant, so why wouldn&#39;t adding a screen make it even better?).&lt;br /&gt;
&lt;br /&gt;
Here come the Recipe skills!&lt;br /&gt;
&lt;br /&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
amzn_assoc_placement = &quot;adunit0&quot;;
amzn_assoc_search_bar = &quot;true&quot;;
amzn_assoc_tracking_id = &quot;blogcoredumpe-20&quot;;
amzn_assoc_ad_mode = &quot;manual&quot;;
amzn_assoc_ad_type = &quot;smart&quot;;
amzn_assoc_marketplace = &quot;amazon&quot;;
amzn_assoc_region = &quot;US&quot;;
amzn_assoc_title = &quot;Related Echo Devices&quot;;
amzn_assoc_asins = &quot;B01J24C0TI,B01E6AO69U,B01M5EQLJI,B00X4WHP5E,B01DFKC2SO&quot;;
amzn_assoc_linkid = &quot;cf4f92202566bb254faa8a6e850ba8cc&quot;;
&lt;/script&gt;
&lt;script src=&quot;//z-na.amazon-adsystem.com/widgets/onejs?MarketPlace=US&quot;&gt;&lt;/script&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.coredumped.org/feeds/4864257339572855529/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/301169258518998120/4864257339572855529' title='27 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/301169258518998120/posts/default/4864257339572855529'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/301169258518998120/posts/default/4864257339572855529'/><link rel='alternate' type='text/html' href='http://blog.coredumped.org/2017/05/the-tablet-in-kitchen-to-look-up.html' title='The Tablet in the Kitchen to look up recipes just got an upgrade'/><author><name>Chris</name><uri>http://www.blogger.com/profile/04068315333804202241</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>27</thr:total></entry><entry><id>tag:blogger.com,1999:blog-301169258518998120.post-1942372310324974980</id><published>2017-05-01T06:06:00.000-07:00</published><updated>2017-05-01T06:06:25.609-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="cloud computing"/><category scheme="http://www.blogger.com/atom/ns#" term="Serverless"/><category scheme="http://www.blogger.com/atom/ns#" term="ServerlessConf"/><title type='text'>#ServerlessConf Austin 2017</title><content type='html'>&lt;div style=&quot;-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-family: Helvetica; font-size: 30px; line-height: normal;&quot;&gt;
&lt;span style=&quot;font-size: 11pt;&quot;&gt;This year I attended ServerlessConf Austin, which was hosted in the Zach Theatre in downtown Austin, TX. This was the first conference I’ve been to since WWDC in 2012, so I wasn’t quite sure what to expect. While WWDC was massive, it also felt like that college course you took that was in the big auditorium and you didn’t actually get to talk to the professor or learn anything because it was more of a demonstration. ServerlessConf is just now up to about 430 attendees, so it still has a small conference vibe, even though it’s growing massively really quickly. Additionally, there were workshops put on by &lt;/span&gt;&lt;a href=&quot;http://acloud.guru/&quot; style=&quot;font-size: 11pt;&quot;&gt;&lt;span style=&quot;-webkit-font-kerning: none; font-size: 11pt;&quot;&gt;acloud.guru&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt; that you could attend before the event. These gave you 1-on-1 time with the conference organizers, as well as a lot of great experience with working through a tutorial with other members of the Serverless community (and some folks who were brand new to Serverless but just wanted to see what it was about).&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-family: Helvetica; font-size: 11px; line-height: normal; min-height: 12.7px;&quot;&gt;
&lt;span style=&quot;-webkit-font-kerning: none; font-size: 11pt;&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-family: Helvetica; font-size: 11px; line-height: normal; min-height: 12.7px;&quot;&gt;
&lt;span style=&quot;-webkit-font-kerning: none; font-size: 11pt;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-family: Helvetica; font-size: 18px; line-height: normal;&quot;&gt;
&lt;span style=&quot;-webkit-font-kerning: none; font-size: 18pt; font-weight: bold;&quot;&gt;Workshops&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-family: Helvetica; font-size: 11px; line-height: normal; min-height: 12.7px;&quot;&gt;
&lt;span style=&quot;-webkit-font-kerning: none; font-size: 11pt;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-family: Helvetica; font-size: 11px; line-height: normal;&quot;&gt;
&lt;span style=&quot;-webkit-font-kerning: none; font-size: 11pt;&quot;&gt;The Workshops were held in a separate venue, where the organizers were promised solid WiFi. Unfortunately it was Hotel WiFi, and as was a common theme throughout the conference, you had to realize that you can’t trust someone else when they just say something is “Magic” (thank you Charity Majors, who we’ll get to later)!&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-family: Helvetica; font-size: 11px; line-height: normal; min-height: 12.7px;&quot;&gt;
&lt;span style=&quot;-webkit-font-kerning: none; font-size: 11pt;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-family: Helvetica; font-size: 11px; line-height: normal;&quot;&gt;
&lt;span style=&quot;-webkit-font-kerning: none; font-size: 11pt;&quot;&gt;However, despite the issues with the WiFi, the actual tutorial I followed (building a Serverless chatbot) did prove somewhat helpful. It was slightly less advanced than I had hoped, and it weren’t for the WiFi issues I would probably have completed the entire task in a few hours (as it was I finished by Noon and cut out a bit early to hack on it a bit more in my hotel).&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-family: Helvetica; font-size: 11px; line-height: normal; min-height: 12.7px;&quot;&gt;
&lt;span style=&quot;-webkit-font-kerning: none; font-size: 11pt;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-family: Helvetica; font-size: 11px; line-height: normal;&quot;&gt;
&lt;span style=&quot;-webkit-font-kerning: none; font-size: 11pt;&quot;&gt;Still, working on the same tutorial with others there to help through, and getting some time to ask questions of the staff while working on something was pretty neat. I do wish they had a more advanced course though, as I already had a good working knowledge of the underlying technologies, I just wanted to see how to adapt them to the Serverless framework a bit more. Next year, my recommendation for &lt;a href=&quot;http://acloud.guru/&quot;&gt;&lt;span style=&quot;-webkit-font-kerning: none; font-size: 11pt;&quot;&gt;acloud.guru&lt;/span&gt;&lt;/a&gt; would be to offer an “Advanced” track (and perhaps partner with a college or university in the area to get a better venue with better WiFi).&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-family: Helvetica; font-size: 11px; line-height: normal; min-height: 12.7px;&quot;&gt;
&lt;span style=&quot;-webkit-font-kerning: none; font-size: 11pt;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-family: Helvetica; font-size: 18px; line-height: normal;&quot;&gt;
&lt;span style=&quot;-webkit-font-kerning: none; font-size: 18pt; font-weight: bold;&quot;&gt;Day 1 Speakers&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-family: Helvetica; font-size: 11px; line-height: normal; min-height: 12.7px;&quot;&gt;
&lt;span style=&quot;-webkit-font-kerning: none; font-size: 11pt;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-family: Helvetica; font-size: 11px; line-height: normal;&quot;&gt;
&lt;span style=&quot;-webkit-font-kerning: none; font-size: 11pt;&quot;&gt;Day 1 of the Serverless Conference was filed with quite a few fun talks. Serverless Conference was organized similar to a BarCamp conference, where normal average people were speaking, but on a much more grand scale. They also had a committee to approve talks, and there was a lot more talking from sponsors, but in general it had that small-conference feel that we all love about something like BarCamp.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-family: Helvetica; font-size: 11px; line-height: normal; min-height: 12.7px;&quot;&gt;
&lt;span style=&quot;-webkit-font-kerning: none; font-size: 11pt;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-family: Helvetica; font-size: 11px; line-height: normal;&quot;&gt;
&lt;span style=&quot;-webkit-font-kerning: none; font-size: 11pt;&quot;&gt;Austen Collens did a great job opening up for the conference. He started off with a short explanation of how Serverless Conference (and acloud.guru) evolved from a little home office in his mom’s house, to a warehouse in Brooklyn (with no AC in the middle of august!), all the way to the 430+ attendees that were occupying the Zach theatre, and being introduced with more of “the dubstep”. It was a really great way to get to know the audience and it showed just how far Serverless has come from an idea to being used by fortune 500 companies.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-family: Helvetica; font-size: 11px; line-height: normal;&quot;&gt;
&lt;span style=&quot;-webkit-font-kerning: none; font-size: 11pt;&quot;&gt;After the two opening Key Note presentations, we had a quick break for a snack, custom made donuts, and then on to the normal talks. Many of the remaining talks from Day 1 were similar re-hashes of the same topics, talking about how their specific company uses Serverless (mostly all Lambda), or showing off a fun new tool that they just launched. The theme of the day though was that live demos shouldn’t be done, because the WiFi was terrible and the Demo Gods were not with anyone. There was an unfortunate incident too with one of the Demos that proved not to work at all, but everyone felt bad for the presenter and most of the other presenters quickly made sure they had a backup plan. Normally I wouldn’t bring this up, but it’s important for what happened later on Day 2 with &lt;a href=&quot;https://twitter.com/jrhunt&quot;&gt;&lt;span style=&quot;-webkit-font-kerning: none; font-size: 11pt;&quot;&gt;Randall Hunt&lt;/span&gt;&lt;/a&gt; (more on that later).&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-family: Helvetica; font-size: 11px; line-height: normal; min-height: 12.7px;&quot;&gt;
&lt;span style=&quot;-webkit-font-kerning: none; font-size: 11pt;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-family: Helvetica; font-size: 11px; line-height: normal;&quot;&gt;
&lt;span style=&quot;-webkit-font-kerning: none; font-size: 11pt;&quot;&gt;After the lunch break, they split the conference into two “tracks” with half of the speakers in the same main theatre, and the other half in a smaller theatre on the other side. I mistakenly read the schedule wrong and thought &lt;a href=&quot;https://twitter.com/chrismunns&quot;&gt;&lt;span style=&quot;-webkit-font-kerning: none; font-size: 11pt;&quot;&gt;Chris Munns&lt;/span&gt;&lt;/a&gt; was speaking in the second theatre, so I ended up missing his excellent talk on CI/CD with Lambda, but fortunately it should be online soon. Even so, I learned a bit about how iRobot manages thousands of Lambda functions to control their Roomba army, and how switching to Serverless helped them innovate much more quickly and handle features like custom mapping of your house. It was also quite interesting to see some more pragmatic approaches to Serverless like GreenQ in Israel is doing. It was also very exciting to see that Serverless is global, not just something us Americans are playing around with.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-family: Helvetica; font-size: 11px; line-height: normal; min-height: 12.7px;&quot;&gt;
&lt;span style=&quot;-webkit-font-kerning: none; font-size: 11pt;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-family: Helvetica; font-size: 11px; line-height: normal;&quot;&gt;
&lt;span style=&quot;-webkit-font-kerning: none; font-size: 11pt;&quot;&gt;After a quick snack break for a custom made ice-cream Sunday, we headed into the last portion of talks. The highlight of the last section was hands down from &lt;a href=&quot;https://twitter.com/lynnlangit&quot;&gt;&lt;span style=&quot;-webkit-font-kerning: none; font-size: 11pt;&quot;&gt;Lynn Langit&lt;/span&gt;&lt;/a&gt;. I believe it was her who gave my favorite quote of the conference: “Legacy is just another word for code that already works”. It was pretty interesting to hear her take on big-data analytics with Athena and Google BigQuery. It was refreshing to hear someone basically say that Amazon isn’t the king of everything, and you shouldn’t go into it as a Fanboy, but instead be practical and actually look at the differences between the two services. While I have no direct use for Athena right now, it’s certainly an interesting topic and made me think a little bit more about how I store some of my data on S3.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-family: Helvetica; font-size: 11px; line-height: normal; min-height: 12.7px;&quot;&gt;
&lt;span style=&quot;-webkit-font-kerning: none; font-size: 11pt;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-family: Helvetica; font-size: 11px; line-height: normal;&quot;&gt;
&lt;span style=&quot;-webkit-font-kerning: none; font-size: 11pt;&quot;&gt;The after-party was also on Day 1 for some odd reason, and was a typical nerd party. It was mostly for networking, of which I did a little bit, but I actually met more people in between sessions and through lunch/snack breaks. Overall I took quite a few cards from people and even found a fellow Clevelander.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-family: Helvetica; font-size: 11px; line-height: normal; min-height: 12.7px;&quot;&gt;
&lt;span style=&quot;-webkit-font-kerning: none; font-size: 11pt;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-family: Helvetica; font-size: 18px; line-height: normal;&quot;&gt;
&lt;span style=&quot;-webkit-font-kerning: none; font-size: 18pt; font-weight: bold;&quot;&gt;Day 2&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-family: Helvetica; font-size: 11px; line-height: normal; min-height: 12.7px;&quot;&gt;
&lt;span style=&quot;-webkit-font-kerning: none; font-size: 11pt;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-family: Helvetica; font-size: 11px; line-height: normal;&quot;&gt;
&lt;span style=&quot;-webkit-font-kerning: none; font-size: 11pt;&quot;&gt;The opening act for Day 2 was &lt;/span&gt;&lt;span style=&quot;-webkit-font-kerning: none; font-family: Helvetica-Oblique; font-size: 11pt; font-style: italic;&quot;&gt;supposed&lt;/span&gt;&lt;span style=&quot;-webkit-font-kerning: none; font-size: 11pt;&quot;&gt; to be Tim Wagner from AWS, however he got stuck in an airport somewhere and didn’t make it until the end of the conference. Instead, the folks at ServerlessConf had to quickly shuffle around and moved three of the “lighting talks” to open up. My old colleague and fellow RIT and CSH alumni &lt;a href=&quot;https://twitter.com/ryan_sb&quot;&gt;&lt;span style=&quot;-webkit-font-kerning: none; font-size: 11pt;&quot;&gt;Ryan Brown&lt;/span&gt;&lt;/a&gt; was second, and gave a pretty decent talk about how to integrate Legacy (there’s that word again!) stuff with Serverless applications. It was another interesting take because most of the other talks were entirely on how to build a new application, but Ryan was more focused on existing companies that obviously aren’t all-in Serverless (yet). He made it clear that you don’t &lt;/span&gt;&lt;span style=&quot;-webkit-font-kerning: none; font-family: Helvetica-Oblique; font-size: 11pt; font-style: italic;&quot;&gt;have&lt;/span&gt;&lt;span style=&quot;-webkit-font-kerning: none; font-size: 11pt;&quot;&gt; to be all-in or brand new to get started with Serverless development.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-family: Helvetica; font-size: 11px; line-height: normal; min-height: 12.7px;&quot;&gt;
&lt;span style=&quot;-webkit-font-kerning: none; font-size: 11pt;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-family: Helvetica; font-size: 11px; line-height: normal;&quot;&gt;
&lt;span style=&quot;-webkit-font-kerning: none; font-size: 11pt;&quot;&gt;After the lightning talks was a Keynote by &lt;a href=&quot;https://www.linkedin.com/in/jrmcgee&quot;&gt;&lt;span style=&quot;-webkit-font-kerning: none; font-size: 11pt;&quot;&gt;Jason McGee&lt;/span&gt;&lt;/a&gt; from IBM, who discussed how they helped create OpenWhisk, and focused a lot on portability within Serverless. It was interesting to see the big folks like Amazon, and Microsoft focus on why you should use their unique features, but IBM focusing on why you could switch to them, or any other provider and avoid lock-in.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-family: Helvetica; font-size: 11px; line-height: normal; min-height: 12.7px;&quot;&gt;
&lt;span style=&quot;-webkit-font-kerning: none; font-size: 11pt;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-family: Helvetica; font-size: 11px; line-height: normal;&quot;&gt;
&lt;span style=&quot;-webkit-font-kerning: none; font-size: 11pt;&quot;&gt;After Jason’s talk, we had a quick snack break, nothing as fancy as the custom donuts this time (just Snickers and Kit-Kat bars) after which we moved into the second section. The highlight of this section was obviously &lt;a href=&quot;https://twitter.com/mipsytipsy&quot;&gt;&lt;span style=&quot;-webkit-font-kerning: none; font-size: 11pt;&quot;&gt;Charity Majors&lt;/span&gt;&lt;/a&gt;, who did an interesting and unfiltered talk from an Ops perspective on what Serverless really means to the Ops community, and what Devs really need to learn to do. Her slides were as colorful as her talk, and you should really go check it out sometime after it’s posted. It was a good way to add a little bit of humor and lighten things up after a long day and a half of pretty deep technical talks.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-family: Helvetica; font-size: 11px; line-height: normal; min-height: 12.7px;&quot;&gt;
&lt;span style=&quot;-webkit-font-kerning: none; font-size: 11pt;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-family: Helvetica; font-size: 11px; line-height: normal;&quot;&gt;
&lt;span style=&quot;-webkit-font-kerning: none; font-size: 11pt;&quot;&gt;After Charity we went back into some more serious technical talks, the most interesting to me of which was Firebase. They showed how you can use their platform tools almost as a replacement for the Serverless Framework, running directly on Google’s platform. This was the most surprising thing to me and quite an amazing learning experience. I had never looked into Firebase as a platform very seriously, but now I’m certainly going to.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-family: Helvetica; font-size: 11px; line-height: normal; min-height: 12.7px;&quot;&gt;
&lt;span style=&quot;-webkit-font-kerning: none; font-size: 11pt;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-family: Helvetica; font-size: 11px; line-height: normal;&quot;&gt;
&lt;span style=&quot;-webkit-font-kerning: none; font-size: 11pt;&quot;&gt;After lunch, we again split into two different tracks, the first of which was started off by &lt;a href=&quot;https://twitter.com/ShortJared&quot;&gt;&lt;span style=&quot;-webkit-font-kerning: none; font-size: 11pt;&quot;&gt;Jared Short&lt;/span&gt;&lt;/a&gt;, who talked a little bit about Single Page Apps, specifically on how to render some code behind the scenes using Serverless Technologies to help with speed and Bots/scrapers. He even made an interesting comment about “some little startup named Facebook” and showed how they don’t work without JavaScript enabled, but his very rich SPAs do (with a little magic from Serverless). It was an interesting take on how to optimize for platforms that might not have a lot of compute power, and how to really leverage the power of the Serverless Cloud.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-family: Helvetica; font-size: 11px; line-height: normal; min-height: 12.7px;&quot;&gt;
&lt;span style=&quot;-webkit-font-kerning: none; font-size: 11pt;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-family: Helvetica; font-size: 11px; line-height: normal;&quot;&gt;
&lt;span style=&quot;-webkit-font-kerning: none; font-size: 11pt;&quot;&gt;After Jared, I quickly bolted over to the second track to wait for the talk from &lt;a href=&quot;https://twitter.com/forrestbrazeal&quot;&gt;&lt;span style=&quot;-webkit-font-kerning: none; font-size: 11pt;&quot;&gt;Forrest Brazeal&lt;/span&gt;&lt;/a&gt; on SWF and Step Functions. Before that, however, was a really unexpected surprise from Marcia Villalba from &lt;a href=&quot;http://toon.tv/&quot;&gt;&lt;span style=&quot;-webkit-font-kerning: none; font-size: 11pt;&quot;&gt;toon.tv&lt;/span&gt;&lt;/a&gt; who had probably the most artfully designed slides of the conference. The trend of the day here was humor and keeping things light, and Marcia and Forrest both held up to that task (Forrest even did an interesting “&lt;a href=&quot;https://twitter.com/forrestbrazeal/status/858116123635712000&quot;&gt;&lt;span style=&quot;-webkit-font-kerning: none; font-size: 11pt;&quot;&gt;Rap&lt;/span&gt;&lt;/a&gt;” on Serverless).&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-family: Helvetica; font-size: 11px; line-height: normal; min-height: 12.7px;&quot;&gt;
&lt;span style=&quot;-webkit-font-kerning: none; font-size: 11pt;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-family: Helvetica; font-size: 11px; line-height: normal;&quot;&gt;
&lt;span style=&quot;-webkit-font-kerning: none; font-size: 11pt;&quot;&gt;After both Jared and Marcia, I sat through the hands-down best talk of the entire conference, put on by &lt;a href=&quot;https://twitter.com/jrhunt&quot;&gt;&lt;span style=&quot;-webkit-font-kerning: none; font-size: 11pt;&quot;&gt;Randall Hunt&lt;/span&gt;&lt;/a&gt;. Remember I mentioned that everyone else was avoiding demos? While that was true, Randall decided it would be a good idea to do about a dozen demos all at once. He even SSH’d into a server to upload thousands of images to S3, all while in the middle of frantically typing and showing a ton of interesting code. His entire talk was very light and just very well presented. He showed himself as from AWS, but more of a developer and like the rest of us than most of the other presenters.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-family: Helvetica; font-size: 11px; line-height: normal; min-height: 12.7px;&quot;&gt;
&lt;span style=&quot;-webkit-font-kerning: none; font-size: 11pt;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-family: Helvetica; font-size: 11px; line-height: normal;&quot;&gt;
&lt;span style=&quot;-webkit-font-kerning: none; font-size: 11pt;&quot;&gt;it all started with his laptop not working, which he then did a cold reboot to get working, and while that was going on he decided to do another demo by taking a selfie with the crowd to send to &lt;a href=&quot;https://twitter.com/AWSCloudNinja&quot;&gt;&lt;span style=&quot;-webkit-font-kerning: none; font-size: 11pt;&quot;&gt;@AWSCloudNinja&lt;/span&gt;&lt;/a&gt; to show off some of the Lex and Rekognition features. After his laptop started up, he went even more off script with showing parts of his slide deck, but then jumping right into real-world coding problems: how to keep his mother updated on his status. His overall presentation was very well done, and even though it seemed like he was a disorganized mess it flowed very smoothly and he crammed a lot of information into a small presentation. Most of the things he went over I already had worked with, but seeing how he hooked them all together was pretty nifty.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-family: Helvetica; font-size: 11px; line-height: normal; min-height: 12.7px;&quot;&gt;
&lt;span style=&quot;-webkit-font-kerning: none; font-size: 11pt;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-family: Helvetica; font-size: 18px; line-height: normal;&quot;&gt;
&lt;span style=&quot;-webkit-font-kerning: none; font-size: 18pt; font-weight: bold;&quot;&gt;The conclusion by Tim Wagner&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-family: Helvetica; font-size: 11px; line-height: normal; min-height: 12.7px;&quot;&gt;
&lt;span style=&quot;-webkit-font-kerning: none; font-size: 11pt;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-family: Helvetica; font-size: 11px; line-height: normal;&quot;&gt;
&lt;span style=&quot;-webkit-font-kerning: none; font-size: 11pt;&quot;&gt;Perhaps it was the build-up by Randall, or perhaps it was because there was so much hype about Tim, but when Tim Wagner came on to close out ServerlessConf, I was not very impressed. He was much more corporate AWS than the rest of the day had been, and his presentation style was slightly boring to me. He talked about some great information about adoption of API Gateway and Serverless in general, but he was speaking more from a manager position than from a developer.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-family: Helvetica; font-size: 11px; line-height: normal; min-height: 12.7px;&quot;&gt;
&lt;span style=&quot;-webkit-font-kerning: none; font-size: 11pt;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;-webkit-text-stroke-color: rgb(0, 0, 0); -webkit-text-stroke-width: initial; font-family: Helvetica; font-size: 11px; line-height: normal;&quot;&gt;
&lt;span style=&quot;-webkit-font-kerning: none; font-size: 11pt;&quot;&gt;In the end, he blended parts of a server (a stick of RAM, a CPU, etc) and that was his “big thing”. I understand the concept of destroying servers as a show of Serverless, however it was quite a bit of build up to something that wasn’t really that impressive. Sorry Tim, but Randall stole the show this time.Yeah&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://blog.coredumped.org/feeds/1942372310324974980/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/301169258518998120/1942372310324974980' title='28 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/301169258518998120/posts/default/1942372310324974980'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/301169258518998120/posts/default/1942372310324974980'/><link rel='alternate' type='text/html' href='http://blog.coredumped.org/2017/05/serverlessconf-austin-2017.html' title='#ServerlessConf Austin 2017'/><author><name>Chris</name><uri>http://www.blogger.com/profile/04068315333804202241</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>28</thr:total></entry><entry><id>tag:blogger.com,1999:blog-301169258518998120.post-1956661572307311985</id><published>2017-03-01T13:50:00.003-08:00</published><updated>2017-03-31T13:47:13.136-07:00</updated><title type='text'>Stripe just told a large number of its customers to get lost</title><content type='html'>&lt;b&gt;UPDATE:&lt;/b&gt;&amp;nbsp;This wasn&#39;t actually entirely Stripe&#39;s fault, their bank was the one who blasted everything with &quot;Marijuana&quot; referenced anywhere (probably some sort of keyword search). After some back-and-forth, stripe went back to their bank and got them to realize we&#39;re a legitimate company and not selling any Marijuana based products.&lt;br /&gt;
&lt;br /&gt;
While in the scuffle, we tried to apply for a few other credit-card agencies and one other bank, who knew full well what we did and knew we didn&#39;t have anything to do with touching Marijuana products, who is supposed to be a &quot;high risk&quot; bank, rejected us outright. It&#39;s not just Stripe, and after this blog post Stripe actually contacted us and helped us get squared away, so I thank them for that.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;TL;DR&lt;/b&gt;: Stripe&#39;s bank is screwing legitimate business by giving them 30 days to switch to a new platform. Even businesses that don&#39;t deal directly with Marijuana, but operate in the same space.&lt;br /&gt;
&lt;br /&gt;
A few years ago, I started a company along with some others to create a new product designed to track what states are doing with Marijuana laws, including tracking who gets licenses, what companies are dealing with Marijuana, and what people belong to those companies and licenses. This is similar to a Dun and Bradstreet but specifically for business operating in the legalized Marijuana space. We also tracked all of the laws for each state and have issued two books, &lt;a href=&quot;http://cannabiz.media/littlegreenbook/&quot; target=&quot;_blank&quot;&gt;one for average consumers&lt;/a&gt;, and &lt;a href=&quot;http://cannabiz.media/guide/&quot; target=&quot;_blank&quot;&gt;one for businesses looking to join the market&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Marijuana is everywhere. At this point, 29 states have some form of legalized Marijuana. New states are coming on board too. &lt;a href=&quot;http://www.gallup.com/poll/196550/support-legal-marijuana.aspx&quot; target=&quot;_blank&quot;&gt;Over 60% of americans back legalizing Marijuana&lt;/a&gt;. Yet this isn&#39;t an issue of Marijuana being illegal, it&#39;s an issue of Banks stepping in where they shouldn&#39;t.&lt;br /&gt;
&lt;br /&gt;
We are a media company, a publisher, we do not, and will not, ever touch any part of Marijuana. We do not help companies track plants, offer any financial help with anyone who produces, processes, or distributes marijuana, or help anyone acquire marijuana in any way. We simply track the business, like many other publishers do. We&#39;ve even been on &lt;a href=&quot;http://finance.yahoo.com/news/there-are-some-oddball-marijuana-laws-on-the-books-150701870.html&quot; target=&quot;_blank&quot;&gt;Yahoo Finance&lt;/a&gt;&amp;nbsp;as one of the foremost experts on the laws in different states.&lt;br /&gt;
&lt;br /&gt;
We&#39;ve tried advertising on Google, Microsoft, and Facebook. Both Google and Microsoft flat out blocked us based solely on keywords. This was expected. We use Stripe for transaction purchases, and we&#39;ve never had an issue, until this morning when we got a notice from Stripe that we have 30 days to migrate elsewhere. They&#39;re shutting us down because we talk about legalized Marijuana.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Stripe&#39;s bank is having a major overreaction&lt;/h3&gt;
&lt;br /&gt;
As it turns out, Stripe recently got a major audit by their bank, and due to that anyone even related to the Marijuana industry is being kicked off. How far will this go? If you&#39;re the NY Times and you have a column on the Marijuana industry does that mean you can&#39;t use Stripe? I just blogged about Marijuana, am I no longer allowed to use Stripe? The IRS collects taxes from Marijuana companies, are they also not allowed to use Stripe?&lt;br /&gt;
&lt;br /&gt;
This isn&#39;t a fatal issue for us, however it does mean that every one of our customers will have to re-enter their credit card information into a new system. We can&#39;t get that information out of stripe for security reasons, and our customers are set up to Auto-Renew via subscriptions. If we end up losing some of our customers because of Stripe, who will pick up that slack? What about the extra month of development of integrating a new payment system and then getting the customers to switch over to it?&lt;br /&gt;
&lt;br /&gt;
I know it&#39;s a tricky business, but it&#39;s going to far when you&#39;re actively destroying companies simply because they&#39;re reporting the news. I know Trump wants this to become the new normal, attacking anyone that has a different opinion than he does, but I didn&#39;t expect a well-known and respected company such as Stripe to take an active stance and decide that if you&#39;re talking about Marijuana, you&#39;re banned from their service.&lt;br /&gt;
&lt;br /&gt;
I know this isn&#39;t &lt;i&gt;exactly&lt;/i&gt;&amp;nbsp;stripe setting these policies, it&#39;s the bank they deal with; but there are many many banks that allow even companies that physically sell Marijuana to do business with them. If Stripe had told us that we&#39;re in a &quot;Risky Business&quot; and so we have to pay an extra 1% transaction fee, we would have grumbled but ultimately kept with them. If Stripe had told us they&#39;re working on another bank that will accept us, we&#39;d be happy. If they had even bothered to ask us what our business was before just deciding they know what we do, at least we would have known what&#39;s going on. As it is, Stripe just saw the word &quot;Cannabiz&quot; in our invoices, and decided we need to go.&lt;br /&gt;
&lt;br /&gt;
I hope you&#39;re not in the same boat as we are, but if you do anything related to Marijuana, Cannabis, or in general anything that the president doesn&#39;t agree with, you may soon be. Small businesses are suffering because companies like Stripe won&#39;t stand up for us.</content><link rel='replies' type='application/atom+xml' href='http://blog.coredumped.org/feeds/1956661572307311985/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/301169258518998120/1956661572307311985' title='194 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/301169258518998120/posts/default/1956661572307311985'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/301169258518998120/posts/default/1956661572307311985'/><link rel='alternate' type='text/html' href='http://blog.coredumped.org/2017/03/stripe-just-told-large-number-of-its.html' title='Stripe just told a large number of its customers to get lost'/><author><name>Chris</name><uri>http://www.blogger.com/profile/04068315333804202241</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>194</thr:total></entry><entry><id>tag:blogger.com,1999:blog-301169258518998120.post-9065010797204693525</id><published>2017-02-03T07:25:00.001-08:00</published><updated>2017-02-03T07:25:20.710-08:00</updated><title type='text'>Heading to Austin Serverless Conf!</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjz4P8d_hrhBhNh-LeL2PKTu4PYCOLKyUZTvTkRWpg0ORTyTjD30D4M8pJfYrGEvRZe8fZRAXyTvknXk1OPEn8VVNQb1OAfNysRibX7n0qTsd81sO0ZGGTZon5xw_DHbJLxt_Y8tvTDvUo/s1600/serverlessconf.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;340&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjz4P8d_hrhBhNh-LeL2PKTu4PYCOLKyUZTvTkRWpg0ORTyTjD30D4M8pJfYrGEvRZe8fZRAXyTvknXk1OPEn8VVNQb1OAfNysRibX7n0qTsd81sO0ZGGTZon5xw_DHbJLxt_Y8tvTDvUo/s640/serverlessconf.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
Normally things are pretty hectic around here and I&#39;m finding myself pulled in too many directions to actually get out to a technical conference. In fact, the last time I was able to get away for a full week tech conference was WWDC in 2012 (sadly, the year after Jobs stepped down from doing the keynotes).&amp;nbsp;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
This year, however, things have calmed down quite a bit and now all I&#39;m worried about is optimizing our usage and trying to cut some AWS costs. We&#39;ve already been pretty heavily invested in Serverless functions using AWS Lambda, but I&#39;m really excited to learn what others in the community are using as well as catching up with some old colleagues. I&#39;m very excited to be heading to &lt;a href=&quot;https://austin.serverlessconf.io/&quot; target=&quot;_blank&quot;&gt;Serverless Conf, Austin&lt;/a&gt;.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Tickets and flight have already been acquired.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3&gt;
Other things to do in Austin&lt;/h3&gt;
&lt;div&gt;
Austin is also a pretty amazing place so I&#39;m coming in a few days early and leaving after the weekend. The workshops don&#39;t start until the 26th, but if you get in a few days early, you can catch the opening month of the &lt;a href=&quot;http://www.milb.com/schedule/index.jsp?sid=t102&quot; target=&quot;_blank&quot;&gt;Round Rock Express (AAA Baseball)&lt;/a&gt; on the 24th and 25th.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Of course, the Mexican food is also amazing, my favorite from last time was from &lt;a href=&quot;http://www.polvosaustin.com/&quot; target=&quot;_blank&quot;&gt;Polvos&lt;/a&gt;, but I also plan to try a few new places this year, including some of the many food truck areas that I&#39;ve heard about.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
It&#39;s also Texas, so it&#39;s really a requirement to try the texas sized steaks from &lt;a href=&quot;http://texaslandandcattle.com/&quot; target=&quot;_blank&quot;&gt;Texas Land and Cattle&lt;/a&gt;. There&#39;s also &lt;a href=&quot;https://www.google.com/maps/search/bbq/@30.2536397,-97.7457128,14z&quot; target=&quot;_blank&quot;&gt;too many BBQ joints worth trying to even list.&lt;/a&gt;&amp;nbsp;(although if you have a few hours to kill you can always wait in line for &lt;a href=&quot;https://franklinbarbecue.com/&quot; target=&quot;_blank&quot;&gt;Franklin&lt;/a&gt;).&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Downtown is also worth driving through, or even walking through. It has a lot of cool museums and libraries, including the LBJ Library.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
And if you happen to be bringing the wife, who also happens to love leather (as in boots), &lt;a href=&quot;https://goo.gl/maps/J1bEVDfn3HH2&quot; target=&quot;_blank&quot;&gt;Allens Boots&lt;/a&gt; is also pretty nifty, but be prepared to spend a few hundred. They have quite a bit more than boots too, I actually bought a hat and belt while I was there.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Have any other suggestions for things to do in Austin while at Serverless Conf? Leave some suggestions in the Comments!&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://blog.coredumped.org/feeds/9065010797204693525/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/301169258518998120/9065010797204693525' title='26 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/301169258518998120/posts/default/9065010797204693525'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/301169258518998120/posts/default/9065010797204693525'/><link rel='alternate' type='text/html' href='http://blog.coredumped.org/2017/02/heading-to-austin-serverless-conf.html' title='Heading to Austin Serverless Conf!'/><author><name>Chris</name><uri>http://www.blogger.com/profile/04068315333804202241</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjz4P8d_hrhBhNh-LeL2PKTu4PYCOLKyUZTvTkRWpg0ORTyTjD30D4M8pJfYrGEvRZe8fZRAXyTvknXk1OPEn8VVNQb1OAfNysRibX7n0qTsd81sO0ZGGTZon5xw_DHbJLxt_Y8tvTDvUo/s72-c/serverlessconf.jpg" height="72" width="72"/><thr:total>26</thr:total></entry><entry><id>tag:blogger.com,1999:blog-301169258518998120.post-1119772837890354039</id><published>2016-12-05T07:55:00.003-08:00</published><updated>2016-12-08T06:03:12.819-08:00</updated><title type='text'>How to set DeadLetterQueue (DLQ) on AWS Lambda functions using the AWS CLI</title><content type='html'>&lt;b&gt;UPDATE&lt;/b&gt;: &lt;i&gt;It&#39;s important to note that as of now, DLQ&#39;s are ONLY supported in the us-east-2 (Ohio) region. While this command doesn&#39;t return any errors in other regions, it also doesn&#39;t make any changes.&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
One of the cooler announcements from re:Invent that you can start using right now is Dead Letter Queues (DLQ) for AWS Lambda functions. This has the advantage of allowing you to re-try, and alert, on events that fail even after being re-tried by AWS Lambda automatically.&lt;br /&gt;
&lt;br /&gt;
You can find out more information on DLQ for Lambda by reading the official documentation, however in order to get quickly started with it, you should create a new SQS queue and configure a lambda function to send to it. This should be able to be done through the AWS Console, but it doesn&#39;t appear to be there yet, so here&#39;s how to get started with the CLI.&lt;br /&gt;
&lt;br /&gt;
First, upgrade to the latest version:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;sudo pip install -U awscli&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Then, update your function:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;aws lambda update-function-configuration --function-name &lt;i&gt;LambdaFunctionName&lt;/i&gt; --dead-letter-config TargetArn=&lt;i&gt;sqs or sns arn&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;That&#39;s it, you should start seeing DLQ events coming in on the SQS queue you configured anytime there is a complete failure, after Lambda&#39;s re-tries have all failed.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;From here, you can set up alerts using SES, you could set this up to notify you via SNS, or have another Lambda function read the queue every few minutes to pick up and try re-processing the events at a later date.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://blog.coredumped.org/feeds/1119772837890354039/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/301169258518998120/1119772837890354039' title='46 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/301169258518998120/posts/default/1119772837890354039'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/301169258518998120/posts/default/1119772837890354039'/><link rel='alternate' type='text/html' href='http://blog.coredumped.org/2016/12/how-to-set-deadletterqueue-dlq-on-aws.html' title='How to set DeadLetterQueue (DLQ) on AWS Lambda functions using the AWS CLI'/><author><name>Chris</name><uri>http://www.blogger.com/profile/04068315333804202241</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>46</thr:total></entry><entry><id>tag:blogger.com,1999:blog-301169258518998120.post-857952729844015058</id><published>2016-12-01T11:44:00.001-08:00</published><updated>2016-12-01T11:44:15.672-08:00</updated><title type='text'>5 Announcements from re:Invent you can&#39;t ignore</title><content type='html'>Werner Vogels just finished up the Day 3 re:Invent keynote presentation, and this may be the most excited I&#39;ve ever been for AWS announcements in a long time. Previously we&#39;ve seen a lot of weird and specific products being introduced, but this year AWS topped off quite a few improvements to existing products and workflows. Here&#39;s the ones I&#39;m most interested in&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
&lt;a href=&quot;https://aws.amazon.com/step-functions/&quot; target=&quot;_blank&quot;&gt;Step Functions&lt;/a&gt;&lt;/h3&gt;
Think of this as a developers version of &lt;a href=&quot;https://ifttt.com/&quot; target=&quot;_blank&quot;&gt;IFTTT&lt;/a&gt; on steroids. If you&#39;re working with multi-step data processing, with conditional logic in the middle, you&#39;ll want this. Step functions give you a visual way to connect multiple Lambda functions together, based on events that come into your system. It&#39;ll be a great way to visually manage processing pipelines, and I can&#39;t wait to get started. Best of all, it&#39;ll be available for all today.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
&lt;a href=&quot;https://aws.amazon.com/lex/&quot; target=&quot;_blank&quot;&gt;Amazon Lex&lt;/a&gt;&lt;/h3&gt;
&lt;br /&gt;
It&#39;s &quot;What&#39;s inside &lt;a href=&quot;https://www.amazon.com/gp/product/B01E6AO69U/ref=as_li_tl?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=B01E6AO69U&amp;amp;linkCode=as2&amp;amp;tag=blogcoredumpe-20&amp;amp;linkId=f245195f0c405644000e8026fdd6b6f8&quot; target=&quot;_blank&quot;&gt;A&lt;b&gt;lex&lt;/b&gt;a&lt;/a&gt;&quot; get it?&lt;br /&gt;
&lt;br /&gt;
All joking aside, this is a huge step forward in conversational AI. Alexa is a great toy, but with the opening up of the underlying API for parsing text, and converting speech into text, as well as text back into speech, this could get interesting. I&#39;m already pondering over the many ways I could use this to improve search, and even automate some helpdesk style systems. Want an expert system built for you? This is the way to go.&lt;br /&gt;
&lt;center&gt;&lt;iframe frameborder=&quot;0&quot; marginheight=&quot;0&quot; marginwidth=&quot;0&quot; scrolling=&quot;no&quot; src=&quot;//ws-na.amazon-adsystem.com/widgets/q?ServiceVersion=20070822&amp;amp;OneJS=1&amp;amp;Operation=GetAdHtml&amp;amp;MarketPlace=US&amp;amp;source=ac&amp;amp;ref=qf_sp_asin_til&amp;amp;ad_type=product_link&amp;amp;tracking_id=blogcoredumpe-20&amp;amp;marketplace=amazon&amp;amp;region=US&amp;amp;placement=B01E6AO69U&amp;amp;asins=B01E6AO69U&amp;amp;linkId=9801851c3cbd8f0b600ebd7749202b02&amp;amp;show_border=false&amp;amp;link_opens_in_new_window=false&amp;amp;price_color=333333&amp;amp;title_color=0066c0&amp;amp;bg_color=ffffff&quot; style=&quot;height: 240px; width: 120px;&quot;&gt;
    &lt;/iframe&gt;&lt;/center&gt;

&lt;h3&gt;
&lt;a href=&quot;https://aws.amazon.com/xray/&quot; target=&quot;_blank&quot;&gt;AWS X-Ray&lt;/a&gt;&lt;/h3&gt;
Can anyone say &quot;bye bye newrelic&quot;? A better, and more detailed version of Application Performance Monitoring, with built in ways to help you automatically identify bottlenecks such as low performance on DDB tables due to needing to raise throughput. It seems focused on HTTP-based services, but we&#39;ll see once it fully comes out if it can handle any Lambda task, including integration with Step Functions. X-Ray may be the coolest developer tool released by AWS.&lt;br /&gt;
&lt;h3&gt;
&lt;a href=&quot;https://aws.amazon.com/greengrass/&quot; target=&quot;_blank&quot;&gt;Amazon Greengrass&lt;/a&gt;&lt;/h3&gt;
&lt;div&gt;
There&#39;s currently only one Greenglass hardware client, and it&#39;s from Amazon, the Snowball Edge. It&#39;ll be expensive to run that, but essentially the idea is that you&#39;re not locked into needing to use Amazon to develop for Lambda. This could have HUGE implications as it&#39;s essentially letting you run Lambda functions from any endpoint. Combine this with Lambda@Edge, which lets you run Lambda functions on CloudFront endpoints, and we&#39;re talking about a huge push forward in the serverless community.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
I&#39;m mostly looking forward to seeing how well this can help with Local development. Yes, there are OS tools like &quot;serverless-local&quot;, but this is an official AWS client, and could even be used to help with Hybrid cloud environments. Now Serverless computing doesn&#39;t necessarily mean serverless. Perhaps we should change this to &quot;Function-based&quot; computing.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
A slight side-note here is that Amazon is also updating their IoT button, with double the battery life. You can get the current generation essentially for free ($19.99 with a $20 amazon credit back to you).&lt;/div&gt;
&lt;br /&gt;
&lt;center&gt;
&lt;iframe frameborder=&quot;0&quot; marginheight=&quot;0&quot; marginwidth=&quot;0&quot; scrolling=&quot;no&quot; src=&quot;//ws-na.amazon-adsystem.com/widgets/q?ServiceVersion=20070822&amp;amp;OneJS=1&amp;amp;Operation=GetAdHtml&amp;amp;MarketPlace=US&amp;amp;source=ac&amp;amp;ref=qf_sp_asin_til&amp;amp;ad_type=product_link&amp;amp;tracking_id=blogcoredumpe-20&amp;amp;marketplace=amazon&amp;amp;region=US&amp;amp;placement=B01C7WE5WM&amp;amp;asins=B01C7WE5WM&amp;amp;linkId=7f179e7dc6e2ead2f9f78e455e6c191f&amp;amp;show_border=false&amp;amp;link_opens_in_new_window=false&amp;amp;price_color=333333&amp;amp;title_color=0066c0&amp;amp;bg_color=ffffff&quot; style=&quot;height: 240px; width: 120px;&quot;&gt;
    &lt;/iframe&gt;
&lt;/center&gt;

&lt;h3&gt;
&lt;a href=&quot;https://aws.amazon.com/batch/&quot; target=&quot;_blank&quot;&gt;AWS Batch&lt;/a&gt;&lt;/h3&gt;
A large percentage of operations that happen on AWS services are indeed &quot;Batch operations&quot;, not things that depend on user input, or even need to be done in real-time, but instead are long operations such as &quot;parse this content&quot;, or &quot;encode this video&quot;, or even &quot;notify anyone watching for this type of news story&quot;.&lt;br /&gt;
&lt;br /&gt;
These are Batch operations, and are best handled with SQS with job processors running on EC2, or ECS instances. Many companies have taken advantage of the AWS Spot Marketplace to buy cheaper instances that aren&#39;t being used by AWS, since their processing doesn&#39;t need to be real-time. This is where AWS Batch will come in handy, combining Spot Marketplace along with a quick-to-build pipeline and SQS automatically so jobs will get done based on how much you&#39;re willing to spend and how quickly it needs to be done. Is the best option to wait until instances drop to 1¢/hour and spin up 5,000 of them? If so, batch can handle that.&lt;br /&gt;
&lt;h3&gt;
What can you do now?&lt;/h3&gt;
&lt;br /&gt;
There&#39;s still a lot to be determined by a lot of these announcements, since most are still in preview, but if you want to get started right-away you can dive into &lt;a href=&quot;https://aws.amazon.com/step-functions/&quot; target=&quot;_blank&quot;&gt;Step Functions&lt;/a&gt;, &lt;a href=&quot;https://aws.amazon.com/athena/&quot; target=&quot;_blank&quot;&gt;Athena&lt;/a&gt;, &lt;a href=&quot;https://aws.amazon.com/polly/&quot; target=&quot;_blank&quot;&gt;Polly&lt;/a&gt;, and &lt;a href=&quot;https://aws.amazon.com/codebuild/&quot; target=&quot;_blank&quot;&gt;CodeBuild&lt;/a&gt; now.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.coredumped.org/feeds/857952729844015058/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/301169258518998120/857952729844015058' title='15 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/301169258518998120/posts/default/857952729844015058'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/301169258518998120/posts/default/857952729844015058'/><link rel='alternate' type='text/html' href='http://blog.coredumped.org/2016/12/5-announcements-from-reinvent-you-cant.html' title='5 Announcements from re:Invent you can&#39;t ignore'/><author><name>Chris</name><uri>http://www.blogger.com/profile/04068315333804202241</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>15</thr:total></entry><entry><id>tag:blogger.com,1999:blog-301169258518998120.post-7158183646161602741</id><published>2016-11-01T14:10:00.005-07:00</published><updated>2016-11-01T14:10:44.081-07:00</updated><title type='text'>First days with Ghost Inspector</title><content type='html'>A while ago we switched away from using &lt;a href=&quot;https://newrelic.com/&quot; target=&quot;_blank&quot;&gt;Newrelic APM&lt;/a&gt;, simply because it is way too expensive for the pricing points that we are use to in an AWS environment. It&#39;s fine to have a few cents overage on an AMI, but what about when you&#39;re trying to monitor Lambda functions, or have a bunch of micro-services?&lt;br /&gt;
&lt;br /&gt;
The APM piece we were able to replace pretty easily with &lt;a href=&quot;https://appenlight.rhodecode.com/&quot; target=&quot;_blank&quot;&gt;AppEnlight&lt;/a&gt;, and there&#39;s some additional help there with the addition of Logging and other analytics that we were able to pull in. However, one piece that I thought Newrelic did very well which I still missed was Browser-based end-to-end testing. This was called &lt;a href=&quot;https://newrelic.com/synthetics&quot; target=&quot;_blank&quot;&gt;Newrelic Synthentics&lt;/a&gt;, and unlike the rest of Newrelic, it was priced very reasonably.&lt;br /&gt;
&lt;br /&gt;
Unfortunately we&#39;d made the push to move away from Newrelic entirely, so I had to search for something else. This also gave me the advantage of not being confined to just what Newrelic could offer, so when I ran across a Promoted Tweet (Yes, those do occasionally work marketers!) for &lt;a href=&quot;https://ghostinspector.com/&quot; target=&quot;_blank&quot;&gt;Ghost Inspector&lt;/a&gt;, I decided to take a look. What I found initially amazed me, then made me slightly sad, but finally came around to amaze me again.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
The Chrome Recorder&lt;/h3&gt;
&lt;div&gt;
This is a great little tool that automatically builds a test just by you running commands in a chrome browser. You can even stop in the middle of a test and insert assertions. It&#39;s easy to use, and can be enabled to work in Incognito Mode (what I prefer when using Chrome since that starts a fresh session).&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
It was what brought me back to Ghost Inspector (after looking around I realized I had tried them out before but it was too cumbersome). The greatest part about it was that it recorded clicks, assignment of Input functions, and everything I was doing. It seemed like a great way to go!&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Then I took a look at the actual recorded events, the Chrome Recorder, and in fact all of Ghost Inspector, just uses CSS selectors to pick elements, do assertions, and generally make your tests. I quickly realized that many of the CSS selectors the Chrome Recorder was doing just wouldn&#39;t work; it was picking up on bootstrap classes instead of things like data-role attributes. Still, this was a good starting point so I could simply fix up the CSS selectors a bit and make them work for both production and development environments.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3&gt;
The Screen Comparison Tool&lt;/h3&gt;
&lt;div&gt;
Another pretty cool idea, Screenshot Comparison. You can even tell Ghost Inspector to include only specific areas, and exclude areas, all by CSS selector. Pretty neat if you&#39;re working with a mostly static layout, and would actually notify you of a deployment if you updated the layout of a given page. It&#39;s nice to be able to do, but for the most part it wasn&#39;t really what drew me to the tool. Still, it&#39;s nice to see both a final screenshot of each test run as well as a video, especially in the event of a failure.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3&gt;
Variables, and imported tests&lt;/h3&gt;
&lt;div&gt;
Ok, so by this point I was &quot;so-so&quot; about Ghost Inspector, and then I noticed the ability to import steps from other tests, and set custom variables. So there&#39;s not exactly a &quot;for each of these elements, do this&quot; type of option, however with a few quick shared tests, I was able to not only build a &quot;test template&quot; to handle login operations for tests that required it, but also create a &quot;template&quot; for a test to test a specific type of page, then set a variable and run that same test on dozens of pages that all needed to be checked.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Obviously tests like this are only needed to check against regressions, but when you do find a bug and you can make a test that fails, then build in the fix and watch it pass, it&#39;s something amazing.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3&gt;
My setup&lt;/h3&gt;
&lt;div&gt;
Ok, so down to the nitty-gritty here, I&#39;ve set up Ghost Inspector to have three separate &quot;Projects&quot; or test-suites. One Suite is actually never run, it&#39;s just called &quot;Shared&quot;. This includes all of the test snippets like Logging in, or testing one specific page part that&#39;s used in multiple other tests, and multiple times.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Another suite is called &quot;Development Tests&quot;, these are tests that are not scheduled to run automatically, but are designed to run one at a time, right before doing any deployment. They are time consuming, there are a lot of them, and they&#39;re basically advanced unit-tests. They point directly at our staging/development server and really hammer it with User and non-user based tests.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The last suite is called &quot;Production Hourly Tests&quot;, as the name implies, these tests run against production servers once every hour. Some of them test screenshot compliance, some just use assertions to make sure certain items are visible. These tests are usually shorter in nature and we try not to make them spam our servers.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3&gt;
A final note about Analytics&lt;/h3&gt;
&lt;div&gt;
One last thing, we needed to make sure our Analytics didn&#39;t get jacked up because of a test. We track how many users view any given story to see how popular it is, but we didn&#39;t want our repeated searches for the same thing to confuse that. Ghost Inspector doesn&#39;t (yet) let you pass in custom headers like the DNT header, but it does allow you to specify a User Agent. I set that to &quot;Ghost Inspector&quot; and check on that for each request. If it&#39;s set, I set on the backend the DNT flag, and make sure to exclude all analytics, from Intercom, Google Analytics, and our custom tracking. Not ideal to have this rely on a User Agent string, but so far it seems to be working.&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://blog.coredumped.org/feeds/7158183646161602741/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/301169258518998120/7158183646161602741' title='21 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/301169258518998120/posts/default/7158183646161602741'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/301169258518998120/posts/default/7158183646161602741'/><link rel='alternate' type='text/html' href='http://blog.coredumped.org/2016/11/first-days-with-ghost-inspector.html' title='First days with Ghost Inspector'/><author><name>Chris</name><uri>http://www.blogger.com/profile/04068315333804202241</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>21</thr:total></entry><entry><id>tag:blogger.com,1999:blog-301169258518998120.post-105319960766710602</id><published>2016-10-18T07:05:00.002-07:00</published><updated>2016-10-18T07:05:30.768-07:00</updated><title type='text'>Software is like Cake</title><content type='html'>Ok, stay with me here. Here&#39;s how Software is like Cake.&lt;br /&gt;
&lt;br /&gt;
You can buy a piece of cake anytime you&#39;re hungry for some (SaaS)&lt;br /&gt;
&lt;br /&gt;
You could buy a whole cake and bring it home and cut it yourself (Self hosted software)&lt;br /&gt;
&lt;br /&gt;
You could buy an undecorated cake and frost/decorate it yourself (PaaS)&lt;br /&gt;
&lt;br /&gt;
You could make, and decorate the cake from scratch (IaaS)&lt;br /&gt;
&lt;br /&gt;
Or, you could grind the flour yourself, get eggs from chicken, milk your own cows, etc (Self-managed Datacenter)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Which one sounds easier now?</content><link rel='replies' type='application/atom+xml' href='http://blog.coredumped.org/feeds/105319960766710602/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/301169258518998120/105319960766710602' title='19 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/301169258518998120/posts/default/105319960766710602'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/301169258518998120/posts/default/105319960766710602'/><link rel='alternate' type='text/html' href='http://blog.coredumped.org/2016/10/software-is-like-cake.html' title='Software is like Cake'/><author><name>Chris</name><uri>http://www.blogger.com/profile/04068315333804202241</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>19</thr:total></entry><entry><id>tag:blogger.com,1999:blog-301169258518998120.post-8004837360519037730</id><published>2016-10-13T17:52:00.002-07:00</published><updated>2016-10-13T17:52:28.356-07:00</updated><title type='text'>VMWare on AWS: What does it really mean?</title><content type='html'>Unless you&#39;re a huge follower of VMware already, you probably missed &lt;a href=&quot;https://aws.amazon.com/vmware/&quot; target=&quot;_blank&quot;&gt;the announcement today&lt;/a&gt;. I would have if it wasn&#39;t for my friend &lt;a href=&quot;http://www.techtarget.com/contributor/Trevor-Jones&quot; target=&quot;_blank&quot;&gt;Trevor&lt;/a&gt; at TechTarget. VMWare now integrates directly with AWS Cloud.&lt;br /&gt;
&lt;br /&gt;
Who cares, right? This is obviously VMWare&#39;s way of trying to stay relevant in a world where everyone is moving to Cloud Computing. They announced &lt;a href=&quot;https://www.ibm.com/cloud-computing/solutions/ibm-vmware/&quot; target=&quot;_blank&quot;&gt;something similar with IBM Cloud&lt;/a&gt; a while ago, but again that&#39;s just two Dinosaurs joining forces to try to stay relevant... right?&lt;br /&gt;
&lt;br /&gt;
They really buried the lede here, but there are actually two really cool features that make make even existing AWS Customers think about switching; Hot Migration between cloud providers (or local data centers event), and auto-scaling of underlying resources.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Auto-Scaling of underlying resources&lt;/h3&gt;
Even if you&#39;re an all-in developer for AWS technologies, there&#39;s one thing that VMWare&#39;s integration will add that is impossible to ignore: automatic scaling of underlying resources. While Docker on EC2 is a huge improvement for allowing developers to spin up containers, it doesn&#39;t automatically scale the underlying EC2 resources when there are more requests for tasks than the existing EC2 instances allow for. This is hopefully something Amazon is working on, but right now VMWare looks like it&#39;s beating AWS.&lt;br /&gt;
&lt;br /&gt;
When VMWare detects there is a server at maximum capacity, it will try to move around some VMs to less crowded instances, if none are available, it can be set to automatically launch a new one. This is pretty huge for managing underlying resources, and the way you can specify for instances to be purchased is also pretty big. It has built-in support for running either on-demand or reserved instances, and it&#39;ll automatically manage that for you, allowing you to pay using your existing VMWare account, or with an AWS account.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Hot Migration between cloud providers&lt;/h3&gt;
&lt;div&gt;
Cloud-interoperability may not be important for startups that are all-in already on AWS, but for any company with sufficient size, you&#39;ll start to realize pretty quickly that the best part about multiple cloud providers is the competitive pricing. If it becomes more effective to run some instances on IBM Cloud, it&#39;s easy to migrate services over while they&#39;re live with zero downtime. When things change and Amazon comes back to beat pricing decreases that IBM just put out, it&#39;s easy enough to migrate right back without any downtime at all.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
It&#39;s also possible to migrate services between regions without much effort. AWS has different pricing for different availability zones, so this may become an interesting use-case. Additionally, it looks like VMWare may be able to expand a single application to run across multiple Regions, however this is unconfirmed at this point.&lt;/div&gt;
&lt;div&gt;
&lt;h3&gt;
The Catch&lt;/h3&gt;
&lt;/div&gt;
&lt;div&gt;
VMWare is a beast, and it&#39;s not cheap. Getting started with VMWare isn&#39;t something many developers want to do, and it probably means a new dedicated Ops team just to manage it. There&#39;s staffing costs as actual licenses from VMWare to think about here, so unless you&#39;re at a pretty high scale, and absolutely need to have cloud interoperability, it&#39;s probably not something you&#39;re going to be working with.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Also, did we mention it&#39;s not quite ready yet? &lt;a href=&quot;http://www.vmware.com/cloud-services/vmware-cloud-aws.html&quot; target=&quot;_blank&quot;&gt;VMWare lists this&lt;/a&gt; as ready in the &quot;mid 2007 year&quot;. Even after it&#39;s publicly ready, I&#39;ll be waiting at least a year before I even think about trying it, to make sure all of the bugs are worked out first.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;h3&gt;
The Verdict&lt;/h3&gt;
&lt;/div&gt;
&lt;div&gt;
VMWare on AWS sounds like a good idea in theory, but like all theories, it will strongly depend on how it&#39;s implemented. I&#39;m actually more excited to see what AWS gets out of the partnership then actually using VMWare on AWS. I&#39;d like to see some of the advanced functionality that VMWare offers get ported back to AWS Native, such as Hot-Migration and auto-scaling of EC2 instances running containers. Either way, &amp;nbsp;it&#39;ll be late 2018 before I take another look.&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://blog.coredumped.org/feeds/8004837360519037730/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/301169258518998120/8004837360519037730' title='13 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/301169258518998120/posts/default/8004837360519037730'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/301169258518998120/posts/default/8004837360519037730'/><link rel='alternate' type='text/html' href='http://blog.coredumped.org/2016/10/vmware-on-aws-what-does-it-really-mean.html' title='VMWare on AWS: What does it really mean?'/><author><name>Chris</name><uri>http://www.blogger.com/profile/04068315333804202241</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-301169258518998120.post-3394541858490988123</id><published>2016-09-29T09:34:00.004-07:00</published><updated>2016-09-29T09:34:44.147-07:00</updated><title type='text'>Setting up Docker on EC2</title><content type='html'>After piecing &lt;a href=&quot;http://www.n2ws.com/how-to-guides/how-to-create-an-lvm-volume-on-aws.html&quot; target=&quot;_blank&quot;&gt;together&lt;/a&gt; &lt;a href=&quot;http://www.projectatomic.io/blog/2015/06/notes-on-fedora-centos-and-docker-storage-drivers/&quot; target=&quot;_blank&quot;&gt;several&lt;/a&gt; &lt;a href=&quot;http://www.projectatomic.io/docs/docker-storage-recommendation/&quot; target=&quot;_blank&quot;&gt;different&lt;/a&gt; &lt;a href=&quot;https://docs.docker.com/engine/userguide/storagedriver/device-mapper-driver/&quot; target=&quot;_blank&quot;&gt;sources&lt;/a&gt;, I finally found out how to properly configure docker storage to NOT use a loopback device on EC2. Without going through too much boring details about why this is a good idea to configure a different storage solution, here&#39;s the real solution: you need to use the &quot;docker-storage-setup&quot; command, which is installable through yum:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;yum install docker docker-storage-setup&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
You also need a second EBS volume attached to the EC2 instance. You can easily create one through the AWS Console, I attached mine to /dev/sdf.&lt;br /&gt;
&lt;br /&gt;
Next, create the LVM setup:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;pvcreate /dev/sdf&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;lvcreate docker /dev/sdf&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Next, setting things up, change &lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/etc/sysconfig/docker-storage-setup&lt;/span&gt;:&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;DEVS=&quot;/dev/sdf&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;VG=&quot;docker&quot;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Next, make sure docker is stopped, and remove /var/lib/docker:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;service docker stop&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;rm -rf /var/lib/docker&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Finally, run &lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;docker-storage-setup&lt;/span&gt; and restart. I actually found I had to restart a few times using &quot;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;shutdown -r now&lt;/span&gt;&quot; just to make sure docker was going to come back up correctly on a fresh start. Theoretically though, you&#39;d just have to do &quot;service docker restart&quot;.&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.coredumped.org/feeds/3394541858490988123/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/301169258518998120/3394541858490988123' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/301169258518998120/posts/default/3394541858490988123'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/301169258518998120/posts/default/3394541858490988123'/><link rel='alternate' type='text/html' href='http://blog.coredumped.org/2016/09/setting-up-docker-on-ec2.html' title='Setting up Docker on EC2'/><author><name>Chris</name><uri>http://www.blogger.com/profile/04068315333804202241</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-301169258518998120.post-4674683016285236204</id><published>2016-09-29T09:28:00.002-07:00</published><updated>2016-09-29T09:28:09.479-07:00</updated><title type='text'>Turn Off The Lights</title><content type='html'>After upgrading to macOS Sierra, and having Apex fail to work locally anymore, I decided it was time to build a dev instance, on EBS within EC2. I found a good idea from CloudSSH, but I really wanted to allow my instance to run docker commands while I was away. I decided to add the &quot;--no-stop&quot; flag to CloudSSH and just handle terminating the instances myself using a cronscript.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here&#39;s the script:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;#!/bin/sh&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;# Don&#39;t even bother checking if we haven&#39;t been up for more than&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;# 3500 seconds (just under 1 hour)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;UPTIME=`cat /proc/uptime|awk &#39;{printf &quot;%i&quot;, $1}&#39;`&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;if [ &quot;$UPTIME&quot; -gt &quot;3500&quot; ]&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;then&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;&lt;/span&gt;&amp;nbsp; if [ -z &quot;$(who)&quot; ]&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;&lt;/span&gt;&amp;nbsp; then&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;&lt;/span&gt;&amp;nbsp; &amp;nbsp; if [ -z &quot;$(docker ps -q)&quot; ]&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;&lt;/span&gt;&amp;nbsp; &amp;nbsp; then&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; shutdown -P now&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;&lt;/span&gt;&amp;nbsp; &amp;nbsp; fi&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;&lt;/span&gt;&amp;nbsp; fi&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;fi&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;And here&#39;s the &lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;/etc/cron.d/turn-off-the-lights&lt;/span&gt; file:&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;







&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;*/5 * * * * root /usr/local/bin/turn-off-the-lights&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;I also set up a nice little bash function to handle automatically configuring most of the common things I did for CloudSSH. I did this instead of an alias because I have multiple AWS profiles that I connect to:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;# Connect to a &quot;Cloud Environment&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;span class=&quot;s2&quot;&gt;typeset&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt; -A CLOUD_INSTANCE_ID&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;CLOUD_INSTANCE_ID+=(aci i-MY-DEV-INSTANCE)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;CLOUD_INSTANCE_ID+=(newstex i-OTHER-DEV-INSTANCE)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;cloud(){&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;span class=&quot;s4&quot;&gt;&amp;nbsp; export&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt; AWS_REGION=us-east-1&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;span class=&quot;s4&quot;&gt;&amp;nbsp; export&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt; AWS_PROFILE=&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;$1&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;span class=&quot;s3&quot;&gt;&amp;nbsp; $HOME&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;/bin/cloudssh --no-stop ec2-user@&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;${CLOUD_INSTANCE_ID[$1]}&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;.us-east-1 -- -i ~/.ssh/$1-cmoyer.pem -o HostKeyAlias=&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;${CLOUD_INSTANCE_ID[$1]}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;cloud_profiles=(aci newstex)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;

















&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;span class=&quot;s4&quot;&gt;compctl&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt; -k cloud_profiles cloud&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;span class=&quot;s1&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;span class=&quot;s1&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;Now I can just type &quot;&lt;/span&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;cloud aci&lt;/span&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&quot; and automatically get logged into my ACI dev instance. Note that using &quot;&lt;/span&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;HostKeyAlias&lt;/span&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&quot; allows me to not have to re-verify the host key every time the IP address changes.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://blog.coredumped.org/feeds/4674683016285236204/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/301169258518998120/4674683016285236204' title='21 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/301169258518998120/posts/default/4674683016285236204'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/301169258518998120/posts/default/4674683016285236204'/><link rel='alternate' type='text/html' href='http://blog.coredumped.org/2016/09/turn-off-lights.html' title='Turn Off The Lights'/><author><name>Chris</name><uri>http://www.blogger.com/profile/04068315333804202241</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>21</thr:total></entry><entry><id>tag:blogger.com,1999:blog-301169258518998120.post-5903907640541045539</id><published>2016-09-21T07:01:00.003-07:00</published><updated>2016-09-21T07:01:28.609-07:00</updated><title type='text'>AWS IAM Diagnostics, figuring out what role your script is using</title><content type='html'>I just spent the last hour of my day trying to figure out why my script was saying I didn&#39;t have access to a particular resource from within my Docker image. I granted access to the IAM Role for my Docker instance (or so I thought) but it still said it had no access to write to a particular bucket. The request seemed like it was saying there was credentials set, but it wasn&#39;t indicating what role the request was made by.&lt;br /&gt;
&lt;br /&gt;
At one point, the AWS-SDK for Node.js would print out a very useful message like &quot;User arn:..... is not allowed to perform action s3:putObject on resource arn:....&quot;&lt;br /&gt;
&lt;br /&gt;
Now, however, it simply told me:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;{ [AccessDenied: Access Denied]&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; message: &#39;Access Denied&#39;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; code: &#39;AccessDenied&#39;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; region: null,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; time: Wed Sep 21 2016 13:51:55 GMT+0000 (UTC),&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; requestId: &#39;REQUEST ID&#39;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; extendedRequestId: &#39;LONG_REQUEST_ID&#39;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; cfId: undefined,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; statusCode: 403,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; retryable: false,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;retryDelay: 13.531139446422458 }&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;That&#39;s great, I know the error is Access Denied, and I know it&#39;s not a retryable error, but what did it try to do, and who tried to do it?&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
After stumbling around for awhile, I finally found this:&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;







&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;curl http://169.254.169.254/latest/meta-data/iam/info/&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;Which told me the IAM role that scripts were assuming in my current EC2/Docker environment:&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &quot;Code&quot; : &quot;Success&quot;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &quot;LastUpdated&quot; : &quot;2016-09-21T13:53:02Z&quot;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &quot;InstanceProfileArn&quot; : &quot;arn:aws:iam::ACCOUNT-ID:instance-profile/acindex&quot;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &quot;InstanceProfileId&quot; : &quot;INSTANCE_PROFILE_ID&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;












&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
Not the role I thought it was running as....&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
Add the permissions to that ARN, and we&#39;re set.&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://blog.coredumped.org/feeds/5903907640541045539/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/301169258518998120/5903907640541045539' title='16 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/301169258518998120/posts/default/5903907640541045539'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/301169258518998120/posts/default/5903907640541045539'/><link rel='alternate' type='text/html' href='http://blog.coredumped.org/2016/09/aws-iam-diagnostics-figuring-out-what.html' title='AWS IAM Diagnostics, figuring out what role your script is using'/><author><name>Chris</name><uri>http://www.blogger.com/profile/04068315333804202241</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>16</thr:total></entry><entry><id>tag:blogger.com,1999:blog-301169258518998120.post-7520704394843174878</id><published>2016-08-30T06:15:00.004-07:00</published><updated>2016-08-30T06:15:53.473-07:00</updated><title type='text'>Converting an old Mac Pro into a lockable cabinet.</title><content type='html'>&lt;div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjEzCuWrZilaxsasbKfvYrPiON5anwFirTicsUYPQ8BNWbvZ2OWWIQwbwb1flToTbQ6WwnF3dVoMjJiLmODzPB8sFn9g1s1zbOZcKXLcd6YUxoXm0OQi2ZYJ9C6J-Si4crrWhb0Q_enNo/s640/blogger-image--614446554.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjEzCuWrZilaxsasbKfvYrPiON5anwFirTicsUYPQ8BNWbvZ2OWWIQwbwb1flToTbQ6WwnF3dVoMjJiLmODzPB8sFn9g1s1zbOZcKXLcd6YUxoXm0OQi2ZYJ9C6J-Si4crrWhb0Q_enNo/s640/blogger-image--614446554.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
As we were cleaning out our basement, my wife pointed to my old Mac Pro and said &quot;What are you going to do with that?&quot;&lt;br /&gt;
&lt;br /&gt;
Of course it brought back some great memories of when I first got it, It was my first Mac computer. Before then I was just running Linux and BSD on my desktops, but this was Unix with a nice UI over it. I loved my old Mac, but at this point it was little more than a paperweight. I had upgraded it to have 4 big drives in it, added extra ram, but it was still 20 years old. It would never run anything modern and it certainly couldn&#39;t be upgraded to the new MacOS.&lt;br /&gt;
&lt;br /&gt;
After doing a little digging, I saw plenty of posts of people using an old Mac Pro as a coffee table, or end-table, but mostly just using two of them to old up a piece of wood. That wasn&#39;t enough for me, so I decided to try to turn it into a cabinet, which can be locked using a simple padlock if you wanted to.&lt;br /&gt;
&lt;br /&gt;
The first step is pulling out all of the components. I didn&#39;t want to destroy the actual shell, so I took a methodical approach to pulling out all of the components.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The first step was pulling off the cover and removing everything that would just slide out. Graphics cards, Ram cards, and Hard Drives.&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEix_mgBhyphenhyphennZE02fnKia8ZdBmKonIKLhLWVyeOFsD3bcLCoivVAlIi6Ptc9V3eqsTiCZ1VuAf9tHWNU4BFvi1_kYQkKTwxKntGpCU0Wq9auN-f38BE4MgH2fuLs7xFYePs43UOAqYZmce5o/s1600/IMG_0380.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEix_mgBhyphenhyphennZE02fnKia8ZdBmKonIKLhLWVyeOFsD3bcLCoivVAlIi6Ptc9V3eqsTiCZ1VuAf9tHWNU4BFvi1_kYQkKTwxKntGpCU0Wq9auN-f38BE4MgH2fuLs7xFYePs43UOAqYZmce5o/s320/IMG_0380.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Remove the ram cards by holding the Circles and pulling&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7NhMpBkc5y7o80zlRFQO4k-lihkkBk5uypjhjky6YYv6OR8xUSnCmal84KJ5KllYCraibo7-fI1szoraSNp5_ESJODT18q0ZXl91cRJOcDG5m3ufxEyyiuEsCEgOlZzvGXn-dBZruJJY/s1600/IMG_0383.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7NhMpBkc5y7o80zlRFQO4k-lihkkBk5uypjhjky6YYv6OR8xUSnCmal84KJ5KllYCraibo7-fI1szoraSNp5_ESJODT18q0ZXl91cRJOcDG5m3ufxEyyiuEsCEgOlZzvGXn-dBZruJJY/s320/IMG_0383.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Hard drives come out easily by just pulling on the housing&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
The next step was removing the large back fan section. This metal piece just comes right out when you pull on it, it appears to be attached with magnets:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhPrhEODoesgvstMtsd4s1S-3LkcGKQUxtcNc18o6ppWq4MJLJAphgfGVZ745PVNWzwsIwd-ZU6BbaBByRlhlBquroSuzxg4j7dzQlhnkoWNNzpLgvKTD4ZWZJK-CnuRD4dO2YmN27fEg/s1600/IMG_0378.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhPrhEODoesgvstMtsd4s1S-3LkcGKQUxtcNc18o6ppWq4MJLJAphgfGVZ745PVNWzwsIwd-ZU6BbaBByRlhlBquroSuzxg4j7dzQlhnkoWNNzpLgvKTD4ZWZJK-CnuRD4dO2YmN27fEg/s320/IMG_0378.jpg&quot; width=&quot;240&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
Once that part is out, you can see a few exposed screws, remove these and you&#39;re clear to lift out the back fan housing. The first is up by where you took out the hard drive:&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgeAFbJ8WOxtM5XbPZQkn-DwBvJTRCi7QEDDXhfJB3GNGWJ3qPooIEpu0SIS9K5mLNI8ARR7Mnuu335AHesC1E4D8TeACXAUq_Uq_akVRvPyF3JpQwD3A4U4KnQ9fBViBw-37gLqRk6D7A/s1600/IMG_0384.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgeAFbJ8WOxtM5XbPZQkn-DwBvJTRCi7QEDDXhfJB3GNGWJ3qPooIEpu0SIS9K5mLNI8ARR7Mnuu335AHesC1E4D8TeACXAUq_Uq_akVRvPyF3JpQwD3A4U4KnQ9fBViBw-37gLqRk6D7A/s320/IMG_0384.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;First screw by hard drive bay 1&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
Next there is one by where the metal plate came off:&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifs_-LoogvMXYYx5kjcOLhHpRRJj8RvdBl_HRi4bcazr9hMnEL4jrY4RbyGVosPL39uPnAQQ0dX-LX8nqUjS6bMzlK7c-_-7kpTAD8zqa6IV6qLHkRPqrjo73y_1fyUDd31nUv-wjBCgQ/s1600/IMG_0385.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifs_-LoogvMXYYx5kjcOLhHpRRJj8RvdBl_HRi4bcazr9hMnEL4jrY4RbyGVosPL39uPnAQQ0dX-LX8nqUjS6bMzlK7c-_-7kpTAD8zqa6IV6qLHkRPqrjo73y_1fyUDd31nUv-wjBCgQ/s320/IMG_0385.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
That should be it, you can now lift out the back fan housing unit:&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsdx4GQmONC5ddYO9IRks6ByGQ5VlHmfRAg71xh0uEOIjgo8pnaC9jwrUolA2iKXDfwo6u8rZmTMQR2YhOZspqmzjSn8aSqDXnRHr1CMUcA7yQOD8a0ln1y8O6JA5d5msHT8yLGOd2TuY/s1600/IMG_0387.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsdx4GQmONC5ddYO9IRks6ByGQ5VlHmfRAg71xh0uEOIjgo8pnaC9jwrUolA2iKXDfwo6u8rZmTMQR2YhOZspqmzjSn8aSqDXnRHr1CMUcA7yQOD8a0ln1y8O6JA5d5msHT8yLGOd2TuY/s320/IMG_0387.jpg&quot; width=&quot;240&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Pull the back housing unit off&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
Next, disconnect any cables you see. There&#39;s a lot of them:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi75ISJ64WXeGBzmyT0j54Kr3Se2F7nRqOJzNL3OfvDPil3UZZZT2h1lbqfIF-XIY-hKfLOIsh-YBH2lxVv889balyoxuoE-4O8zFD9EyF0DaAl-8ACHM4qw8P0Rq3OMG7JfAD5gxX7Cfk/s1600/IMG_0389.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi75ISJ64WXeGBzmyT0j54Kr3Se2F7nRqOJzNL3OfvDPil3UZZZT2h1lbqfIF-XIY-hKfLOIsh-YBH2lxVv889balyoxuoE-4O8zFD9EyF0DaAl-8ACHM4qw8P0Rq3OMG7JfAD5gxX7Cfk/s320/IMG_0389.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Next step, back to where we pulled out the RAM Cards, it&#39;s time to take out this beast. There are four screws on the bottom of the unit, and two tiny screws at the top. As a warning, one of my tiny screws was stripped, so I had to dremel it out.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMa6qMm-Wdwc_CSWKU6uOOD3DBg7qfOXmpu1LFROGZsRAxb19e6vv9gh1CfCZPLGnUqldI5Bgym4JW4vp5ZwC_4lp6dF7owumpI-khOxpfDBQnhcQXZvs3BDCD1Eh8MYf1mKWqjusE2EQ/s1600/IMG_0377.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMa6qMm-Wdwc_CSWKU6uOOD3DBg7qfOXmpu1LFROGZsRAxb19e6vv9gh1CfCZPLGnUqldI5Bgym4JW4vp5ZwC_4lp6dF7owumpI-khOxpfDBQnhcQXZvs3BDCD1Eh8MYf1mKWqjusE2EQ/s320/IMG_0377.jpg&quot; width=&quot;240&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirzSCXeaaN3BTvdW1T1MLyeGlCRlOD34E9na_qqJ8KPZLN8D2UTbTzD-PtSwB6F84FACqKbcSxoLbdEAu6e5LyQ6QR8DhXgiVqP42YIcFbgaxd6g1YvVfXiqRF9txqmvhQPbEFZCUF0zQ/s1600/IMG_0381.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirzSCXeaaN3BTvdW1T1MLyeGlCRlOD34E9na_qqJ8KPZLN8D2UTbTzD-PtSwB6F84FACqKbcSxoLbdEAu6e5LyQ6QR8DhXgiVqP42YIcFbgaxd6g1YvVfXiqRF9txqmvhQPbEFZCUF0zQ/s320/IMG_0381.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;This screw was completely stripped. I had to dremel it out.&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
Next, it&#39;s time to remove the heat-sinks over the CPUs. Up until this point I was able to avoid breaking things, but after this step there is absolutely no way back. The easiest way to get the vents off is to break the one heat sink off, by rocking it back and forth until the metal snaps off:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsw9pP5zWh1jlMvoNGY8798NTbImoFTGCU7RDPDi_t09KuP3jgLlVx8enSsZ0xnPRY7gHTVoQfUdUqeshexil1PUfispGG0B60adPMGnk7ddiylEY_cvdNoPup8q1RuvDwLr83VUeN0p8/s1600/IMG_0398.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsw9pP5zWh1jlMvoNGY8798NTbImoFTGCU7RDPDi_t09KuP3jgLlVx8enSsZ0xnPRY7gHTVoQfUdUqeshexil1PUfispGG0B60adPMGnk7ddiylEY_cvdNoPup8q1RuvDwLr83VUeN0p8/s320/IMG_0398.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVED9KQBZAnkd7BX-j9FNVMvYSrltrZvKxKSwxgsBSDmJLswFK4XzOxy6VPGp4C2ldBxXJ4Q1v7-nUijD1NQmpNSaaeRS8125VIe1ryZE4lhj8-O6gR3OnW8Yl5taXQE34krwSzhhiKSM/s1600/IMG_0399.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVED9KQBZAnkd7BX-j9FNVMvYSrltrZvKxKSwxgsBSDmJLswFK4XzOxy6VPGp4C2ldBxXJ4Q1v7-nUijD1NQmpNSaaeRS8125VIe1ryZE4lhj8-O6gR3OnW8Yl5taXQE34krwSzhhiKSM/s320/IMG_0399.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;The metal heat-sink, bent down.&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
Once it snaps off, you&#39;ll see the 8 or so allen screws that you need to remove to pull off the heat sinks. These are spring-loaded, so once you get them mostly loosened you can hand unscrew them.&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9f-5ESWqr2S3vaGWe_e9RUgOTO272KCGolRWSE4_rNlw4jiNP8FCZdjOMuwm3CiqUmOQ0EVM0wRWDW3hFXVhtad82uiCnvzVUeuTRZNljFURnjmKLwbnfHrQ2jXRH-GY_0dI8-sbbWgw/s1600/IMG_0400.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9f-5ESWqr2S3vaGWe_e9RUgOTO272KCGolRWSE4_rNlw4jiNP8FCZdjOMuwm3CiqUmOQ0EVM0wRWDW3hFXVhtad82uiCnvzVUeuTRZNljFURnjmKLwbnfHrQ2jXRH-GY_0dI8-sbbWgw/s320/IMG_0400.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;One heat sink out.&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&amp;nbsp;There&#39;s also a small plastic cover to the side of the heat sinks where you pulled out the back fan unit. It has three small screws in it, remove those and pull it out. Yank out all the cables this exposes.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiftZGhmC1OM6Zm9MfSVXK17kHD24JugEMji2jR-l9bzv4pf3h81cFfuaiS5XHc3HX0SL5FhPsldUDLQmfEcLjRDDjy1ihohql5gvdO7vwQCzvMc6r1uLkhUC0adNy_60BjP5_x41FjaP8/s1600/IMG_0401.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiftZGhmC1OM6Zm9MfSVXK17kHD24JugEMji2jR-l9bzv4pf3h81cFfuaiS5XHc3HX0SL5FhPsldUDLQmfEcLjRDDjy1ihohql5gvdO7vwQCzvMc6r1uLkhUC0adNy_60BjP5_x41FjaP8/s320/IMG_0401.jpg&quot; width=&quot;240&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
On the other side is another heatsink, where we broke off the metal part, it has a few allen key screws, Remove them and you can pull off this heatsink as well.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiftnMHtMHfOXC0lQ3vDYvF9J-w5Q3b5qteBAlAGp85CSzjgg4TVBV_43zjnqxmOAxIAlesJU6zT-1FsUH1ni2KQUrgDRBnAD3jI8Ih-Zl9UDm9_eclA1ofmvT13Ng-c078lxvbFc1Z4CM/s1600/IMG_0402.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiftnMHtMHfOXC0lQ3vDYvF9J-w5Q3b5qteBAlAGp85CSzjgg4TVBV_43zjnqxmOAxIAlesJU6zT-1FsUH1ni2KQUrgDRBnAD3jI8Ih-Zl9UDm9_eclA1ofmvT13Ng-c078lxvbFc1Z4CM/s320/IMG_0402.jpg&quot; width=&quot;240&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Next up, remove the motherboard screws. There&#39;s tons of them. There&#39;s also a side logic board where the power button and USB slots are on the front of the case. Be careful here if you wish to preserve the iconic apple power button, there&#39;s a small cable connecting it to the logic board you should remove before yanking out the logic board. There&#39;s also some screws connecting the ports where the hard-drives slide in. Unscrew those and start yanking out cables. I had to remove some black tape around the cables at the bottom of the case to pull them out of the cable-management system at the bottom.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;After a lot of pulling, cutting, twisting, bending, and swearing, I ended up with something like this:&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwVaoIxuNlkCO4M6jo9qIQ3OgTeY3_GnV0N8zs6erf12VcdGdKSuN6YnHV-bQK0MEXxvQxD8nIn6w2aRorRfoYUkzPZyxGMgs5f1lFUsCgB9LxmwJGNY3MynTtNLN8-Bmd3f1PayVUzqw/s1600/IMG_0405.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwVaoIxuNlkCO4M6jo9qIQ3OgTeY3_GnV0N8zs6erf12VcdGdKSuN6YnHV-bQK0MEXxvQxD8nIn6w2aRorRfoYUkzPZyxGMgs5f1lFUsCgB9LxmwJGNY3MynTtNLN8-Bmd3f1PayVUzqw/s400/IMG_0405.jpg&quot; width=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;The empty shell of my Mac Pro&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
Note that I wasn&#39;t able to fully pull out the top enclosures. I still haven&#39;t figured out how to remove the power supply, and I ended up breaking the housing for the CD drive because I couldn&#39;t quite figure out how to cleanly remove it. I don&#39;t recommend breaking that part off though because if you don&#39;t do it right the closing mechanism for the door may end up breaking.&lt;br /&gt;
&lt;br /&gt;
In any event, once the guts are all cleaned out, you can add shelving if you want, or just leave it as is and you&#39;ve got a nice empty cabinet that can easily be closed. I&#39;ve been thinking about running some LED light strips inside through the open PCI slots.</content><link rel='replies' type='application/atom+xml' href='http://blog.coredumped.org/feeds/7520704394843174878/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/301169258518998120/7520704394843174878' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/301169258518998120/posts/default/7520704394843174878'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/301169258518998120/posts/default/7520704394843174878'/><link rel='alternate' type='text/html' href='http://blog.coredumped.org/2016/08/converting-old-mac-pro-into-lockable.html' title='Converting an old Mac Pro into a lockable cabinet.'/><author><name>Chris</name><uri>http://www.blogger.com/profile/04068315333804202241</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjEzCuWrZilaxsasbKfvYrPiON5anwFirTicsUYPQ8BNWbvZ2OWWIQwbwb1flToTbQ6WwnF3dVoMjJiLmODzPB8sFn9g1s1zbOZcKXLcd6YUxoXm0OQi2ZYJ9C6J-Si4crrWhb0Q_enNo/s72-c/blogger-image--614446554.jpg" height="72" width="72"/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-301169258518998120.post-6073303368660607746</id><published>2016-07-29T06:48:00.000-07:00</published><updated>2016-07-29T06:48:44.297-07:00</updated><title type='text'>History shows this year America will elect a Republican</title><content type='html'>In US History, only &lt;b&gt;twice&lt;/b&gt;&amp;nbsp;have democrats been re-elected back into office with the exception of a VP taking over after the current president&#39;s death. Republicans have done it only &lt;b&gt;six&lt;/b&gt;&amp;nbsp;times. Typically, the only way for a party to maintain control through more than one president is if their VP takes over. So, if the Democrats really wanted to keep control over the White House, they probably should have nominated Joe Biden.
&lt;br /&gt;
&lt;a href=&quot;https://infograph.venngage.com/p/130567/political-parties-in-charge&quot;&gt;
&lt;/a&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://infograph.venngage.com/p/130567/political-parties-in-charge&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzRHY8zid4dErsBYqku0SxRe06VThDq9p7EL48kH_qijdNsAmDQ4yWjqRA8vNtGOBFYcZ4WmLfxO11lT0-eGgDZsUlhcIv4b26RIpq4ZtUuefsBrSmuXNVj6zX-5dUXyVSz5gCWnl_DwI/s640/Screen+Shot+2016-07-29+at+9.46.47+AM.png&quot; width=&quot;428&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://blog.coredumped.org/feeds/6073303368660607746/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/301169258518998120/6073303368660607746' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/301169258518998120/posts/default/6073303368660607746'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/301169258518998120/posts/default/6073303368660607746'/><link rel='alternate' type='text/html' href='http://blog.coredumped.org/2016/07/history-shows-this-year-america-will.html' title='History shows this year America will elect a Republican'/><author><name>Chris</name><uri>http://www.blogger.com/profile/04068315333804202241</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzRHY8zid4dErsBYqku0SxRe06VThDq9p7EL48kH_qijdNsAmDQ4yWjqRA8vNtGOBFYcZ4WmLfxO11lT0-eGgDZsUlhcIv4b26RIpq4ZtUuefsBrSmuXNVj6zX-5dUXyVSz5gCWnl_DwI/s72-c/Screen+Shot+2016-07-29+at+9.46.47+AM.png" height="72" width="72"/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-301169258518998120.post-3094860574070607686</id><published>2016-06-09T10:49:00.000-07:00</published><updated>2016-06-09T10:49:54.112-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="academia"/><category scheme="http://www.blogger.com/atom/ns#" term="academics"/><category scheme="http://www.blogger.com/atom/ns#" term="aci"/><category scheme="http://www.blogger.com/atom/ns#" term="blogging"/><category scheme="http://www.blogger.com/atom/ns#" term="google"/><category scheme="http://www.blogger.com/atom/ns#" term="google scholar"/><category scheme="http://www.blogger.com/atom/ns#" term="research"/><category scheme="http://www.blogger.com/atom/ns#" term="scholar"/><title type='text'>5 Reasons you shouldn’t use Google for your scholarly research</title><content type='html'>&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
Google is the first place most people go to for answers - and it’s probably how you found this article. Unfortunately Google has a lot of problems when doing &lt;i&gt;academic research&lt;/i&gt;; almost everything on the internet can be included in it. This is great when you want to look up something like “how late is home depot open”, but not so great when you’re looking for detailed articles for your new research paper on &lt;a href=&quot;http://scholar.aci.info/view/14650deba575c0c0128/151ff692a1300130006&quot;&gt;Genome Sequencing&lt;/a&gt;.
&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h2 style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
&lt;span style=&quot;font-size: 24px;&quot;&gt;&lt;b&gt;1: Search Engines don’t vet content&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
Anyone with internet access can blog. They don’t even need a credit card, nor do they need to provide their real name. Typically with just an email address (which is also free and doesn’t require any verification), a blogger can get up and running in a few minutes.
&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
The biggest problem with doing a search in Google (or any other standard search engine), is that you have no idea who wrote the content, or if it can be trusted. Traditionally, this role has been filled by Academic Journals, which vet the author, the research, and then publish to audiences.
&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
The problem with Journals is they are expensive - if you don’t belong to a library that pays thousands of dollars per year for that specific journal, you won’t have access. Additionally, publishing to a journal costs money and takes a long time; it’s both a burden getting content in, and getting content out.
&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
Fortunately, as technology advances, there’s been newer and better ways to publish content. The most popular new way to publish content online is through Blogging. Google picks up many blogs and anyone can access those blogs for free (for most blogs), but now we’re back to “who wrote this, can I trust it”.
&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
This is where the &lt;a href=&quot;http://scholar.aci.info/&quot; target=&quot;_blank&quot;&gt;ACI Scholarly Blog Index&lt;/a&gt; comes in. Not only do we vet every blog we bring into our system, we also profile authors and provide auxiliary information about who wrote the article right with each source:
&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidJdQl_iL1erpMgW8EnyqQ5YbTUxtllxAqqkVavBkWagi4trv7AcVxjM9askinaLvI3TXh5ZvW7iCfJK3CG08btcRNIfetJQWqIWWzoTt1cqm1gs0BVyjh_X2Hc4iNcDL7n2OXRQTm3k0/s1600/Screen+Shot+2016-06-09+at+1.17.20+PM.png&quot; imageanchor=&quot;1&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;501&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidJdQl_iL1erpMgW8EnyqQ5YbTUxtllxAqqkVavBkWagi4trv7AcVxjM9askinaLvI3TXh5ZvW7iCfJK3CG08btcRNIfetJQWqIWWzoTt1cqm1gs0BVyjh_X2Hc4iNcDL7n2OXRQTm3k0/s640/Screen+Shot+2016-06-09+at+1.17.20+PM.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
In this example, you can see not only the full-text of the story, but also who published it, what categories that publisher is authoritative in (LC Class), when it was published, and some information about the publisher. You also get a full profile of who wrote it (Brian Wang), who he wrote it for (Next Big Future), and social media and credentials for both the author and the organization he works for.
&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h2 style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
&lt;span style=&quot;font-size: 24px;&quot;&gt;&lt;b&gt;2: Blogs come and go&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-size: 24px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
Want to bookmark this story to keep it for later, or view it on the go? ACI offers “Bookmarks” as well as custom “Lists”, which let you add stories into organizational categories so you can more easily make notes of what your paper should include, as well as make citations easier.
&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
I know what you’re thinking “every browser already comes with a bookmark button”. Yes, this is true, however when bookmarking a blog in your browser, you have to go back to that blog again to get the full-text source. Yes, this is OK if the blog stays at the same location, or online in general, but what about blogs that change their URL pattern, or go away entirely?
&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
ACI has thousands of publications, and hundreds of them have either changed URL schemes, moved, or just completely gone away. Forgot to pay your hosting provider? Surprise, everyone trying to access that blog post is now presented with a page saying you’re no longer around. There is no quicker way to guarantee a failed grade then putting in citations to sources that no longer exist. How can you verify sources if the average blog site only lives for a few years?
&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
For added security, ACI also backs up all content to Portico - an approved academic solution to preserve access for libraries should anything happen to ACI.
&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
&lt;h2&gt;
&lt;span style=&quot;font-size: 24px;&quot;&gt;&lt;b&gt;3: Community Activity&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-size: 24px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
ACI also provides a general “Community Activity” score around the article which helps tell you how popular this article is within the academic community. This allows researchers to find the most actively engaged content and focus just on topics that are of interest at the time. ACI derives this score as a value from 0-99, where 0 is the least popular, and 99 is the most popular. Community activity also rolls into Authors, so it’s easy to identify the most popular authors within the academic community, for a given subject area.
&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
Where this can become really useful is when sorting, and filtering by year. It can become quickly evident what the most popular topics are for a given LC Class, and it’s easy to identify “hot topics” and the best performing stories in your field. This allows researchers to craft blogs in similar styles to make sure they get the most traction.
&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h2 style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
&lt;span style=&quot;font-size: 24px;&quot;&gt;&lt;b&gt;4: Advanced Faceting&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-size: 24px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
You know when you’re shopping on Amazon and you type in “mouse” and it comes up with mouse traps, instead of that new peripheral device you want to buy for your computer? Then you see on the left side an option to filter just to electronics, so you click on that, sort by price, and even filter down to just the items available on Prime, and boom, you have exactly what you were looking for.
&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
This advanced filtering is called “Faceting”, and is also available in ACI. ACI allows you to filter by category, author positions, what school an author graduated from, what degree the author achieved, and even how many comments are available on the story. Looking to find out the most popular story for &lt;a href=&quot;http://scholar.aci.info/#?q=Cancer%20Research&amp;amp;lc_class=R&amp;amp;date=2015-01-01..2016-01-01&amp;amp;sortBy=popular&quot;&gt;Cancer Research in 2015&lt;/a&gt;? It’s just a simple set of filters away.
&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbi0iPjOvyOGSkSeor1OhPYRZbdlDuT1yAVhCpVD3bdRSDeWMYO4NprzM6onF7QTM16z3hzbc8N4lEo2hgq0xOcUSGct7zIiRyNdHatVFJwUFyw8ef8zB9yO0379JZJA5-ggcOPYWyw2g/s1600/Screen+Shot+2016-06-09+at+1.35.04+PM.png&quot; imageanchor=&quot;1&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;288&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbi0iPjOvyOGSkSeor1OhPYRZbdlDuT1yAVhCpVD3bdRSDeWMYO4NprzM6onF7QTM16z3hzbc8N4lEo2hgq0xOcUSGct7zIiRyNdHatVFJwUFyw8ef8zB9yO0379JZJA5-ggcOPYWyw2g/s640/Screen+Shot+2016-06-09+at+1.35.04+PM.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h2 style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
&lt;span style=&quot;font-size: 24px;&quot;&gt;&lt;b&gt;5: You have to pay for it.&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-size: 24px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
Wait, the fact that it’s not free shouldn’t be a positive… should it?
&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
Yes actually it is a positive. When you’re paying for a service, you’re getting the product. When you have a service for free, you &lt;i&gt;are&lt;/i&gt;&amp;nbsp;the product. Every website costs money to run, and the people building it (like me) need to make a profit. Eventually everything ends up being sold, or VC money runs out and the product will collapse if it can’t find a way to make money.
&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;br /&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
Want to be sure you’re getting the most out of your time? Don’t rely on just free products to do everything. Paying for a product that works well is the &lt;i&gt;only&lt;/i&gt;&amp;nbsp;way to make sure that product stays in business. After all, it’s only 99¢/month.&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h4 style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
&lt;b&gt;Bonus:&lt;/b&gt;&lt;/h4&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
You&#39;ve scrolled to the end of my post, either you read it all or you&#39;re just skipping to the end. Either way, As a reward here&#39;s a coupon code for a free 7 day trial (no credit-card required) of ACI: &lt;a href=&quot;http://scholar.aci.info/#promoCode/COREDUMP&quot; target=&quot;_blank&quot;&gt;COREDUMP&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://blog.coredumped.org/feeds/3094860574070607686/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/301169258518998120/3094860574070607686' title='47 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/301169258518998120/posts/default/3094860574070607686'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/301169258518998120/posts/default/3094860574070607686'/><link rel='alternate' type='text/html' href='http://blog.coredumped.org/2016/06/5-reasons-you-shouldnt-use-google-for.html' title='5 Reasons you shouldn’t use Google for your scholarly research'/><author><name>Chris</name><uri>http://www.blogger.com/profile/04068315333804202241</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidJdQl_iL1erpMgW8EnyqQ5YbTUxtllxAqqkVavBkWagi4trv7AcVxjM9askinaLvI3TXh5ZvW7iCfJK3CG08btcRNIfetJQWqIWWzoTt1cqm1gs0BVyjh_X2Hc4iNcDL7n2OXRQTm3k0/s72-c/Screen+Shot+2016-06-09+at+1.17.20+PM.png" height="72" width="72"/><thr:total>47</thr:total></entry><entry><id>tag:blogger.com,1999:blog-301169258518998120.post-7459110951808305315</id><published>2016-04-19T09:56:00.000-07:00</published><updated>2016-04-19T09:56:03.342-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Amazon Cognito"/><category scheme="http://www.blogger.com/atom/ns#" term="Amazon Inspector"/><category scheme="http://www.blogger.com/atom/ns#" term="amazon web services"/><category scheme="http://www.blogger.com/atom/ns#" term="aws"/><category scheme="http://www.blogger.com/atom/ns#" term="AWS Summit Chicago"/><category scheme="http://www.blogger.com/atom/ns#" term="Beanstalk"/><category scheme="http://www.blogger.com/atom/ns#" term="cloud"/><title type='text'>What the AWS Summit Chicago Updates mean for you</title><content type='html'>&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
Amazon just wrapped up their AWS Chicago Summit, and they’ve dropped a few important notes that developers should be aware of. As I speculated previously, this year Amazon is choosing to focus on improving existing services, of which they too many of already, instead of bringing out new services.
&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
&lt;a href=&quot;https://aws.amazon.com/blogs/aws/new-managed-platform-updates-for-aws-elastic-beanstalk&quot;&gt;&lt;span style=&quot;font-size: 24px;&quot;&gt;Managed Platform Updates for AWS Elastic Beanstalk&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
AWS Elastic Beanstalk is a great service that automatically manages auto-scaling, provisioning load balancers, and can even automatically provision databases for your application. It’s a step below Lambda, allowing developers to bring their own application in any programming language (through the use of Docker) with almost any application without having to worry about managing servers or even thinking about infrastructure.
&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
Because it still runs using traditional EC2 instances that are started automatically, the system does occasionally need to perform updates. In the past to upgrade to a new AMI developers had to create a new environment, verify the new environment, then swap the URLs, confirm it was still working, and terminate the old environment. All of those steps had to happen manually by a developer performing each step through the AWS console or API.
&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
Next, Amazon allowed developers to update an environment with just one click. When a new AMI is available, a developer could just click “change” on the environment and choose the most recent AMI. Amazon would automatically launch new instances, verify they were working, then terminate the old ones. While significantly better, this still required manual interaction, even for top security patches. A developer not paying attention could easily miss an update and leave a system vulnerable to attack.
&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
Today, Amazon announced “Managed Platform Updates”. Effectively, the same level of automatic updates and patches that an RDS environment has is now available for every Beanstalk instance. This means developers can specify a maintenance window, when the servers are allowed to be upgraded, and have Amazon automatically apply patches and updates. This makes Beanstalk fully managed, just like RDS but for an entire application stack.
&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
&lt;a href=&quot;https://aws.amazon.com/about-aws/whats-new/2016/04/amazon-inspector-security-vulnerability-assessment-service-now-generally-available&quot;&gt;&lt;span style=&quot;font-size: 24px;&quot;&gt;Amazon Inspector, Security Vulnerability Assessment Service Now Generally Available&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
Anyone who has ever worked with PHP, Apache, or MySQL web applications is aware of how quickly vulnerabilities can come out and become massively widespread. Security and Vulnerability testing is very standard among many of these types of applications because they are very highly used by developers, and so they are very quickly the target of attackers. Every type of system is vulnerable, and it’s nearly impossible to keep up with all of the various security updates manually.
&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
To solve this problem, many developers rely on third-party software that automatically checks their systems for vulnerabilities, similar to how consumers would actively run virus scanning software to protect against known threats. &lt;a href=&quot;https://aws.amazon.com/inspector/&quot;&gt;Amazon Inspector&lt;/a&gt; is the official AWS product to handle automatic detection of common security and vulnerabilities announced by the security community for your web application. Since it’s managed automatically by AWS, it’s very simple to just point it to your application and have it check against the known vulnerabilities that may impact your service.
&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
Today, Amazon has announced that it has entered general availability, which means anyone can use it. It also means it’s officially supported by Amazon, and is considered “Production Ready”.
&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
&lt;a href=&quot;https://aws.amazon.com/blogs/aws/new-user-pools-for-amazon-cognito/&quot;&gt;&lt;span style=&quot;font-size: 24px;&quot;&gt;Your User Pools for Amazon Cognito&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
Amazon Cognito is a beast of a service, allowing developers to generate effectively “server less” backend systems connecting directly to Amazon’s services, without even needing backend code running in Lambda. The power of Cognito is that developers can grant temporary and limited credentials to a front-end application (mobile, desktop, web) that sits on an untrusted client system to access AWS services. This means the credentials need to be very specific in what they offer, and assume that the client is not secure (meaning the end-user may have tampered with it). Cognito&#39;s advantage is that developers grant the credentials for very specific purposes, and it can enforce that access with IAM Roles.
&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
However, Cognito was always very difficult to use, seeing as developers had to manage users on the backend or tie into a third-party login system like Google+. While this was OK, it didn’t really allow developers to fully manage users directly in Cognito, there was always the need to store a User record in something like DynamoDB before granting any credentials to the client.
&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;br /&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
With the new “Your User Pool” concept, this is now completely solved within Cognito itself. It now allows you to specify what information you need from a user and process the signup and identity management entirely within Cognito. This means there is no more need to store a separate “User” record in DynamoDB, since all of those properties can be stored within the User database in Cognito. You can even specify custom attributes, like what type of user, or what the regional currency of the user is. Best of all, it’s by far the easiest approach to require Multi-Factor-Authentication (MFA) for your end users, which is very important in highly secure applications such as Banking, Finance, and Medical services.&amp;nbsp;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://blog.coredumped.org/feeds/7459110951808305315/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/301169258518998120/7459110951808305315' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/301169258518998120/posts/default/7459110951808305315'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/301169258518998120/posts/default/7459110951808305315'/><link rel='alternate' type='text/html' href='http://blog.coredumped.org/2016/04/what-aws-summit-chicago-updates-mean.html' title='What the AWS Summit Chicago Updates mean for you'/><author><name>Chris</name><uri>http://www.blogger.com/profile/04068315333804202241</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-301169258518998120.post-774301786179763881</id><published>2016-03-31T12:25:00.000-07:00</published><updated>2016-03-31T12:25:45.645-07:00</updated><title type='text'>Building of the &quot;AskAboutTrump&quot; Alexa Skill</title><content type='html'>I was involved in the Amazon Echo Beta (and I&#39;ve just now received my Echo Dot), and when the &lt;a href=&quot;https://developer.amazon.com/appsandservices/solutions/alexa/alexa-skills-kit&quot; target=&quot;_blank&quot;&gt;Alexa Skills Kit&lt;/a&gt; came out I immediately wanted to see what fun I could have with it.&lt;br /&gt;
&lt;br /&gt;
With a free AWS Account, and a Free &lt;a href=&quot;https://www.algolia.com/&quot; target=&quot;_blank&quot;&gt;Algolia&lt;/a&gt; Account, I quickly whipped up an &quot;AskAboutTrump&quot; skill. It&#39;s now approved and live in Amazon Alexa, just go to your Alexa app and search for &quot;Ask About Trump&quot;. &amp;nbsp;(Note that I had to change this from &quot;Ask Trump&quot; to &quot;Ask About Trump&quot; to pass the Alexa Approval process, more on that later).&lt;br /&gt;
&lt;br /&gt;
The process is relatively simple, once you have signed up for both AWS and Algolia, create a new Algolia index. In my case, I called it &quot;trump&quot;, but if you wanted to create a different type of q/a system you could make it more appropriate.&lt;br /&gt;
&lt;br /&gt;
Next, I filled in a few records in my index, I just went under &quot;Add Manually&quot; and filled out a few examples, like:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;{&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp; &quot;name&quot;: &quot;How will you make america great again?&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp; &quot;response&quot;: &quot;By building a wall, beating china, and forcing companies to bring business back to america&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp; &quot;priority&quot;: 22&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Note the three important parts, the &quot;name&quot; which is what would be searched, the &quot;response&quot; which is how the skill question will respond, and the &quot;priority&quot; which I used in the custom search ranking. Under the &quot;Ranking&quot; tab I aded both &quot;name&quot; and &quot;keywords&quot; (keywords giving me an additional option to add more search keywords if needed). Under &quot;Custom Ranking&quot; I added &quot;priority&quot;, mostly as a disambiguation tool if multiple records match pretty equally.&lt;br /&gt;
&lt;br /&gt;
I filled out a few more records later on as I came up with other witty quotes, which I all did via the &quot;Add Manually&quot; option, but it would also be trivial to just create a little site to add in records more easily too.&lt;br /&gt;
&lt;br /&gt;
Next, create Access keys in Algolia to pass to your ASK Skill. I created my access key with both Read and Write access to the index so I could have the Alexa skill also add in support for adding new responses. I never got around to actually implementing this part, but it could be done with enough time.&lt;br /&gt;
&lt;br /&gt;
Next up, create the Lambda function. I have the full code I used available on GitHub:&amp;nbsp;&lt;a href=&quot;https://github.com/kopertop/AskAboutTrump&quot;&gt;https://github.com/kopertop/AskAboutTrump&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
The code was relatively simple, the key part is in the &quot;askQuestion&quot; function:&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;white-space: pre-wrap; word-wrap: break-word;&quot;&gt;function askQuestion(intent, session, callback) {
  var repromptText = &#39;Go on, ask&#39;;
  var sessionAttributes = {};
  var speechOutput = &#39;I will make america great again! Ask me how.&#39;;
  var closeSession = false;
  var question = intent.slots.Question;
  if(question &amp;amp;&amp;amp; question.value){
    question = question.value;
  }
  console.log(&#39;SEARCHING FOR&#39;, question);
  index.search(question, { hitsPerPage: 1 }, function(err, resp){
    var title = question.value;
    if(!err &amp;amp;&amp;amp; resp &amp;amp;&amp;amp; resp.hits &amp;amp;&amp;amp; resp.hits.length &amp;gt; 0){
      console.log(&#39;ALGOLIA RESPONSE&#39;, resp.hits);
      closeSession = true;
      speechOutput = resp.hits[0].response;
      title = resp.hits[0].name;
    }

    // Setting repromptText to null signifies that we do not&lt;/pre&gt;
&lt;pre style=&quot;white-space: pre-wrap; word-wrap: break-word;&quot;&gt;    // want to reprompt the user.
    // If the user does not respond or says something&lt;/pre&gt;
&lt;pre style=&quot;white-space: pre-wrap; word-wrap: break-word;&quot;&gt;    // that is not understood, the session
    // will end.
    callback(sessionAttributes,
      Skill.buildSpeechletResponse(title,&lt;/pre&gt;
&lt;pre style=&quot;white-space: pre-wrap; word-wrap: break-word;&quot;&gt;        speechOutput, repromptText, closeSession));
    });&lt;/pre&gt;
&lt;pre style=&quot;white-space: pre-wrap; word-wrap: break-word;&quot;&gt;}&lt;/pre&gt;
&lt;pre style=&quot;white-space: pre-wrap; word-wrap: break-word;&quot;&gt;&lt;/pre&gt;
&lt;pre style=&quot;word-wrap: break-word;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;times&amp;quot;;&quot;&gt;&lt;span style=&quot;white-space: normal;&quot;&gt;Note that this allows for any sort of free-formed question to be asked, and the search is done in Algolia to find the closest match. That means that you could have something with a bunch of questions in the &quot;title&quot; but the same response, or include extra words but if the user leaves them out they still match. Why did I do this instead of just a simple mapping?&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
Lets take a more complex example: &quot;about what are new york city values how do you like feel about new york city.&quot;. This matches:&lt;br /&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;Ask Trump, &lt;i&gt;what are new york city values&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;Ask Trump &lt;i&gt;about new york city&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;Ask Trump &lt;i&gt;how do you feel about new york city&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;Ask trump &lt;i&gt;about new york city values&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;Ask Trump &lt;i&gt;do you like new york city&lt;/i&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
And many more....&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
In any event, after the Labmda function is created, you&#39;ll need to register it with Alexa Skills Kit. This can be a relatively complex process to get approved, so here&#39;s the key points that I missed the first few times:&lt;/div&gt;
&lt;h3&gt;
&lt;br /&gt;Include a lot of phrases in your &quot;Interaction Model&quot;.&lt;/h3&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
For mine, I had:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;GetQuote a quote&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;GetQuote quote&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;GetQuote give me a quote&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;GetQuote get a quote&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;GetQuote get quote&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;AMAZON.HelpIntent help&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;AMAZON.HelpIntent what can i say&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;AMAZON.HelpIntent what can you answer&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;AskQuestion {What Will Trump Do|Question}&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;AskQuestion {Where do you live|Question}&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;AskQuestion {Where do think about climate change|Question}&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;AskQuestion {How do you feel about free trade|Question}&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;AskQuestion {Do you like Hillary Clinton|Question}&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;AskQuestion {Who do you want counting your money|Question}&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;AskQuestion {Does mexico have good people|Question}&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;AskQuestion {How do you feel about Saudi Arabia|Question}&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;AskQuestion {How do you feel about politics|Question}&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;AskQuestion {Where do you live|Question}&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;AskQuestion {How do you feel about China|Question}&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;AskQuestion {How will you fix the border crisis|Question}&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;AskQuestion {What are new york values|Question}&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;AskQuestion {How are you doing in the polls|Question}&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;AskQuestion {Will you win the election|Question}&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;
&lt;br /&gt;Your Interaction Model must include your example phrases.&lt;/h3&gt;
&lt;div&gt;
When you get to your &quot;Publishing Information&quot;, make sure the three &quot;Example Phrases&quot; are included in your Interaction Model.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3&gt;
&lt;b&gt;You must include a &quot;Help Intent&quot;, &quot;Stop Intent&quot;, and &quot;Cancel Intent&quot;.&lt;/b&gt;&lt;/h3&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
If a user ever wants to stop, cancel, or get help, they need to be able to. Saying &quot;Stop&quot; pretty much at any point in your interaction must quit your app.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3&gt;
You must provide a proper reprompt request, and handle if the user doesn&#39;t say anything.&lt;/h3&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
My initial confusion was failing to provide a re-prompt request, and also not handling the basic &quot;Just Start the app&quot;. For example, if you just say &quot;Open Trump&quot; it needs to do something. Or, if you ask for &quot;Help&quot;, it returns an open prompt after saying &quot;Try asking me....&quot;. This is important, and if the user responds after that you need to make sure to close the stream. If you leave the listening stream open, or don&#39;t provide a proper reprompt request, you will be rejected.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
This was the most confusing thing to me because I thought &quot;But I don&#39;t control when Alexa closes the stream!&quot;, but yes you do, you control that by just passing the &quot;closeSession&quot; variable. Make sure that is set to &quot;true&quot; only after you have answered a users question, and make sure you pass a &quot;Reprompt request&quot; to anything that is &quot;false&quot;.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;h3&gt;
Go ahead, download my skill.&lt;/h3&gt;
&lt;/div&gt;
&lt;div&gt;
Let me know what you think, and if you have any other questions you think would be nice to see answers to leave them in the comments!&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://blog.coredumped.org/feeds/774301786179763881/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/301169258518998120/774301786179763881' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/301169258518998120/posts/default/774301786179763881'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/301169258518998120/posts/default/774301786179763881'/><link rel='alternate' type='text/html' href='http://blog.coredumped.org/2016/03/building-of-askabouttrump-alexa-skill.html' title='Building of the &quot;AskAboutTrump&quot; Alexa Skill'/><author><name>Chris</name><uri>http://www.blogger.com/profile/04068315333804202241</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-301169258518998120.post-6388634770417927319</id><published>2016-02-17T08:35:00.005-08:00</published><updated>2016-02-18T08:35:04.051-08:00</updated><title type='text'>Lambda VPC Primer</title><content type='html'>&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
AWS just announced support for Lambda access to VPC protected resources. This effectively means that your Lambda functions will run inside of a VPC and have access to any private IP and firewall resources you may be running, such as RDS instances which restrict by IP. It also means you can effectively manage the IPs your Lambda function will use, giving you a huge amount of control over Lambda functions and gaining the ability to provide static IPs to your lambda functions when used in conjunction with VPC NATs.
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;UPDATE&lt;/b&gt;: Your VPC Lambda subnets MUST be &lt;a href=&quot;http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-nat-gateway.html&quot; target=&quot;_blank&quot;&gt;behind a NAT&lt;/a&gt;. At this time it looks like the &quot;Auto Assign Public IP&quot; function using an internet gateway directly does not work.&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
Before you begin, it’s important to note that &lt;b&gt;a VPC Lambda function needs some special access&lt;/b&gt; to be able to create resources inside of your VPC. Fortunately, these resources are all managed in a single Managed Policy Group, so the first step is to create a new Role specifically for your VPC function and assign the “AWSLambdaVPCAccessExecutionRole” managed policy.
&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
In your AWS Console, go to “Services -&amp;gt; Security &amp;amp; Identity -&amp;gt; IAM”:
&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWZ2qCD1bZ07TGwmJ3QEkTFoX9hwQ3wE-GBr7Yh4MbGTgIkqPGMrU5_eC_1vdRG59A4WCA7-83CsIPttBX1BNURGkhkVPGO1wsXn1kAa4uVVI9uOr9gk-dHttvqLOde0UjsSotp8zoJXw/s1600/LambdaVPC+SS1.png&quot; imageanchor=&quot;1&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;339&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWZ2qCD1bZ07TGwmJ3QEkTFoX9hwQ3wE-GBr7Yh4MbGTgIkqPGMrU5_eC_1vdRG59A4WCA7-83CsIPttBX1BNURGkhkVPGO1wsXn1kAa4uVVI9uOr9gk-dHttvqLOde0UjsSotp8zoJXw/s640/LambdaVPC+SS1.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
In the left menu, choose “Roles”:
&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuFuFnCdjToCDzyd4ciY15fLbEEmZUww4kmiUXRd-5LH_NrMSENxMhw-PzWY_NvYLWX_j9bhiJPuX-OVCjhBeOceEeTikFCknbhTr9mRNq1rUYO8doCMxFnxiYzdHoIPwerk0WLZ_s8jo/s1600/LambdaVPC+SS2.png&quot; imageanchor=&quot;1&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuFuFnCdjToCDzyd4ciY15fLbEEmZUww4kmiUXRd-5LH_NrMSENxMhw-PzWY_NvYLWX_j9bhiJPuX-OVCjhBeOceEeTikFCknbhTr9mRNq1rUYO8doCMxFnxiYzdHoIPwerk0WLZ_s8jo/s320/LambdaVPC+SS2.png&quot; width=&quot;132&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
Click the “Create New Role” button:
&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrBbm1xbw6UdmI0tNMLiM7Q4r4PgPOhN4_eRyK4uVtWB7nEiVO4G6A1o8vwpK9ZnzaO_n93vwFWr54kjSZWZyFJXONg5kV05UR_6Rj9807RbkNECibWArd5naeT5y8l5TB-W2FKrsjKXU/s1600/LambdaVPC+SS3.png&quot; imageanchor=&quot;1&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrBbm1xbw6UdmI0tNMLiM7Q4r4PgPOhN4_eRyK4uVtWB7nEiVO4G6A1o8vwpK9ZnzaO_n93vwFWr54kjSZWZyFJXONg5kV05UR_6Rj9807RbkNECibWArd5naeT5y8l5TB-W2FKrsjKXU/s400/LambdaVPC+SS3.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
Fill out the Role Name, I prefer to start every Lambda role with “lambda_”, then click continue:
&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSsGCfxILa5_fGi-uENN3MADoTBMgEync6UszWnQ86u_NeJRVYDidvw5wj14NXUigxC2pttRLdqHxEbtXtaLzmlgKvqXS43i7U4x0BgbXavSd2DXXBNE5BguU79sh9I6HTXLdGDZfIVBc/s1600/LambdaVPC+SS4.png&quot; imageanchor=&quot;1&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;147&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSsGCfxILa5_fGi-uENN3MADoTBMgEync6UszWnQ86u_NeJRVYDidvw5wj14NXUigxC2pttRLdqHxEbtXtaLzmlgKvqXS43i7U4x0BgbXavSd2DXXBNE5BguU79sh9I6HTXLdGDZfIVBc/s640/LambdaVPC+SS4.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
Under the “Select Role Type”, choose “AWS Lambda”:
&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQrv56tUlH1UMrZAzSdCtDCCK5HHB6dwbcA5POXDtIoqj1c1h72vjlAXWMM_6LOD6YvILuW5wB_SJZGgHq7mPSkTbXubguPFnXUBZ8d8wQ1r_CkHKcYR_9bHynRjI27fcw7K3Ezei3SJA/s1600/LambdaVPC+SS5.png&quot; imageanchor=&quot;1&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;217&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQrv56tUlH1UMrZAzSdCtDCCK5HHB6dwbcA5POXDtIoqj1c1h72vjlAXWMM_6LOD6YvILuW5wB_SJZGgHq7mPSkTbXubguPFnXUBZ8d8wQ1r_CkHKcYR_9bHynRjI27fcw7K3Ezei3SJA/s640/LambdaVPC+SS5.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
Now the important part, on the next page under “Attach Policy” search for “lambda” in the search box, and find and check the “AWSLambdaVPCAccessExecutionRole”, then hit “Create”:
&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRszN3o7E6B4ZRQzDDfzpwjErkYFRSMkU0srzBzM01QWUR9Yw2R4Qnx71lvjA5-p2Y2bmPrfduPr81hA7gUH9459-rVY5GbRXtPTqHKrTKS9LLqAvs30xoqgF4a0SEwEJDWKlEDZLpOeQ/s1600/LambdaVPC+SS6.png&quot; imageanchor=&quot;1&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRszN3o7E6B4ZRQzDDfzpwjErkYFRSMkU0srzBzM01QWUR9Yw2R4Qnx71lvjA5-p2Y2bmPrfduPr81hA7gUH9459-rVY5GbRXtPTqHKrTKS9LLqAvs30xoqgF4a0SEwEJDWKlEDZLpOeQ/s400/LambdaVPC+SS6.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
This policy adds some very important access rights to your Lambda function. It replaces the “AWSLambdaBasicExecutionRole”, so if you’re upgrading an existing role you can use this instead of that policy. This policy gives your Lambda function access to write logs to CloudWatch Logs, and to create resources in your VPC. It’s important to create this role BEFORE you try to create your lambda function, as you will need to reference it in the very first step of your lambda function creation.
&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
On the Lambda console, you will notice a new section when creating a function, which allows you to choose a VPC:
&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh44k-25IMPh7ZC5new0-oLyuu5_SJhjUj4cfqD0sZWogBf0YgEJEZ4MRIDs9Ur8vHwyo_Uzu4UZKtNJ2qYuFrH4tezkFnX9JlCPghNTxpRAHyya3Q73IW0cBHIXte_3aPIZpnHMfaf9iw/s1600/LambdaVPC+SS7.png&quot; imageanchor=&quot;1&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;112&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh44k-25IMPh7ZC5new0-oLyuu5_SJhjUj4cfqD0sZWogBf0YgEJEZ4MRIDs9Ur8vHwyo_Uzu4UZKtNJ2qYuFrH4tezkFnX9JlCPghNTxpRAHyya3Q73IW0cBHIXte_3aPIZpnHMfaf9iw/s640/LambdaVPC+SS7.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
Choose your VPC and new options will show up, allowing you to choose Subnets and security groups for your lambda function.
&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivplmLAZcy-w7mqM1YyNEa3Qx1y0hS4nftns119igHYGwip60in-fazLDL4v6lqw3NM78n_zdQyaGYUwnsAr3de6yzzwsIZfutlbKo6nadoyQA8rfXaafpjzoAGDCJX2LVbGqs-UkwrtM/s1600/LambdaVPC+SS8.png&quot; imageanchor=&quot;1&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;231&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivplmLAZcy-w7mqM1YyNEa3Qx1y0hS4nftns119igHYGwip60in-fazLDL4v6lqw3NM78n_zdQyaGYUwnsAr3de6yzzwsIZfutlbKo6nadoyQA8rfXaafpjzoAGDCJX2LVbGqs-UkwrtM/s400/LambdaVPC+SS8.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
Note that you don’t need to add any inbound rules for your security group to your lambda function, but you can use this security group to grant access to other VPC resources that your Lambda functions need to be able to access. For example, if you have an RDS instance that grants access to only specific security groups, you could make a new security group called “Lambda” and add that to the grants in your RDS instance’s security group.
&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
Remember, before you go to create your new Lambda VPC function, make sure you set up your role to support Lambda VPC access!&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;br /&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;font-family: &#39;Helvetica Neue&#39;; font-size: 14px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://blog.coredumped.org/feeds/6388634770417927319/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/301169258518998120/6388634770417927319' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/301169258518998120/posts/default/6388634770417927319'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/301169258518998120/posts/default/6388634770417927319'/><link rel='alternate' type='text/html' href='http://blog.coredumped.org/2016/02/lambda-vpc-primer.html' title='Lambda VPC Primer'/><author><name>Chris</name><uri>http://www.blogger.com/profile/04068315333804202241</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWZ2qCD1bZ07TGwmJ3QEkTFoX9hwQ3wE-GBr7Yh4MbGTgIkqPGMrU5_eC_1vdRG59A4WCA7-83CsIPttBX1BNURGkhkVPGO1wsXn1kAa4uVVI9uOr9gk-dHttvqLOde0UjsSotp8zoJXw/s72-c/LambdaVPC+SS1.png" height="72" width="72"/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-301169258518998120.post-7688493013871710664</id><published>2015-12-01T07:03:00.003-08:00</published><updated>2015-12-01T07:03:58.380-08:00</updated><title type='text'>The age of Core Cloud Computing is over</title><content type='html'>Amazon coined the term &quot;Cloud Computing&quot; back in 2006. The term &quot;Cloud Computing&quot; really meant &quot;a way to treat computers just like any other utility&quot;. The idea was that Amazon really understands how to manage physical hardware, so the average developer shouldn&#39;t have to. Cloud Computing was born, and eventually expanded into other &quot;Cloud Services&quot;, simple, common services that developers would need in order to build any basic application.&lt;br /&gt;
&lt;br /&gt;
Cloud Computing today has expanded to mean just about anything, there are multiple types of Cloud Services including Infrastructure as a Service (IaaS), Platform as a Service (PaaS), and other offerings in between (some also insist that Software as a Service (SaaS) is a type of Cloud, but really that&#39;s been around much longer then the term Cloud).&lt;br /&gt;
&lt;br /&gt;
A Cloud Service really is a building block to help you develop your application. There are only three types of Core Cloud Services on which every other service is built:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Compute - (EC2 &quot;Instances&quot;, which replaced &quot;Servers&quot;)&lt;/li&gt;
&lt;li&gt;Storage - (S3, EBS, which replaced Hard Drives and File Storage solutions)&lt;/li&gt;
&lt;li&gt;Network - (ELB, VPC, etc, which replaced Routers, switches, and networking gear)&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
Every other Cloud Service is built from a combination of these three services. They are the basic fundamental building blocks of all applications and services on which you can build anything. Some may even argue that Storage and Network are just specialized versions of Compute, but we won&#39;t go down that far of a rabbit hole.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Lets take a look at RDS for example, RDS is basically a specialized Compute instance with Storage and Network built in to serve up a specific application (An SQL database). Before RDS you could still run an SQL database on the cloud, it was just more complex to do it yourself and the initial investment of time was much greater. Amazon saw the amount of people doing this same basic task and decided to make a top-level service that was built on the three building blocks to make that one task more simple.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The most significant new service to come out recently was Amazon Device Farm, which is actually a specialized version of Compute. It&#39;s still a Compute service, but instead of being built on traditional server hardware, it&#39;s built on top of Mobile devices to help you test your code on a different type of hardware. This is the only Core Service that Amazon developed this year, and they&#39;ve released many new services in 2015.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3&gt;
What does this mean for Cloud Computing going forward?&lt;/h3&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The age of building Core Services is over. The focus now is on making it way easier for developers to produce new products. Even beyond that, the amount of top-level resources is so high that the focus for developers now should be on building services for non-developers. Up until very recently, many services developers would make came out of necessity to make other developer&#39;s lives easier, either by monitoring applications, or by providing one small building block to a larger application. Those days are coming to a close very quickly as the Cloud Computing providers are starting to integrate those types of offerings right into their platforms.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
If you&#39;re building applications in the Cloud today, don&#39;t start by designing something new for other Developers, start with designing something that the average person could use.&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://blog.coredumped.org/feeds/7688493013871710664/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/301169258518998120/7688493013871710664' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/301169258518998120/posts/default/7688493013871710664'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/301169258518998120/posts/default/7688493013871710664'/><link rel='alternate' type='text/html' href='http://blog.coredumped.org/2015/12/the-age-of-core-cloud-computing-is-over.html' title='The age of Core Cloud Computing is over'/><author><name>Chris</name><uri>http://www.blogger.com/profile/04068315333804202241</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-301169258518998120.post-5161012046302762421</id><published>2015-10-02T10:41:00.002-07:00</published><updated>2015-10-06T07:33:24.752-07:00</updated><title type='text'>Twitter is about to remove statistics APIs</title><content type='html'>Twitter &lt;a href=&quot;https://twittercommunity.com/t/a-new-design-for-tweet-and-follow-buttons/52791&quot; target=&quot;_blank&quot;&gt;recently announced they will be removing the API&lt;/a&gt; that allows you to gather and display statistics about how many times a URL has been shared. This has a huge impact for systems like &lt;a href=&quot;http://www.addthis.com/&quot; target=&quot;_blank&quot;&gt;AddThis&lt;/a&gt; and &lt;a href=&quot;https://www.sharedcount.com/notes/twitter_api_shutdown.php&quot; target=&quot;_blank&quot;&gt;SharedCount&lt;/a&gt;, which will no longer be able to retrieve statistics for URLs that are shared on twitter.&lt;br /&gt;
&lt;br /&gt;
These tools will continue to be able to show the same statistics for other social media sites like Facebook, Google+, Pinterest, etc. What does this mean for Twitter?&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Why would Twitter do this?&lt;/h3&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
First, lets understand &lt;i&gt;why&lt;/i&gt;&amp;nbsp;twitter would do this. It&#39;s pretty obvious in their notice that they want people using &lt;a href=&quot;https://gnip.com/&quot; target=&quot;_blank&quot;&gt;Gnip&lt;/a&gt; instead of their APIs directly. Gnip is a paid service, and although it&#39;s a very good service, it doesn&#39;t offer nearly the same functionality as &quot;hey here&#39;s a URL tell me how many times it was shared on twitter&quot;. When &lt;a href=&quot;https://blog.twitter.com/2014/twitter-welcomes-gnip-to-the-flock&quot; target=&quot;_blank&quot;&gt;Twitter Acquired Gnip&lt;/a&gt;, they slowly started disabling other big-data entities like DataSift and it became obvious they wanted to control the statistics coming out of Twitter. They want to use you as the product, and they want people to pay for their data. It&#39;s not really surprising that they&#39;re disabling more APIs, but it&#39;s quite confusing that they are not offering a paid alternative to this counts API.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;h3&gt;
What does this mean for my site?&lt;/h3&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
What it means for the average publisher is that you can no longer get statistics about how often an article, blog post, or website has been shared on Twitter. You can get a 30 day count (how many times it was shared in the last 30 days) by subscribing to Gnip, or you can get an approximate count using the Search API, but you can&#39;t just display a button saying &quot;this is how often this was shared on twitter&quot;. That means getting popularity for an article on Twitter is now nearly impossible.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
In the age of Alternative Metrics for publishers and deep analytics for all of the social media space, this move makes no sense. It makes twitter quickly approach irrelevancy.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3&gt;
Twitter is nearly irrelevant now.&lt;/h3&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
At ACI, we use SharedCount to get statistics on how often an article is shared. We get statistics from all of the major social media sites through one simple API call, and we use that to determine popularity of a story, not just in ACI, but throughout social media as well. When this news first came up, the first thing I did was a quick check of how many shares in twitter we see vs other social media sites. What I found was astonishing:&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Facebook&lt;/b&gt;:&amp;nbsp;311,338,380&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Twitter&lt;/b&gt;:&amp;nbsp;10,519,290&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Google&lt;/b&gt;+:&amp;nbsp;9,220,078&lt;/li&gt;
&lt;li&gt;&lt;b&gt;LinkedIn&lt;/b&gt;:&amp;nbsp;2,085,853&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
People are almost as likely to use Google+ to share an article as Twitter.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Let that sink in for a moment. Who do you know that uses Google+? Compare that to the number of people who use Twitter? What does that tell us about Twitter?&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Basically it means that Twitter is not used for anything professional at all. It&#39;s just quick ranting. You can&#39;t get a full story in there and you can&#39;t really do much on twitter BUT post a link, so the fact that people are &lt;b&gt;not posting links to scholarly content&lt;/b&gt;&amp;nbsp;says that the academic community doesn&#39;t use Twitter.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3&gt;
Facebook has over 30x the usage as Twitter in the Academic space.&lt;/h3&gt;
&lt;div&gt;
That means Facebook, and not Twitter, is the social media platform of choice for Academics. So what impact does this have on ACI? Practically none, because even if twitter doesn&#39;t eventually include an API in Gnip or some other paid platform to get these statistics, they&#39;re minor in comparison to Facebook stats. Our most popular articles in ACI are not shared on twitter, but rather on Facebook.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Facebook gets it. They work directly with Publishers to make their content more targeted, work very well to support insanely targeted advertising, and they still want you to get at some overall statistics for free. Why? because there&#39;s a lot of usage on Facebook, hell &lt;a href=&quot;http://money.cnn.com/2015/08/27/technology/facebook-one-billion-users-single-day/&quot; target=&quot;_blank&quot;&gt;they even passed one billion users on a single day&lt;/a&gt;.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
This move by Twitter says they aren&#39;t generating the revenue they should, and it&#39;s a last straw effort to try to get something going. Don&#39;t be surprised if they continue to &quot;trim the fat&quot; and continue to bring down the service to remove pieces that people actually use.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://blog.coredumped.org/feeds/5161012046302762421/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/301169258518998120/5161012046302762421' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/301169258518998120/posts/default/5161012046302762421'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/301169258518998120/posts/default/5161012046302762421'/><link rel='alternate' type='text/html' href='http://blog.coredumped.org/2015/10/twitter-is-about-to-remove-statistics.html' title='Twitter is about to remove statistics APIs'/><author><name>Chris</name><uri>http://www.blogger.com/profile/04068315333804202241</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-301169258518998120.post-8417536241899797127</id><published>2015-07-10T12:41:00.003-07:00</published><updated>2015-07-10T12:41:20.973-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="420"/><category scheme="http://www.blogger.com/atom/ns#" term="remote development"/><category scheme="http://www.blogger.com/atom/ns#" term="stress"/><category scheme="http://www.blogger.com/atom/ns#" term="work"/><title type='text'>420: Enhance Your Calm</title><content type='html'>If you&#39;ve worked with the Twitter API, especially in the early days, you&#39;re probably very familiar with the HTTP error code &lt;a href=&quot;https://dev.twitter.com/rest/public/rate-limiting&quot; target=&quot;_blank&quot;&gt;&lt;i&gt;420: Enhance Your Calm.&lt;/i&gt;&lt;/a&gt; It&#39;s not an official HTTP error code, but being in the 4xx level it does make it a valid client error, and it has &lt;a href=&quot;https://en.wikipedia.org/wiki/420_(cannabis_culture)&quot; target=&quot;_blank&quot;&gt;some perfect illusions to what you should do to fix the problem&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Relax.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Stressing out a system to it&#39;s absolute max isn&#39;t good. In fact, a DDoS attack is exactly that, issuing too many requests for the server to handle that it has no other viable option then to block legitimate traffic. Stressing out a car by redlining it for hours would have the same very negative effect. It&#39;s not good for technology, and it&#39;s not good for us.&lt;br /&gt;
&lt;br /&gt;
It&#39;s well documented that stress,&lt;a href=&quot;http://scholar.aci.info/view/1427c3cf826114a0104/149cf41e08913b7014d&quot; target=&quot;_blank&quot;&gt; or our reactions to stressful situations&lt;/a&gt;, has very negative reactions on us. Stressing out over a situation does no good, and often leads to bad decisions as well as the physical and mental effects it has on you.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
&lt;b&gt;But I strive well under stress.&lt;/b&gt;&lt;/h3&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
No, you may &lt;i&gt;think&lt;/i&gt;&amp;nbsp;you do well when stressed out, but what really happens is you &lt;i&gt;produce more&lt;/i&gt;. The quality of code produced while under a strict deadline is always worse. Remember the &lt;a href=&quot;http://www.thefiscaltimes.com/2015/02/16/Tech-Issues-Plague-HealthCaregov-Deadline-Passes&quot; target=&quot;_blank&quot;&gt;early issues of Healthcare.gov&lt;/a&gt;? It wasn&#39;t just because of a lot of incompetent people, it was &lt;i&gt;also&lt;/i&gt;&amp;nbsp;because those people were put under such strict deadlines the only reasonable way to accomplish all that was required of them was to work long, hard hours. That leads to stress, which produces shitty work product.&lt;br /&gt;
&lt;br /&gt;
I&#39;ve had a lot of personal experience with this in my professional life too. When I first came to Newstex, we had to switch off of an antiquated system that was falling apart at the seams. It wasn&#39;t designed to handle the massive volume of content we were processing, and it was dropping content already. I was fresh out of college with a lot of debt and needed to prove myself to the company. I put some undo pressure on myself as well because I wanted to make the system perfect. I was getting requirements thrown at me from every direction and would scatter to try to get things done as they came in since there was no way to keep up with it if I didn&#39;t. Every day was like fighting a fire, except there was almost no way to gain ground, the backlog kept on burning up and I just couldn&#39;t get ahead of it all.&lt;br /&gt;
&lt;br /&gt;
I took shortcuts, but I got the job done. The system scaled very quickly from only taking in about 50k stories a week to over 200k a week without any issues. Since switching onto that new system we&#39;ve had no significant downtime, we&#39;ve always been able to recover quickly and build on top of it as we needed to. I produce a lot of code in a very short period of time all because I was put in a very stressful situation and the only way &lt;i&gt;out &lt;/i&gt;of that situation was to do so.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
5 years later, I realized there is a better way&lt;/h3&gt;
&lt;div&gt;
Back when I first started, I produced a &lt;i&gt;lot&lt;/i&gt;&amp;nbsp;of code, and answered every feature request with either implementing it within a few days, or not doing it because it would take too long. The problem with that is you end up with a house made of duct-tape instead of a solid infrastructure. Sure the system works and it&#39;s incredibly flexible, but it could have been built a lot better, and made a lot more adaptable and easy to manage. I recently started a brand new and very large project for my company (now re-branded as ACI). I looked at all the old code I had written and though &quot;Wow, how does this even work?&quot;. Yes it worked, but it was ugly and not very maintainable.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Stressful situations get you to build code quickly, but approaching a problem in a much more calm manor, when you don&#39;t have tight deadlines or lots of features you need to do &lt;i&gt;right now&lt;/i&gt;&amp;nbsp;leads to a lot more stable code. It makes you re-think processes and instead of taking the easy way out, do the right thing. Sometimes the easiest way &lt;i&gt;is&lt;/i&gt;&amp;nbsp;the right way, but it&#39;s almost never the first way you think about it.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3&gt;
When my boss calls me in a panic, I just say &quot;Ok, no problem&quot;&lt;/h3&gt;
&lt;div&gt;
Early on I would get upset when I got a call the day of a deployment telling me I needed to change everything. I&#39;ve learned the simple solution to not being stressed out about problems is to just not let them stress you out.... don&#39;t react in a way that won&#39;t get anything done. What good does getting upset about the changes do? When he does that sort of thing now I simply say &quot;Ok, no problem, but then we have to delay this release and push off these features to get it done&quot;. It&#39;s a trade-off; if you want new things done something else gets pushed off.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3&gt;
Take time off, and go off-grid&lt;/h3&gt;
&lt;div&gt;
Another thing that I&#39;ve discovered that really helps when the stressful situations start to build up is to take a break whenever you can. When there aren&#39;t fires to be put out, take a week and go completely off-grid. Make sure there are people in-place to manage things while you&#39;re gone, but don&#39;t take any calls, texts, or even emails while you&#39;re away. (I wasn&#39;t quite able to not answer any emails, but I didn&#39;t answer any from clients at least). At least once a year, your body needs to completely de-compress and forget about everything. When you come back you should be much more focused and able to think more clearly about the issues that you need to solve. Don&#39;t look at that never-ending task list and think &quot;it will never be all done&quot;, that&#39;s not the point of it.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Inbox zero is a pipe dream for most of us. Take what you can tackle, delegate what you can, and just push off what you can&#39;t. Some things will just sit at the bottom of the pile forever. That&#39;s just the way things go. Don&#39;t expect to always get every task completed. Get what&#39;s important done.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3&gt;
Take time for lunch, every day.&lt;/h3&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
This can be one of the hardest things to do as a remote employee. Take time off for lunch, if you aren&#39;t heading out of your home-office, at least go away from your computer for a while. You should already be standing about once an hour anyway, so this time just go to the kitchen, make something more then just a sandwich, and then sit down at the table and eat it. Don&#39;t just scarf it down and go back to work either, enjoy it, take some time away.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3&gt;
The bottom line is don&#39;t get angry.&lt;/h3&gt;
&lt;div&gt;
Just be realistic. When new requests come in be honest, if you don&#39;t think you can get them done let them know. If your boss tells you what he needs you to get done, tell him &lt;i&gt;when&lt;/i&gt;&amp;nbsp;you can get that done. If he tells you when the deadline is, give him a list of features to prioritize and tell him how far down the list you can get done. And remember it&#39;s always best to under-estimate how much you can get done and how quickly you can get it done, if you end up getting more done or get things done quicker it&#39;s way better then getting less done or taking longer.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Just don&#39;t get angry when new things happen. Explain what you need to get it done, if it&#39;s time or another person. That&#39;s easier said then done, but the more you work on it the better you&#39;ll get.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
And remember the next time that angry customer calls, they aren&#39;t angry at you personally. They are angry at the situation. It does no good to fuel their anger.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://blog.coredumped.org/feeds/8417536241899797127/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/301169258518998120/8417536241899797127' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/301169258518998120/posts/default/8417536241899797127'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/301169258518998120/posts/default/8417536241899797127'/><link rel='alternate' type='text/html' href='http://blog.coredumped.org/2015/07/420-enhance-your-calm.html' title='420: Enhance Your Calm'/><author><name>Chris</name><uri>http://www.blogger.com/profile/04068315333804202241</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-301169258518998120.post-1073665338009796689</id><published>2014-12-04T06:41:00.004-08:00</published><updated>2014-12-04T06:41:32.350-08:00</updated><title type='text'>Is Microsoft the new Apple?</title><content type='html'>&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&#39;allowfullscreen&#39; webkitallowfullscreen=&#39;webkitallowfullscreen&#39; mozallowfullscreen=&#39;mozallowfullscreen&#39; width=&#39;320&#39; height=&#39;266&#39; src=&#39;https://www.youtube.com/embed/nmwXdGm89Tk?feature=player_embedded&#39; frameborder=&#39;0&#39;&gt;&lt;/iframe&gt;&lt;/div&gt;
Think Different.&lt;br /&gt;
&lt;br /&gt;
That&#39;s &lt;a href=&quot;http://en.wikipedia.org/wiki/Think_different&quot; target=&quot;_blank&quot;&gt;the phrase Apple coined back in 1997&lt;/a&gt;. It appealed to the upcoming generation who wanted to &quot;fight against the man&quot;. In those days, the &quot;man&quot; was Big Blue, the terrible combination of IBM and Microsoft. They were all there was to have for computers. Microsoft beat Apple to the punch, they had invested more in the GUI then Apple had, and gotten a release out first. They were widely adopted, so they quickly grew in support. Businesses and Personal users both used Microsoft Windows, because it&#39;s what all the applications were written for, and people all wrote applications for Windows because it&#39;s what everyone used.&lt;br /&gt;
&lt;br /&gt;
Apple wanted to change that, they wanted people to use the better operating system, even if there weren&#39;t as many applications for it. They started building their own Office-like products, and trying to convince the world that simpler was better.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;
The new age of Apple&lt;/h2&gt;
Simpler is better. And when Apple switched to a Unix-based backend to run OS X, they ushered in a new wave of support. They no longer were just the system for the technically un-savy, they gave every geek what we wanted, a nice GUI on top of an existing platform &lt;i&gt;we already knew how to use&lt;/i&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&#39;allowfullscreen&#39; webkitallowfullscreen=&#39;webkitallowfullscreen&#39; mozallowfullscreen=&#39;mozallowfullscreen&#39; width=&#39;320&#39; height=&#39;266&#39; src=&#39;https://www.youtube.com/embed/dFUlAQZB9Ng?feature=player_embedded&#39; frameborder=&#39;0&#39;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;br /&gt;
Apple continued to grow and innovate. Eventually they launched the first iPhone; a smartphone designed for the average person. It wasn&#39;t the first Smartphone, but it was the first to include an App Store, and a completely new platform designed to help developers put their software in the hands of users on the go. Apple once again was at the forefront of innovation &lt;i&gt;because they were the underdog&lt;/i&gt;. They had to innovate, and produce top-quality products to get people to switch away from existing devices.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;
Apple as the new Giant&lt;/h2&gt;
&lt;div&gt;
After the iPhone launched, Apple continued to innovate for a few years. It&#39;s hard to pinpoint exactly when (although I believe it was directly related to the death of Steve Jobs), but at some point after Google launched the Android OS, Apple started copying instead of innovating. Instead of pushing forward with new ideas, and building everything with their users best interests in mind, they decided to bow to pressure and do what others had been doing. They made phones larger, more unmanageable for the average single-hand usage, and even started selling cheaper versions of the phone.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Apple has been riding on their brand for the past few years. They have been stale, and they have been adding very single-use cases to their OS. You can tie an app into Siri, but only in a very specific way, through Home Automation APIs. You can share data between apps, but only through &quot;Health Kit&quot; which is designed to share health-related data. Everything so far has been piecemeal, instead of a better, more general solution.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h2&gt;
Microsoft is the new little guy&lt;/h2&gt;
&lt;div&gt;
Everyone forgot about Microsoft. They &lt;a href=&quot;http://www.businessinsider.com/microsoft-closes-nokia-acquisition-2014-4&quot; target=&quot;_blank&quot;&gt;bought Nokia&lt;/a&gt; in an attempt to enter the Smartphone market. They built an entirely new OS around touch and widgets. They looked at how users want to use their devices, and have even produced a new &lt;a href=&quot;http://www.microsoft.com/microsoft-band/en-us?ocid=SEM_google_&quot; target=&quot;_blank&quot;&gt;Microsoft Band&lt;/a&gt;&amp;nbsp;smart watch that is specifically advertised as a way to stop technology from massively disrupting your everyday life. They&#39;ve built a new OS shared between a desktop, tablet, and phone (although only the &quot;new&quot; apps work on all three). The problem with their software right now? Nobody writes apps for them.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Because nobody writes apps for them, nobody wants to buy them. Because nobody wants to buy them, nobody writes apps for them.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Wait, doesn&#39;t this sound familiar?&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h2&gt;
Where do we go from here?&lt;/h2&gt;
&lt;div&gt;
I&#39;ve always loved Apple products, but I&#39;m not an Apple fanboy. Apple currently has the best PCs on the market. They have the best Smartphones on the market as well. Microsoft is catching up quickly, and they&#39;ve already developed a superior OS, it&#39;s just not quite ready for prime-time.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The concepts are there, the ideas are there, but Microsoft needs to execute as well as Apple did back in the 90s. They need to encourage people to Think Different. The next time you&#39;re thinking about dropping $650 on an iPhone or Android (and yes, you&#39;re really paying $650 despite what your carrier tells you), take a closer look at the $150 Windows phone instead.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
As for me? I have no plans to switch my desktop to Windows unless they also embrace Unix. I&#39;m a coder, and I use the terminal in my every day life. We develop iPhone apps because that&#39;s where the money (and users) are at.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
However, my next phone, in about a year or two, will most likely NOT be an iPhone.&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://blog.coredumped.org/feeds/1073665338009796689/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/301169258518998120/1073665338009796689' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/301169258518998120/posts/default/1073665338009796689'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/301169258518998120/posts/default/1073665338009796689'/><link rel='alternate' type='text/html' href='http://blog.coredumped.org/2014/12/is-microsoft-new-apple.html' title='Is Microsoft the new Apple?'/><author><name>Chris</name><uri>http://www.blogger.com/profile/04068315333804202241</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-301169258518998120.post-6315953068455446674</id><published>2014-12-03T09:05:00.003-08:00</published><updated>2014-12-03T09:05:27.490-08:00</updated><title type='text'>Logentries - A different kind of Logging service</title><content type='html'>&lt;div&gt;
&lt;i&gt;&lt;b&gt;NOTE:&amp;nbsp;&lt;/b&gt;I originally reviewed Logentries &lt;a href=&quot;http://www.theserverside.com/feature/Log-aggregation-technology-roundup-Making-the-most-of-application-logging&quot; target=&quot;_blank&quot;&gt;in a post I did for TheServerSide.com&lt;/a&gt;. In it I had confused this with another logging service I had checked out which was an Application-level logger only. Logentries does accept logs from Syslog&lt;/i&gt;.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;a href=&quot;https://logentries.com/&quot; target=&quot;_blank&quot;&gt;Logentries&lt;/a&gt; was actually a recommendation to me after I wrote a blog post about our search for log services. After checking it out for a little while, I realized pretty quickly that the service was not for us. Log entries has a very unique approach to logging, both for Applications and Systems. Instead of deciding what to SEND to Logentries, you have to decide what to keep Searchable in Logentries.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
That makes for a very unique approach to logs. With their new Unlimited logging service, you can send as much data as you can produce, from as many servers as you have, and still only pay for what you actually process and index. That means if you want to send all your debug logs, but you don’t need to make them searchable except for that one period of time where you had an issue, you can do that.&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;b&gt;Pros&lt;/b&gt;:&lt;/div&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Lots of features (live-tail, alerting, etc)&lt;/li&gt;
&lt;li&gt;Send everything, index what you need&lt;/li&gt;
&lt;li&gt;“Unlimited Logging”&lt;/li&gt;
&lt;li&gt;Parse your logs how you want them&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;b&gt;Cons&lt;/b&gt;:&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Longer initial setup to parser your logs&lt;/li&gt;
&lt;li&gt;Need to tell it what you want to index&lt;/li&gt;
&lt;li&gt;Expensive depending on how much you want to index&lt;/li&gt;
&lt;/ul&gt;
</content><link rel='replies' type='application/atom+xml' href='http://blog.coredumped.org/feeds/6315953068455446674/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/301169258518998120/6315953068455446674' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/301169258518998120/posts/default/6315953068455446674'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/301169258518998120/posts/default/6315953068455446674'/><link rel='alternate' type='text/html' href='http://blog.coredumped.org/2014/12/logentries-different-kind-of-logging.html' title='Logentries - A different kind of Logging service'/><author><name>Chris</name><uri>http://www.blogger.com/profile/04068315333804202241</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-301169258518998120.post-7810718462615905118</id><published>2014-07-29T09:51:00.001-07:00</published><updated>2014-07-29T09:52:26.754-07:00</updated><title type='text'>Algolia understands Service</title><content type='html'>&lt;a href=&quot;http://blog.coredumped.org/2014/07/saas-service-is-important.html&quot; target=&quot;_blank&quot;&gt;The final &quot;S&quot; in SaaS is important&lt;/a&gt;. Sometimes the difference between two products can be that Service. In &lt;a href=&quot;https://www.algolia.com/&quot; target=&quot;_blank&quot;&gt;Algolia&#39;s&lt;/a&gt; case, they screwed up. They made a mistake that caused them to lose all of our documents in one of our indexes. Within a few minutes of contacting them, they had figured out what happened, and were working to correct it. Unfortunately they couldn&#39;t restore our lost documents, and they felt very bad for this happening.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
The Contract doesn&#39;t matter&lt;/h3&gt;
&lt;br /&gt;
Despite not having an official SLA with them, they knew that we were a customer, and one they wanted to treat right. They didn&#39;t point to a document and say &quot;well the service was only down for 1% of the time, so we&#39;re only going to give you back 5% of your bill&quot;. They are a small company, with a great product, and a fast-paced innovative team. They didn&#39;t hide behind an SLA, they specifically went above and beyond to make sure we were &lt;i&gt;happy&lt;/i&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Algolia owned up to the mistake.&lt;/h3&gt;
We all make mistakes, and they owned up to it, &lt;i&gt;and reimbursed our entire bill&lt;/i&gt;&amp;nbsp;for the month. They admitted it was their fault, and they were willing to do anything and everything to apologize and minimize the impact on us.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Algolia understands customer relations&amp;nbsp;&lt;/h3&gt;
Algolia Cares, unlike Splunk. They responded quickly, found the problem, and gave me steps to correct it, as well as their assurances that they have implemented test cases to prevent it from happening again. It wasn&#39;t catastrophic, our systems didn&#39;t go down because of it, but it did inconvenience us, and they were well aware of it.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Happy customers are repeat customers&lt;/h3&gt;
&lt;div&gt;
I&#39;m incredibly happy to see &lt;a href=&quot;https://www.algolia.com/&quot; target=&quot;_blank&quot;&gt;Algolia&lt;/a&gt; spend so much time making sure we feel satisfied with the service. They&#39;re constantly improving things and taking our feedback, and giving us features that we said we&#39;d like to see. They&#39;re keeping us in the loop, and when something bad happens they fix it.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
If you need a distributed search system, I strongly suggest &lt;a href=&quot;https://www.algolia.com/&quot; target=&quot;_blank&quot;&gt;Algolia&lt;/a&gt;. It&#39;s fast, the service is great, and the system is incredibly reliable. We&#39;ve had only a few issues over the past few months we&#39;ve been using it, and none of it was true downtime. They looked at our specific use case and have made improvements to their backend systems to make sure our system runs fast, not told us to re-do how we use the system to make it run fast.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
They take the initiative to make the system work the way &lt;i&gt;we&lt;/i&gt;&amp;nbsp;want it to. They don&#39;t force you to use something they&#39;ve structured for a specific purpose.&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.coredumped.org/feeds/7810718462615905118/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/301169258518998120/7810718462615905118' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/301169258518998120/posts/default/7810718462615905118'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/301169258518998120/posts/default/7810718462615905118'/><link rel='alternate' type='text/html' href='http://blog.coredumped.org/2014/07/algolia-understands-service.html' title='Algolia understands Service'/><author><name>Chris</name><uri>http://www.blogger.com/profile/04068315333804202241</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>