Avatar
🙀

Organizations

ads amazon announcements apple articles asian stuff aws azure bio bug certification cloud code computers computing current reads dev development devops devsecops election entertainment eu exercise log fact family friends gaming gcp good reads google hard news home automation icloud immigration ipad leadership life linux mac macos macworld 2008 macworld 2009 management microsoft mobile movie reviews movies music reviews musings news opinion overwatch personal politics predictions privacy productivity programming reinvent safari security siri site software stupid people sysadmin sysadmining tech technology terraform things i hate tips tricks tv uncategorized web windows work wwdc wwdc 2007 wwdc 2009 .net framework 2007 2011 2012 a place to grow academy award active directory address book ads adsense aetna alabama alexa alexlindsay amazon americanization analogy announcements aol apple apple mail apple worldwide developers conference apple-watch applescript architecture art articles arts asia asian automation aws azure backup banks beijing bes beta bio birthdays blackberry blog blogging blood pressure blue screen of death boot camp bots browser bsod bug bunbun business calconnect california calorie career certifications ces chat child china chris pirillo christian bale christmas chrome ci/cd circus circuses cirque du soleil cloud cloudformation cnn code coffee coffee and tea coffeemaker collaboration command line interface comments computers computing conditions and diseases cool coronavirus covid-19 credit customer service dallas danny elfman dark ages dark knight data center database databases datarecovery day day job death delegate design dev developer development devops devsecops diet directv disaster dish network dishnetwork domain controller dr. horrible's sing-along blog dragon con dreams drobo dropbox dvd e-mail eating elastic beanstalk election electronic electronics email enterprise software entertainment entertainment software rating board esrb evolution exchange exchange 2003 exchange 2007 exchange management shell excitement expatriate life facebook facetime facts family faqs help and tutorials federal contractor felicia day file system permissions files film film director finance finder firefox fish fix font size food freaky friends funny gameofthrones games gaming garageband garmin gene github good reads google google adsense google cloud googlereader govcloud government gripe gross growl habits haha handhelds hard disk drive hard drives hard news hardware health health care health insurance heart disease helena bonham carter hmmmm holidays home home automation homekit hong kong howto htaccess html human rights hypertension ibm icloud ideas ilife im imessage immunization imovie india infrastructure as code injury install insurance internet explorer internet kills you internet meme ios ipad ipados iphone iphone 3g iphoto iso 8601 isueyou it itunes iweb iwork j. j. abrams jack garman japan jason calacanis java jeffrey rosado jj abrams job jobs john c. dvorak john dvorak joss whedon kate capshaw keynote kick killme kirk kiss knology korea l2tp las vegas nevada lcd leadership legends leo laporte life link linux linux windows zdnet lion looney tunes lord of the rings lync m1 mac mac mini mac os mac os x mac pro macbook macbreak macintosh maclemon macos macworld macworld 2009 macworld conference & expo macworld keynote mail management manager martial arts mayhem mcg medical medicine mental-health metro microsoft microsoft exchange server microsoft sharepoint microsoft sql server microsoft windows microsoft word miscellaneous mobile mobile me mobile phone mobileme moon bloodgood motion picture association of america film rating system movie theater movies moving on msn msnbc music musings mysql narcolepsy nasa nature netiq netnewswire networks new media new orleans new york city new-year news news media technology newsgator nokia novell office office 2007 oh god please save me old-computing olympic games olympics on the web online online chat online media open door policy open source operating system operating systems opinion os x outlook overwatch parent paul thurrott people's republic of china personal philip w. schiller philschiller phone physics pixar plasma podcast politics predictions privacy productivity programming programs raid rant rds rebuild recession recipient update policy red hat enterprise linux reinvent replication resolutions ribbon ridiculous rim robert scoble rss rus safari sam worthington san francisco san francisco california satire scary scc schadenfreude science fiction sea seagate seagate technology search search engines security security question sequels server service-oriented architecture sex sharepoint sharks ship simple mail transfer protocol siri site skype sleep sleep apnea sleep disorders smartphone smartphones snoring snow leopard social social network society and culture software space space camp spam spambots squid standard raid levels star trek steam steve jobs stickam storage story stupid stupid people sucks superduper suse linux distributions syadmining sysadmin sysadmining system administration system center operations manager taekwondo talk radio team tech technology television television channel television program terminator salvation terraform the web things i hate this week in tech thoughts thurrott time time machine tips tkd tony maro tools tracking trade shows travel travelogues tricks true trump tv tweaking twitter ubuntu united states user user account control user interface ux video videotelephony virus vpn wagon watch out web web 2.0 web browser web page web search query web service website weight loss weird whatilearned wii windows windows 7 windows 98 windows live writer windows powershell windows server 2008 windows update windows vista windows xp windows8 wordpress work worldwide developers conference writing wtf wwdc xml yammer youtube zelle
  • WARNING: Unfortunately negative post.

    This has been an interesting year in the Appleverse. iOS 13, iPadOS and macOS Catalina were all dropped on us. This new software “regime” has been quite the challenge for me.

    iOS 13 and iPadOS haven’t been that troubling. They generally work and do what they promised to do. I did find it curious that iOS 13.1, 13.1.1 and 13.1.2 all dropped in pretty rapid succession. That’s usually a bad sign that things weren’t up to standards and had to go through some quick resolution. There were either fixes or outright removals to get things out the door. I don’t like it when that happens, but I get it. I’m glad they stay on top of things well enough.

    Catalina and Apple TV on the other hand… have been a complete shitshow.

    Update: I resolved the Google Chrome issue. If you’re just interested in the resolution, please go here.

    Apple Mac Computers Musings Created Thu, 10 Oct 2019 10:53:12 -0500
  • Did you create a multi-tier Elastic Beanstalk deployment? Did you tie it to CodePipeline to deploy out of Github? Has it been working well until just recently?

    …did you accidentally leave RDS attached to your worker tier?

    This post is for you.

    I built an Elastic Beanstalk for a customer with those characteristics. It’s been working great for about a year, until suddenly… the developer of the application reports that he’s no longer able to deploy his code changes. It keeps failing and rolling back all of the changes to the last known good state, which includes older versions of his code. This was bad news for everyone because we had a Monday-morning deadline to demo code changes to a new customer.

    Sunday morning offered me a chance to sit and focus on this. I’ve been trying to understand this problem for a few days. It looks like I was finally able to understand the issue after some focus and coffee.

    First, let’s cover what was actually happening. When the developer pushed his code updates through CodePipeline, Elastic Beanstalk was working through its “magic” (cough) to update the config to its “known good state” (which was wrong) and failed to apply the changes because of CloudFormation problems. This triggered a rollback on CloudFormation, CodePipeline, and Elastic Beanstalk config changes. Hence the failure.

    How did it all get out of whack?

    There were several mistakes committed, most of them on my part. Some of them are just problems with Elastic Beanstalk itself. But I’ll make the no-no list:

    1. Don’t let Elastic Beanstalk manage your RDS instance. Remove all references to RDS in all tiers before you build your RDS instance. Even AWS tells you to not to do this. I missed the one in the worker tier.

    2. If you proceed forward with RDS tied to your EB, do NOT use the RDS console to make any changes to the RDS instance. EB won’t know about the changes and will get really angry when they don’t match. In our case, we did some performance testing and modified the RDS instance size from db.t2.micro to db.m4.large. We also changed the storage setting from 20gb to 100gb. We made those changes in the RDS console and not the EB console. Don’t do that.

    3. You should change one setting in the RDS console. Turn off automatic version upgrade. In our case, RDS was upgrading the minor version of the database and once again, EB got angry. Worse yet, you can’t change the minor version in EB’s console. It’s locked. That’s EB’s fault. But whatever.

    Those three items led to a huge bag of fail whenever our developer pushed changes. Elastic Beanstalk would initiate changes, but see that RDS’ configuration was out of whack from its understanding. It would fail and roll everything back.

    But wait - there’s more!

    Elastic Beanstalk was also using some very old CloudFormation to make changes to the RDS instance. It was still using DBSecurityGroups, which apparently is illegal to use now… at least for our case. We were using postgres and minor version 9.6.6. It looks like the RDS team has moved on from DBSecurityGroups and now enforces the use of VPC Security Groups. Therefore, any changes to RDS would completely fail with the error:

    Updating RDS database named: <instance> failed Reason: DB Security Groups can no longer be associated with this DB Instance. Use VPC Security Groups instead.

    Ouch.

    How do you fix all of this mess?

    Let’s go over how Elastic Beanstalk actually works. I’ll be describing some of the simple concepts that are covered in documentation on the AWS site. Bookmark it and keep it handy.

    First thing’s first. You need to understand that Elastic Beanstalk is really driven by a simple YAML file. This YAML file is specific to the “environment”, which is a child of the “Application” in Elastic Beanstalk. This always confuses me because I think of an “Environment” as being a place to put an “Application,” but in Elastic Beanstalk it’s backwards of how I think. AWS has a pretty good document on how you can look at this YAML file and see what’s going on.

    In this case, I was able to save the configuration as described in the AWS document. I then visited the S3 bucket and was able to see a few things that was making my life difficult. There was also a clue left in this document about how EB was driving changes to the RDS instance via CloudFormation. I knew this was happening. If you’re using Elastic Beanstalk, take a few minutes to go look at your CloudFormation console. You’ll see a template in there - one for each EB “environment” you have deployed. The top of your EB environment dashboard has an “environment ID” displayed in a very small font. This environment ID corresponds to the CloudFormation template ID in the CloudFormation console. You can see the nitty-gritty of what it’s trying to do in there.

    But Elastic Beanstalk is coughing up some invalid CloudFormation. How do I know? That security group error that was coming up is actually coming out of CloudFormation. I can see the error event in there. CloudFormation is the service that actually triggers the rollback. CloudFormation and RDS is enforcing the change away from DBSecurityGroups to VPCSecurityGroups. But when Elastic Beanstalk creates the CloudFormation template to initiate the change, it uses DBSecurityGroups.

    I used one troubleshooting session to manually fix the CloudFormation JSON that Elastic Beanstalk is spitting out. I pushed it through by hand and it worked. I made the changes to the security groups in the way that CloudFormation and RDS expect - however, if I initiated a change through Elastic Beanstalk or the developer pushed a code update, it would fail with invalid CloudFormation once again.

    I’ll take a quick break to break down what’s happening here. When you make a change in Elastic Beanstalk, my new understanding is that this happens:

    Elastic Beanstalk console writes new YAML config file to S3 –> Elastic Beanstalk parses the config file and decides what changes should be made –> Elastic Beanstalk generates a CloudFormation JSON template –> Elastic Beanstalk saves the CloudFormation JSON to S3 –> Elastic Beanstalk pokes CloudFormation and asks it to update –> CloudFormation updates… if a failure is encountered, it rolls back and tells Elastic Beanstalk that everything is hosed –> Elastic Beanstalk rolls back the version of code that was deployed to a known good state.

    Now I understand the root cause here. RDS made a change to enforce the security group update. Elastic Beanstalk can’t seem to figure that out.

    Here’s how to resolve this.

    Look at the AWS documentation on Elastic Beanstalk’s config above. Follow their steps to save the configuration file from the console. Then, get your favorite code application out. Download the file and manipulate it by hand.

    I changed the RDS properties to reflect reality. EB still thought it was postgres, version 9.6.2, on a db.t2.micro with 20gb of storage. I updated these properties to reality.

    Then, I saw it. At the bottom of the file, there is a block of YAML that tells Elastic Beanstalk where to pick up the CloudFormation JSON and feed parameters. The default value was:

    Extensions:
     RDS.EBConsoleSnippet:
     Order: null
     SourceLocation: https://s3.amazonaws.com/elasticbeanstalk-env-resources-us-east-1/eb_snippets/rds/rds.json
    

    Take a look at that URL. Go ahead. I’ll wait.

    See it?

    It’s the bad CloudFormation template.

    How did I resolve this? Well, I took that template and downloaded it. I modified it in my code editor to change the DBSecurityGroup resources into VPC Security Group resources. I had to manually add the SecurityGroupIngress information too, but because I speak CloudFormation this wasn’t too hard. It’s cheating a little bit, but not a big deal.

    I created a new S3 bucket and uploaded my new CloudFormation JSON template into that bucket. Then, I revisited this YAML config and changed the URL to point to my new private copy of the CloudFormation template.

    Go back to the Elastic Beanstalk console and “load” the configuration template and wham, it worked. Everything was fine.

    Now I know how Elastic Beanstalk really works, and I figured out some super advanced ways to manipulate it to my bidding.

    I hope this helps you understand Elastic Beanstalk a little more - it certainly helped me. Now I know how to trick Elastic Beanstalk into working if it hoses up again.

    Since it’s working, turn off minor version upgrade in RDS to prevent this from happening, then use your AWS support plan to tell them that Elastic Beanstalk has a bug with CloudFormation and RDS security groups :)

    Happy cloud days.

    AWS Cloud Code Elastic Beanstalk RDS Created Sun, 20 May 2018 12:19:22 -0600
  • I just got a note that Amazon API Gateway is now available in AWS GovCloud. This makes things more interesting for GovCloud for sure, but it’s just a minor stepping stone. Remember, just because it’s in GovCloud doesn’t mean it’s FedRAMP’d (even though it probably is).

    AWS Cloud GovCloud Government Software Created Fri, 04 Aug 2017 12:14:34 -0600
  • I must really be out of the loop. I had no idea Microsoft bought SwiftKey. Anyway, they are killing the Windows Phone keyboard for IOS and focusing exclusively on SwiftKey.

    When Microsoft does things that makes sense, I’m always surprised. When they do things that do not make sense (like beefing Skype for the iPhone) I am rarely surprised.

    Microsoft’s Windows Phone keyboard for the iPhone is dead - The Verge

    iOS iPhone Microsoft Software Created Mon, 31 Jul 2017 11:53:09 -0600
  • Microsoft will be killing off “Microsoft Paint” in the next release of Windows 10 (the so-called “Fall Creator’s Update”).

    This article on the Verge points out the various things that are being shed. Microsoft Paint seems to be the most significant user-facing thing, but I can imagine some enterprises will have difficulty with other changes.

    Microsoft System administration Windows Created Mon, 24 Jul 2017 07:03:17 +0000
  • Be careful when you’re working with CloudFormation in the AWS GovCloud region. Almost every code snippet available on the Internet refers to the public regions of AWS. If you’re making resources in GovCloud with a Cloudformation templates, there are subtle differences.

    For instance, referring to an S3 bucket in a code snippet is:

    aws cloudformation govcloud Created Sat, 06 Aug 2016 16:36:28 +0000
  • Yesterday I sat for the most difficult IT certification test I’ve ever attempted – the AWS Solutions Architect Professional test.

    I passed it… by the skin of my teeth.

    I’ve essentially studied for this test for two years or more. I took the Solutions Architect Associate test two years ago and I’ve been involved with AWS projects ever since. Actually I was involved in AWS projects since before that test.

    aws certifications Created Wed, 06 Jul 2016 13:22:34 +0000
  • Holy clusterfuck Batman, get your shit together Origin/EA. Trying to get my kids to play Battlefront with me on the Xbox is a nightmare.

    So far, this is the best guide I’ve come across. What a shitshow. Please fix this. Now we all have 200 billion accounts spread across all these damn networks. What a disaster.

    games Created Thu, 31 Dec 2015 18:05:26 +0000
  • I really think Microsoft Azure is screwed.

    It’ll still be around to power Microsoft’s backend services, but as a public offering to compete against AWS… it’s toast.

    Also… OneDrive… seriously, wtf?

    cloud Microsoft web Created Thu, 05 Nov 2015 17:58:12 +0000
  • Today (kind of on a lark) I drove to Chattanooga, TN to take the AWS solutions architect associate level test. I passed by the skin of my teeth.

    Decided to come to Hooter’s to chill out and have lunch before the drive home.

    Whew.

    See you cats at AWS re:invent in November.

    aws certifications web Created Thu, 18 Sep 2014 01:12:26 +0000
Next