Continuing my last post about combining AWS Cognito with EvaporateJS to upload to S3, we’ll use S3 policies to isolate Cognito users into subdirectories of the S3 bucket.
My team recently completed a challenging 5-month product build that integrates with many Amazon Web Services (AWS) features. We had the opportunity to use some new services, namely AWS Cognito, which forced us to pioneer new solutions more than a typical project. First up: calculating AWS v4 signatures client-side to integrate EvaporateJS with AWS Cognito.
I’ve created a tool at https://www.wimpyprogrammer.com/conditional-parser/ for analyzing conditional expressions. Here’s the story of what inspired it.
When it comes to source code control I’m a purist: I avoid storing any derived files (ex. generated CSS) or third-party code. So when I started using PuPHPet to generate Vagrant and Puppet configurations, I was dismayed by the gigantic
/puphpet/puppet/modules directory. 3,000 files totaling 5 MB?! There must be a better way.
I previously shared my experience using PuPHPet to host a Linux VM on my Windows computer for MEAN stack development. Since then I’ve made some improvements to the startup script I use to overcome Windows’s 260 character path limit, which
bower easily exceed.
During Thanksgiving Break I played the card game War with my girlfriend and remembered how wonderfully mindless it is. Because there’s no strategy or decision-making, it was feasible to write a program to play the game. Once I could simulate one game, I could simulate several and collect some statistics.
Lately I’ve been playing with Vagrant and Puppet to create virtual machines for local MEAN stack development. I quickly learned that hosting a Linux VM on a Windows host is tricky. Let’s look at the challenges and workarounds for them.
In a KnockoutJS custom binding, you may want to retrieve the name of the bound property. This usually isn’t necessary; you can reference the
valueAccessor parameter to get the bound data without knowing the property’s name. But a recent project raised the need.
The other day while working on a legacy Microsoft Access database I was reminded of how bizarre Access can be. When I ran the following query:
SELECT * FROM ([Authors]
INNER JOIN [Publications]
ON [Authors].id = Str([Publications].[authors].VALUE))
WHERE ( [Publications].[date] BETWEEN [Begin Date] AND [End Date] )
I received a peculiar error:
The SQL statement could not be executed because it contains ambiguous outer joins. To force one of the joins to be performed first, create a separate query that performs the first join and then include that query in your SQL statement.
For a query with no outer joins, this was terribly unhelpful.