Home
Books & Courses
All articles
About
AWS
What is the iam:PassRole permission in AWS IAM
AWS CDK best practice: include the region in the stack's ID
AppSync footgun: util.error does not work if called with non-string arguments
Finally, it's possible to host EC2 instances without paying the public IPv4 price using CloudFront VPC origins
Deployment circle with CloudFront and Terraform
How hard it is to disable an IAM user when it does something suspicious?
[Article] A first look into AWS's new Aurora DSQL database
My take on "How AWS needs to change"
[Article] CloudTrail's horrible developer experience
[Article] AWS management account starter pack
CloudFormation's ZipFile still does not support ESM imports
Fun fact: you can make an unsubscribable subscription to an SNS topic
[Article] How to auto-disable leaked IAM credentials
[Article] The slow evolution of AppSync RDS support
[Article] How Cognito User Pools work
[Article] How to use tagged templates in AppSync to send queries to RDS
[Article] DynamoDB basic operations
[Article] How to use CloudFront signed cookies to serve MPD or HLS videos
[Article] How to remove a resource before creating it with the CDK
[Article] The problems with implicit AWS resources
[Article] Stable S3 signed URLs
[Article] The effects of not maintaining consistency with DynamoDB
[Article] How to securely generate and store IAM Secret Access Keys with Terraform
[Article] How to return a static file with a CloudFront function
[Article] How to use KMS keys with CloudFront signed URLs
[Article] How to use CloudFront signed URLs
[Article] CloudFront function to remove part of the request path
[Article] Announcing: S3 and CloudFront Signed URLs first public release
[Article] How to use the AWS Lambda streaming response type
[Article] How to generate keys for CloudFront URL signing with Terraform
[Article] Terraform module to generate secret values and store in SSM Parameter Store
[Article] CloudFront function to support HTML5 History API
[Article] How to provide information about the backend environment to frontend clients
[Article] Let's build a simple MQTT echo on AWS IoT Core
[Article] Announcing: Building GraphQL APIs with AWS AppSync book finished
[Article] How to detect device connection and disconnection in AWS IoT Core
[Article] How to serve files from an AppSync API using S3 signed URLs
[Article] TLS certificates in IoT Core
[Article] How to implement file uploads to an AppSync API
[Article] Efficient multi-level pagination in GraphQL
[Article] First experiences with the new AppSync Javascript resolver runtime
[Article] How to use Topic Rules to react to MQTT messages in AWS IoT Core
[Article] How to generate IoT Core certificates with Terraform
[Article] Basic AWS IoT Core policy example and breakdown
[Article] How to connect to AWS IoT Core with MQTT.js
[Article] How to manage IoT Core resources with Terraform
[Article] The basic building blocks of AWS IoT Core
[Article] SNS to AppSync subscription
[Article] Getting started with the AWS JS SDK v3 included in the Node runtime
[Article] How to use AppSync enhanced subscription filtering
[Article] How to use SSM Parameter Store for sensitive inputs in Terraform
[Article] How to escape inputs in AppSync resolvers
[Article] What is the identity in the AppSync resolver context
[Article] How to invoke a mutation with AppSync's HTTP data source
[Article] How to migrate to CloudFront Origin Access Control from Origin Access Identity
[Article] How to interact with IoT Core shadows from AppSync
[Article] How to read values from SSM Parameter Store and Secrets Manager with AppSync HTTP data source
[Article] How to send notifications to SNS, SQS, and EventBridge from AppSync
[Article] Modeling common GraphQL patterns in DynamoDB
[Article] How to call API Gateway from AppSync with IAM authorization
[Article] How to call a protected external API using AppSync HTTP data source
[Article] Use the HTTP data source to interact with HTTP APIs directly from AppSync
[Article] How to use RDS as a Data Source for AppSync
[Article] Efficient filtering in DynamoDB
[Article] The surprising properties of DynamoDB pagination
[Article] How to run SQL scripts against the RDS Data API with Terraform
[Article] How to remove the RDS master user password from the Terraform state
[Article] How to set up Amazon RDS password rotation with Terraform
[Article] How to add a custom domain to an AppSync API
[Article] How to implement rate limiting for an AppSync API
[Article] How to use Lambda authorization with AppSync
[Article] How to configure Auth0 with AWS AppSync
[Article] Real-time data with AppSync subscriptions
[Article] Send notifications to a Telegram bot for events in an AWS account
[Article] Error handling in AppSync
[Article] Deploy a serverless Telegram bot to AWS using Terraform
[Article] How to use ES6 modules and top-level await in AWS Lambda
[Article] How to delay calling a Lambda function using Step Functions
[Article] How to implement access control in a GraphQL API
[Article] How to periodically call a Lambda function
[Article] How to use Cognito with AppSync
[Article] AppSync Cognito directives
[Article] Pipeline resolvers in AppSync
[Article] How to use DynamoDB with AppSync
[Article] How to use Lambda resolvers with AppSync
[Article] Anatomy of an AppSync resolver
[Article] How to maintain database consistency in DynamoDB
[Article] What are Resolvers in AppSync and how they work
[Article] Foreign key constraints in DynamoDB
[Article] AWS AppSync: Getting started
[Article] What is AWS AppSync
[Article] CloudFront cache problems and how to solve them
[Article] How to configure CloudFront for the HTML5 history API
[Article] How token revocation works in Cognito
[Article] How to use the refresh token with Cognito
[Article] How to secure the Cognito login flow with a state nonce and PKCE
[Article] AWS security case study: Vulnerable roles
[Article] How to add Cognito login to a website
[Article] AWS security case study: Unprotected logs
[Article] AWS security case study: Hardcoded credentials
[Article] Lambda development toolbox: Set environment variables locally
[Article] How authentication and authorization work in AWS
[Article] Lambda development toolbox: CLI logs watcher
[Article] Introducing: AWS IAM masterclass video course
[Article] How to use CloudFront Functions to change the origin request path
[Article] 9 tips for working with AWS IAM
[Article] How to use CloudFront Trusted Key Groups parameter and the trusted_key_group Terraform resource
[Article] AWS architecture icons in an npm package
[Article] How serverless cold starts change best practices
[Article] How to keep accurate counts in DynamoDB
[Article] AWS JS SDK v3 first impressions
[Article] How to fix the profile support in the AWS JS SDK v3
[Article] How to use cfn-init to set up EC2 instances with CloudFormation
[Article] EC2 VPC building blocks
[Article] How to properly implement unique constraints in DynamoDB
[Article] How to clear a DynamoDB table
[Article] How to use DynamoDB batch write with retrying and exponential backoff
[Article] My AWS wishlist
[Article] Encryption options for S3 objects
[Article] How to cache ssm.getParameter calls in a Lambda function
[Article] How to handle timeouts in Lambda functions
[Article] Use-cases for IAM roles
[Article] How to use OpenAPI with API Gateway REST APIs
[Article] AWS IAM deep dive: How roles work
[Article] How to use OpenAPI to deploy an API Gateway HTTP API
[Article] How to implement a Lambda backend based on OpenAPI
[Article] Interactive API documentation using Swagger UI deployed with Terraform
[Article] How to use a break-glass role for sensitive admin tasks
[Article] IAM policy evaluation logic explained with examples
[Article] AWS IAM deep dive: How the policy evaluation logic works
[Article] AWS IAM deep dive: How IAM users and groups work
[Article] Granularity levels in AWS IAM policies
[Article] The AWS account administrator's guide to MFA
[Article] How to manage IAM user passwords
[Article] How to use a custom domain with CloudFront and Route53
[Article] How to use a custom domain on CloudFront with Cloudflare-managed DNS
[Article] AWS IAM deep dive: Identity-based, and Resource-based policies
[Article] How to completely lock down an AWS account with a service control policy (SCP)
[Article] The consequences of memory allocation size for a Lambda function
[Article] Are S3 signed URLs secure?
[Article] How to use the aws_apigatewayv2_api to add an HTTP API to a Lambda function
[Article] Avoid excessive costs and save money with S3 storage classes
[Article] Easily run CLI commands as an AWS role with AWSudo
[Article] Comparing async Javascript functions and callbacks on AWS Lambda
[Article] Automatically schedule emails on MailChimp with RSS and AWS Lambda
[Article] How to manage Lambda log groups with Terraform
[Article] How to solve CORS problems when redirecting to S3 signed URLs
[Article] How to deploy a single-page application with Terraform
[Article] How to target subscribers in an SNS topic
[Article] How CloudFront solves CORS problems
[Article] How to setup CORS for Lambda Proxy integration
[Article] Seamless S3 encryption does not imply better security
[Article] Encryption in the cloud
[Article] How to reproduce a Lambda function's environment variables locally
[Article] How to define Lambda code with Terraform
[Article] How to use Lambda@Edge with Terraform
[Article] How to use API Gateway with CloudFront
[Article] How to route to multiple origins with CloudFront
[Article] AWS Config notifications with CloudWatch Events
[Article] How to use unique resource names with Terraform
[Article] How to use the AWS SQS CLI to receive messages
[Article] How to paginate the AWS JS SDK using async generators
[Article] How to clean up Lambda logs
[Article] Differences between PUT and POST S3 signed URLs
[Article] How to use S3 POST signed URLs
[Article] How to use S3 PUT signed URLs
[Article] Limit permissions with roles for signed URLs
[Article] How to get near-realtime logs for a Terraform-managed Lambda function
[Article] Cacheable S3 signed URLs
[Article] Why AWS access and secret keys should not be in the codebase
[Article] Why a multi-account setup is essential for secure systems
[Article] CloudFormation CLI workflows
[Article] How to check if your Reserved Instances are used
[Article] How Service Control Policies help to secure AWS accounts
[Article] AWS: How to query the available CPU credits for t2/t3 instances
[Article] AWS: How to limit Lambda and API Gateway scalability
[Article] AWS: Increase instance security by allowing SSH only from your IP
[Article] AWS: How to get notified on compromised credentials
[Article] Optimized SPA deployment CloudFormation template
[Article] Keep costs under control when using t3 instances
[Article] AWS: How to secure access keys with MFA
[Article] Managing EC2 servers at scale: Ansible and RunCommand
[Article] AWS: How to get notified on IAM user logins
[Article] AWS: How to get notified on root account login
[Article] The rocky path to delete an AWS Organizations member account
[Article] How to use the PhysicalResourceId for CloudFormation Custom Resources
[Article] Custom resources in CloudFormation templates: Lessons learned
[Article] How to manage S3 Objects in CloudFormation templates
[Article] How to manage custom CloudFormation resources with Lambda
[Article] The anatomy of a CloudFormation template with a simple Lambda function
[Article] Customizable monitoring script on AWS Lambda
[Article] How to secure different types of CloudFront origins
[Article] How Origin Access Identity works
[Article] The differences between S3 and CloudFront signed URLs
[Article] How to use S3 signed URLs with CloudFront
[Article] How CloudFront signed URLs work
[Article] How S3 Signed URLs work
[Article] Historical monitoring on AWS
Javascript
[Article] Hard-to-debug unhandled rejection cases
[Article] Intro to PureScript for TypeScript developers
[Article] How to generate an HTTPS certificate with node-forge
[Article] How to sign, verify, and encrypt JWTs in Node
[Article] Introducing: Async/await in Javascript video course
[Article] Do not use fs sync methods in Javascript, use fs.promises instead
[Article] How to avoid uncaught async errors in Javascript
[Article] Getting started with the Jest Javascript testing framework
[Article] What is the await statement in Javascript
[Article] 3 genius visual data extraction attacks in Javascript
[Article] How to implement a persistent file-based cache in Node.Js
[Article] The async lazy initializer pattern in Javascript
[Article] How to write a Webpack loader
[Article] How to convert between callbacks and Promises in Javascript
[Article] How to speed up Puppeteer scraping with parallelization
[Article] How to implement an exponential backoff retry strategy in Javascript
[Article] RxJS: How to make an ordered mergeMap operator
[Article] RxJS: How to use startWith with pairwise
[Article] RxJS: The differences between first(), take(1), and single()
[Article] What is the async disposer pattern in Javascript
[Article] How to cache ssm.getParameter calls in a Lambda function
[Article] How to serialize calls to an async function
[Article] How to handle timeouts in Lambda functions
[Article] How to add timeout to a Promise in Javascript
[Article] How to use async/await with postMessage
[Article] How to use async functions with gapi, the Google Drive client, and the file picker
[Article] Tips to debug NodeJS inside Docker
[Article] How to refactor a Promise chain to async functions
[Article] Secure tempfiles in NodeJS without dependencies
[Article] How to use async functions with Array.some and every in Javascript
[Article] How to use async functions with Array.filter in Javascript
[Article] How to use async functions with Array.forEach in Javascript
[Article] How to use async functions with Array.map in Javascript
[Article] How to use async functions with Array.reduce in Javascript
[Article] Asynchronous array functions in Javascript
[Article] How to lazy load and initialize elements using an Intersection Observer
[Article] How to integrate PlantUML into other software
[Article] Adding continuous rendering to the PlantUML server
[Article] How to paginate the AWS JS SDK using async generators
[Article] How to clean up Lambda logs
[Article] Why AWS access and secret keys should not be in the codebase
[Article] How S3 Signed URLs work
[Article] Best practices on how to work with collections in Javascript
[Article] What to expect when you decide to migrate from Javascript to Typescript
[Article] Introducing: Array#Extras email course
[Article] Reuse code with domain-specific steps in collection pipelines
[Article] The silver bullet of collection pipelines: Functional composition
[Article] Demystifying chaining in Javascript
[Article] Where Array#Extras fall short
[Article] Ditch for loops. Here is a case study to convince you
[Article] Better collection processing with collection pipelines
[Article] 2 cases where Babel fixes your code but it shouldn't
[Article] Generators and ImmutableJS
[Article] Generators in Javascript
[Article] Iterables in Javascript
[Article] Iterators in Javascript
[Article] Introducing: Weekly JS Tips & Tricks
[Article] Parallel Processing in JS
[Article] Simulating movement with ES6 generators
[Article] Infinite collections with ES6 generators
[Article] More readable Javascript without variables
[Article] Proper random numbers in Javascript
[Article] Dealing with async in React
[Article] The first steps from Grunt to Webpack
[Article] Custom CSS animations in React
[Article] Global listener patterns in React
[Article] React basics
[Article] Isolating scripts on a page
[Article] Historical monitoring on AWS
[Article] Accessing Google Drive in Javascript
[Article] Using Google auth in Javascript
[Article] Running LP optimisation from Javascript
AppSync
AppSync footgun: util.error does not work if called with non-string arguments
GraphQL tip: Only make fields required if they are present for all users
GraphQL tip: Have the subscription types contain all filterable fields on the top-level.
GraphQL non-nullable fields can lead to cascading null errors.
Apollo's subscribeToMore is the wrong abstraction
[Article] The slow evolution of AppSync RDS support
[Article] How to use tagged templates in AppSync to send queries to RDS
[Article] Announcing: Building GraphQL APIs with AWS AppSync book finished
[Article] How to serve files from an AppSync API using S3 signed URLs
[Article] How to implement file uploads to an AppSync API
[Article] Efficient multi-level pagination in GraphQL
[Article] First experiences with the new AppSync Javascript resolver runtime
[Article] SNS to AppSync subscription
[Article] How to use AppSync enhanced subscription filtering
[Article] How to resolve interfaces and union types in AppSync
[Article] How to escape inputs in AppSync resolvers
[Article] What is the identity in the AppSync resolver context
[Article] How to invoke a mutation with AppSync's HTTP data source
[Article] How to interact with IoT Core shadows from AppSync
[Article] How to read values from SSM Parameter Store and Secrets Manager with AppSync HTTP data source
[Article] How to send notifications to SNS, SQS, and EventBridge from AppSync
[Article] Modeling common GraphQL patterns in DynamoDB
[Article] How to call API Gateway from AppSync with IAM authorization
[Article] How to call a protected external API using AppSync HTTP data source
[Article] Use the HTTP data source to interact with HTTP APIs directly from AppSync
[Article] How to use RDS as a Data Source for AppSync
[Article] How to resolve complex types with AppSync resolvers
[Article] How IAM permissions work with AppSync
[Article] How to add a custom domain to an AppSync API
[Article] How to implement rate limiting for an AppSync API
[Article] How to use Lambda authorization with AppSync
[Article] How to configure Auth0 with AWS AppSync
[Article] Real-time data with AppSync subscriptions
[Article] Error handling in AppSync
[Article] How to implement access control in a GraphQL API
[Article] How to use Cognito with AppSync
[Article] AppSync Cognito directives
[Article] Pipeline resolvers in AppSync
[Article] How to use DynamoDB with AppSync
[Article] How to use Lambda resolvers with AppSync
[Article] Anatomy of an AppSync resolver
[Article] What are Resolvers in AppSync and how they work
[Article] AWS AppSync: Getting started
[Article] What is AWS AppSync
Security
[Article] AWS management account starter pack
[Article] How to auto-disable leaked IAM credentials
[Article] Fooled by encryption
[Article] How TOTP works
[Article] How to hash passwords and when not to
[Article] How to secure the Cognito login flow with a state nonce and PKCE
[Article] AWS security case study: Vulnerable roles
[Article] AWS security case study: Unprotected logs
[Article] AWS security case study: Hardcoded credentials
[Article] 3 genius visual data extraction attacks in Javascript
[Article] What is end-to-end encryption and why it's such a confusing term
[Article] What is the principle of least privilege and why it's such a hard thing to achieve
[Article] How Firefox's HTTPS-only mode solves the first insecure request problem
[Article] AWS IAM deep dive: Identity-based, and Resource-based policies
[Article] How to completely lock down an AWS account with a service control policy (SCP)
[Article] Are S3 signed URLs secure?
[Article] What is the optimal password length
[Article] How to setup CORS for Lambda Proxy integration
[Article] Is Access-Control-Allow-Origin: * insecure?
[Article] Seamless S3 encryption does not imply better security
[Article] Encryption in the cloud
[Article] Why a multi-account setup is essential for secure systems
[Article] How Service Control Policies help to secure AWS accounts
[Article] AWS: Increase instance security by allowing SSH only from your IP
[Article] AWS: How to get notified on compromised credentials
[Article] AWS: How to secure access keys with MFA
[Article] AWS: How to get notified on IAM user logins
[Article] AWS: How to get notified on root account login
[Article] How to secure different types of CloudFront origins
[Article] How CloudFront signed URLs work
[Article] How I failed to implement CSP
[Article] How to securely check your LastPass vault against the Pwned Passwords database
[Article] Why certificate pinning with HPKP is a bad idea
[Article] HTTPS security best practices
CloudFront
Finally, it's possible to host EC2 instances without paying the public IPv4 price using CloudFront VPC origins
Deployment circle with CloudFront and Terraform
[Article] How to use CloudFront signed cookies to serve MPD or HLS videos
[Article] How to return a static file with a CloudFront function
[Article] How to use KMS keys with CloudFront signed URLs
[Article] How to use CloudFront signed URLs
[Article] CloudFront function to remove part of the request path
[Article] How to generate keys for CloudFront URL signing with Terraform
[Article] CloudFront function to support HTML5 History API
[Article] How to migrate to CloudFront Origin Access Control from Origin Access Identity
[Article] CloudFront cache problems and how to solve them
[Article] How to configure CloudFront for the HTML5 history API
[Article] Why use a single domain for the backend and the frontend
[Article] How to use CloudFront Functions to change the origin request path
[Article] How to use CloudFront Trusted Key Groups parameter and the trusted_key_group Terraform resource
[Article] How to debug CloudFront origin requests
[Article] How CloudFront determines the origin request URL
[Article] How CloudFront speeds up content delivery
[Article] How CloudFront routing works
[Article] How to use a custom domain with CloudFront and Route53
[Article] How to use a custom domain on CloudFront with Cloudflare-managed DNS
[Article] How to use the aws_apigatewayv2_api to add an HTTP API to a Lambda function
[Article] How CloudFront solves CORS problems
[Article] How to use Lambda@Edge with Terraform
[Article] How to use API Gateway with CloudFront
[Article] How to route to multiple origins with CloudFront
[Article] Optimized SPA deployment CloudFormation template
[Article] How to secure different types of CloudFront origins
[Article] How Origin Access Identity works
[Article] The differences between S3 and CloudFront signed URLs
[Article] How to use S3 signed URLs with CloudFront
[Article] How CloudFront signed URLs work
Java
[Article] New language features since Java 8 to 21
[Article] A categorized list of all Java and JVM features since JDK 8 to 21
[Article] Intro to Lucene
[Article] How to integrate with Elastic Stack via Logstash
[Article] How to integrate a containerized application with the Elastic Stack
[Article] Using external libraries in JShell
[Article] Prototyping with JShell
[Article] Working with structured data in Java
[Article] Two ways of skipping tests in Maven
[Article] Dependency Injection Boundaries
[Article] JUnit and Cucumber test reports based on source code and behavior
[Article] Effective debugging with breakpoints
[Article] Effective print debugging
[Article] Profile-based optimization techniques in the JVM
[Article] JVM JIT optimization techniques - part 2
[Article] JVM JIT optimization techniques
[Article] Using Java Generics to express variance of Collections and Functions
[Article] Detecting errors in the browser with Selenium
[Article] Getting started with OpenCV for Java on Ubuntu
[Article] Crazy Search Results in Eclipse for Multiple Module Maven Projects
[Article] Walkthrough for a TDD Kata in Eclipse
[Article] Automated tests with Eclipse using MoreUnit
[Article] Scott: detailed failure reports and hassle free assertions for Java tests
[Article] Calm assertions with Spock
[Article] Animated failure reports with Selenium and Cucumber
[Article] Log review guided by tests
[Article] Testing for undesired log output
[Article] Attached Maven tests with Cucumber
[Article] Running LP and IP optimisation from Java
Lambda
CloudFormation's ZipFile still does not support ESM imports
[Article] How to use the AWS Lambda streaming response type
[Article] Getting started with the AWS JS SDK v3 included in the Node runtime
[Article] Deploy a serverless Telegram bot to AWS using Terraform
[Article] How to use ES6 modules and top-level await in AWS Lambda
[Article] How to delay calling a Lambda function using Step Functions
[Article] How to periodically call a Lambda function
[Article] Lambda development toolbox: Set environment variables locally
[Article] Lambda development toolbox: CLI logs watcher
[Article] How serverless cold starts change best practices
[Article] How to cache ssm.getParameter calls in a Lambda function
[Article] How to handle timeouts in Lambda functions
[Article] How to implement a Lambda backend based on OpenAPI
[Article] The consequences of memory allocation size for a Lambda function
[Article] How to use the aws_apigatewayv2_api to add an HTTP API to a Lambda function
[Article] Comparing async Javascript functions and callbacks on AWS Lambda
[Article] Automatically schedule emails on MailChimp with RSS and AWS Lambda
[Article] How to manage Lambda log groups with Terraform
[Article] How to setup CORS for Lambda Proxy integration
[Article] How to reproduce a Lambda function's environment variables locally
[Article] How to define Lambda code with Terraform
[Article] How to use Lambda@Edge with Terraform
[Article] How to clean up Lambda logs
[Article] How to get near-realtime logs for a Terraform-managed Lambda function
[Article] AWS: How to limit Lambda and API Gateway scalability
[Article] Optimized SPA deployment CloudFormation template
[Article] How to manage S3 Objects in CloudFormation templates
[Article] The anatomy of a CloudFormation template with a simple Lambda function
[Article] Customizable monitoring script on AWS Lambda
Terraform
Deployment circle with CloudFront and Terraform
[Article] Stable S3 signed URLs
[Article] How to securely generate and store IAM Secret Access Keys with Terraform
[Article] How to use KMS keys with CloudFront signed URLs
[Article] How to generate keys for CloudFront URL signing with Terraform
[Article] Terraform module to generate secret values and store in SSM Parameter Store
[Article] How to use SSM Parameter Store for sensitive inputs in Terraform
[Article] How to run SQL scripts against the RDS Data API with Terraform
[Article] How to remove the RDS master user password from the Terraform state
[Article] How to set up Amazon RDS password rotation with Terraform
[Article] How to implement access control for a Telegram bot
[Article] How to run npm ci from Terraform
[Article] Interactive API documentation using Swagger UI deployed with Terraform
[Article] Automatically schedule emails on MailChimp with RSS and AWS Lambda
[Article] How to manage Lambda log groups with Terraform
[Article] How to solve CORS problems when redirecting to S3 signed URLs
[Article] How to deploy a single-page application with Terraform
[Article] How to run a build script with Terraform
[Article] How to reproduce a Lambda function's environment variables locally
[Article] How to define Lambda code with Terraform
[Article] How to use Lambda@Edge with Terraform
[Article] How to use API Gateway with CloudFront
[Article] How to route to multiple origins with CloudFront
[Article] How to use unique resource names with Terraform
[Article] How to get near-realtime logs for a Terraform-managed Lambda function
async/await
[Article] Hard-to-debug unhandled rejection cases
[Article] Introducing: Async/await in Javascript video course
[Article] Do not use fs sync methods in Javascript, use fs.promises instead
[Article] How to avoid uncaught async errors in Javascript
[Article] What is the await statement in Javascript
[Article] The async lazy initializer pattern in Javascript
[Article] How to convert between callbacks and Promises in Javascript
[Article] How to speed up Puppeteer scraping with parallelization
[Article] How to implement an exponential backoff retry strategy in Javascript
[Article] What is the async disposer pattern in Javascript
[Article] How to serialize calls to an async function
[Article] How to add timeout to a Promise in Javascript
[Article] How to use async/await with postMessage
[Article] How to use async functions with gapi, the Google Drive client, and the file picker
[Article] How to refactor a Promise chain to async functions
[Article] Comparing async Javascript functions and callbacks on AWS Lambda
[Article] How to use async functions with Array.some and every in Javascript
[Article] How to use async functions with Array.filter in Javascript
[Article] How to use async functions with Array.forEach in Javascript
[Article] How to use async functions with Array.map in Javascript
[Article] How to use async functions with Array.reduce in Javascript
[Article] Asynchronous array functions in Javascript
IAM
What is the iam:PassRole permission in AWS IAM
[Article] AWS management account starter pack
[Article] How to securely generate and store IAM Secret Access Keys with Terraform
[Article] How IAM permissions work with AppSync
[Article] How authentication and authorization work in AWS
[Article] Introducing: AWS IAM masterclass video course
[Article] 9 tips for working with AWS IAM
[Article] Use-cases for IAM roles
[Article] AWS IAM deep dive: How roles work
[Article] How to use a break-glass role for sensitive admin tasks
[Article] IAM policy evaluation logic explained with examples
[Article] AWS IAM deep dive: How the policy evaluation logic works
[Article] AWS IAM deep dive: How IAM users and groups work
[Article] Granularity levels in AWS IAM policies
[Article] The AWS account administrator's guide to MFA
[Article] How to manage IAM user passwords
[Article] AWS IAM deep dive: Identity-based, and Resource-based policies
[Article] Limit permissions with roles for signed URLs
[Article] AWS: How to secure access keys with MFA
Test
[Article] Getting started with the Jest Javascript testing framework
[Article] Testing Bash scripts with the Bats testing framework
[Article] Function tests in Bash and the errexit mode
[Article] How to mock in Bash tests
[Article] Unit testing Bash scripts
[Article] The need for an additional refactor phase in TDD
[Article] JUnit and Cucumber test reports based on source code and behavior
[Article] 3 Common Cucumber Mistakes You've Probably Made
[Article] Detecting errors in the browser with Selenium
[Article] Walkthrough for a TDD Kata in Eclipse
[Article] Automated tests with Eclipse using MoreUnit
[Article] Scott: detailed failure reports and hassle free assertions for Java tests
[Article] Calm assertions with Spock
[Article] Animated failure reports with Selenium and Cucumber
[Article] Log review guided by tests
[Article] Testing for undesired log output
[Article] Attached Maven tests with Cucumber
Webdev
[Article] Hardcoded assumptions
[Article] Intro to PureScript for TypeScript developers
[Article] Why use a single domain for the backend and the frontend
[Article] How to use SRI hashes to secure third-party dependencies
[Article] How to use async functions with gapi, the Google Drive client, and the file picker
[Article] Refresh the browser when a text appears on the terminal
[Article] Is Access-Control-Allow-Origin: * insecure?
[Article] Introducing: Array#Extras email course
[Article] Introducing: Weekly JS Tips & Tricks
[Article] Why Webpack 2's Tree Shaking is not as effective as you think
[Article] Getting started with Browserify
[Article] JSPM basics and review
[Article] Why Bower is still relevant
[Article] Frontend dependencies without tools
[Article] React basics
[Article] Static HTTP preview server using Docker
S3 signed URLs
[Article] Stable S3 signed URLs
[Article] Announcing: S3 and CloudFront Signed URLs first public release
[Article] How to serve files from an AppSync API using S3 signed URLs
[Article] How to implement file uploads to an AppSync API
[Article] Are S3 signed URLs secure?
[Article] How to solve CORS problems when redirecting to S3 signed URLs
[Article] Differences between PUT and POST S3 signed URLs
[Article] How to use S3 POST signed URLs
[Article] How to use S3 PUT signed URLs
[Article] Limit permissions with roles for signed URLs
[Article] Cacheable S3 signed URLs
[Article] The differences between S3 and CloudFront signed URLs
[Article] How to use S3 signed URLs with CloudFront
[Article] How S3 Signed URLs work
Vim
[Article] How to compare file revisions with fugitive.vim
[Article] Dive into Git history with fugitive.vim
[Article] Working with the system clipboard in Vim
[Article] Tips on window management in Vim
[Article] Use last-position-jump to recover context after reopening a file with Vim
[Article] Use Persistent Undo in Vim for maximum comfort
[Article] Never lose a change again: Undo branches in Vim
[Article] Copy-pasting in Vim without +clipboard
[Article] Managing Scala projects in Vim with Ag and Ctags
[Article] One year with Vim
[Article] 5 Productivity Power Tools for Software Development on Linux
[Article] Scala development in Vim
[Article] Why you should care about Vim
DynamoDB
[Article] DynamoDB basic operations
[Article] The effects of not maintaining consistency with DynamoDB
[Article] Modeling common GraphQL patterns in DynamoDB
[Article] Efficient filtering in DynamoDB
[Article] The surprising properties of DynamoDB pagination
[Article] How to use DynamoDB with AppSync
[Article] How to maintain database consistency in DynamoDB
[Article] Foreign key constraints in DynamoDB
[Article] How to keep accurate counts in DynamoDB
[Article] How to properly implement unique constraints in DynamoDB
[Article] How to clear a DynamoDB table
[Article] How to use DynamoDB batch write with retrying and exponential backoff
IoT
[Article] Let's build a simple MQTT echo on AWS IoT Core
[Article] How to detect device connection and disconnection in AWS IoT Core
[Article] TLS certificates in IoT Core
[Article] How to use Topic Rules to react to MQTT messages in AWS IoT Core
[Article] How to generate IoT Core certificates with Terraform
[Article] Basic AWS IoT Core policy example and breakdown
[Article] How to connect to AWS IoT Core with MQTT.js
[Article] How to manage IoT Core resources with Terraform
[Article] The basic building blocks of AWS IoT Core
[Article] How to interact with IoT Core shadows from AppSync
Bash
[Article] How to save entered values in Bash
[Article] Refresh the browser when a text appears on the terminal
[Article] Testing Bash scripts with the Bats testing framework
[Article] Function tests in Bash and the errexit mode
[Article] How to mock in Bash tests
[Article] Unit testing Bash scripts
[Article] Debugging Bash scripts
[Article] How to Bash and jq: generate statistics for a REST API
[Article] How to securely check your LastPass vault against the Pwned Passwords database
[Article] Deploying Docker images via SSH
CloudFormation
[Article] AWS management account starter pack
CloudFormation's ZipFile still does not support ESM imports
[Article] How to auto-disable leaked IAM credentials
[Article] How to use cfn-init to set up EC2 instances with CloudFormation
[Article] CloudFormation CLI workflows
[Article] Optimized SPA deployment CloudFormation template
[Article] How to use the PhysicalResourceId for CloudFormation Custom Resources
[Article] Custom resources in CloudFormation templates: Lessons learned
[Article] How to manage custom CloudFormation resources with Lambda
[Article] The anatomy of a CloudFormation template with a simple Lambda function
Docker
[Article] Tips to debug NodeJS inside Docker
[Article] Using Let's Encrypt with Supervisor
[Article] Supervisor with Docker: Lessons learned
[Article] Fully automated dockerized Let's Encrypt reverse proxy
[Article] Static HTTP preview server using Docker
[Article] Revisiting webapp performance on HTTP/2
[Article] Historical monitoring on AWS
[Article] Deploying Docker images via SSH
[Article] Quick and dirty way to build PhantomJS2 from source
Maven
[Article] Two ways of skipping tests in Maven
[Article] JUnit and Cucumber test reports based on source code and behavior
[Article] Crazy Search Results in Eclipse for Multiple Module Maven Projects
[Article] Scott: detailed failure reports and hassle free assertions for Java tests
[Article] Calm assertions with Spock
[Article] Animated failure reports with Selenium and Cucumber
[Article] Log review guided by tests
[Article] Testing for undesired log output
[Article] Attached Maven tests with Cucumber
Linux
[Article] How to write a simple systemd timer
[Article] Supervisor with Docker: Lessons learned
[Article] Copy-pasting in Vim without +clipboard
[Article] Managing Scala projects in Vim with Ag and Ctags
[Article] Lessons learned from using xmonad for a year
[Article] 5 Productivity Power Tools for Software Development on Linux
[Article] Scala development in Vim
[Article] Quick and dirty way to build PhantomJS2 from source
Cognito
[Article] How Cognito User Pools work
[Article] How to use Cognito with AppSync
[Article] AppSync Cognito directives
[Article] How token revocation works in Cognito
[Article] How to use the refresh token with Cognito
[Article] How to secure the Cognito login flow with a state nonce and PKCE
[Article] How to add Cognito login to a website
S3
[Article] Stable S3 signed URLs
[Article] Encryption options for S3 objects
[Article] How to route to an arbitrary S3 bucket website with Cloudflare Workers
[Article] How to add HTTPS for an S3 bucket website with Cloudflare
[Article] Avoid excessive costs and save money with S3 storage classes
[Article] Seamless S3 encryption does not imply better security
[Article] How to manage S3 Objects in CloudFormation templates
Let's Encrypt
[Article] How to use Let's Encrypt with Node.js and Express
[Article] Using Let's Encrypt with Supervisor
[Article] Let's Encrypt hooks use cases
[Article] When to use Let's Encrypt's webroot and standalone authorization
[Article] Let's Encrypt tips
[Article] Getting started with Let's Encrypt
[Article] Fully automated dockerized Let's Encrypt reverse proxy
Integration-test
[Article] JUnit and Cucumber test reports based on source code and behavior
[Article] 3 Common Cucumber Mistakes You've Probably Made
[Article] Detecting errors in the browser with Selenium
[Article] Animated failure reports with Selenium and Cucumber
[Article] Log review guided by tests
[Article] Testing for undesired log output
[Article] Attached Maven tests with Cucumber
GraphQL
GraphQL tip: Only make fields required if they are present for all users
GraphQL tip: Have the subscription types contain all filterable fields on the top-level.
GraphQL non-nullable fields can lead to cascading null errors.
Apollo's subscribeToMore is the wrong abstraction
[Article] How to resolve interfaces and union types in AppSync
[Article] How to resolve complex types with AppSync resolvers
[Article] What is AWS AppSync
API Gateway
[Article] How to call API Gateway from AppSync with IAM authorization
[Article] How to use OpenAPI with API Gateway REST APIs
[Article] How to use OpenAPI to deploy an API Gateway HTTP API
[Article] How to use the aws_apigatewayv2_api to add an HTTP API to a Lambda function
[Article] How to use API Gateway with CloudFront
[Article] AWS: How to limit Lambda and API Gateway scalability
Git
[Article] Git Tips and Tricks
[Article] How to compare file revisions with fugitive.vim
[Article] Dive into Git history with fugitive.vim
[Article] How to create a good Pull Request
[Article] 3 ways to set up author information in Git
[Article] Git to track local history, without a remote
Eclipse
[Article] Effective debugging with breakpoints
[Article] Effective print debugging
[Article] Getting started with OpenCV for Java on Ubuntu
[Article] Crazy Search Results in Eclipse for Multiple Module Maven Projects
[Article] Walkthrough for a TDD Kata in Eclipse
[Article] Automated tests with Eclipse using MoreUnit
Cucumber
[Article] JUnit and Cucumber test reports based on source code and behavior
[Article] 3 Common Cucumber Mistakes You've Probably Made
[Article] Detecting errors in the browser with Selenium
[Article] Animated failure reports with Selenium and Cucumber
[Article] Log review guided by tests
[Article] Attached Maven tests with Cucumber
RDS
[Article] How to use tagged templates in AppSync to send queries to RDS
[Article] How to use RDS as a Data Source for AppSync
[Article] How to run SQL scripts against the RDS Data API with Terraform
[Article] How to remove the RDS master user password from the Terraform state
[Article] How to set up Amazon RDS password rotation with Terraform
Telegram
[Article] How to call a protected external API using AppSync HTTP data source
[Article] The easiest way to set up a chat with your Telegram bot
[Article] How to implement access control for a Telegram bot
[Article] Send notifications to a Telegram bot for events in an AWS account
[Article] Deploy a serverless Telegram bot to AWS using Terraform
CLI
[Article] Lambda development toolbox: Set environment variables locally
[Article] Lambda development toolbox: CLI logs watcher
[Article] How to use the AWS SQS CLI to receive messages
[Article] How to get near-realtime logs for a Terraform-managed Lambda function
[Article] CloudFormation CLI workflows
Debugging
[Article] Debugging Bash scripts
[Article] Effective debugging with breakpoints
[Article] Effective print debugging
[Article] End-to-end manual verification
[Article] Listen to your code: Problem-solving techniques in programming
HTTPS
[Article] How to add HTTPS for an S3 bucket website with Cloudflare
[Article] How to handle mixed content with CSP
[Article] Why certificate pinning with HPKP is a bad idea
[Article] HTTPS security best practices
[Article] Fully automated dockerized Let's Encrypt reverse proxy
React
[Article] Dealing with async in React
[Article] The first steps from Grunt to Webpack
[Article] Custom CSS animations in React
[Article] Global listener patterns in React
[Article] React basics
CORS
[Article] How to solve CORS problems when redirecting to S3 signed URLs
[Article] How CloudFront solves CORS problems
[Article] How to setup CORS for Lambda Proxy integration
[Article] Is Access-Control-Allow-Origin: * insecure?
[Article] A simple proxy to circumvent the SOP
RxJS
[Article] How to speed up Puppeteer scraping with parallelization
[Article] RxJS: How to make an ordered mergeMap operator
[Article] RxJS: How to use startWith with pairwise
[Article] RxJS: The differences between first(), take(1), and single()
OpenAPI
[Article] How to use OpenAPI with API Gateway REST APIs
[Article] How to use OpenAPI to deploy an API Gateway HTTP API
[Article] How to implement a Lambda backend based on OpenAPI
[Article] Interactive API documentation using Swagger UI deployed with Terraform
DNS
[Article] How to test with a live domain name for free
[Article] How to use a custom domain with CloudFront and Route53
[Article] How to use a custom domain on CloudFront with Cloudflare-managed DNS
[Article] What is CNAME flattening and how it helps redirecting the apex domain
Cloudflare
[Article] How to use a custom domain on CloudFront with Cloudflare-managed DNS
[Article] What is CNAME flattening and how it helps redirecting the apex domain
[Article] How to route to an arbitrary S3 bucket website with Cloudflare Workers
[Article] How to add HTTPS for an S3 bucket website with Cloudflare
Typescript
[Article] Modern JavaScript library starter
[Article] Intro to PureScript for TypeScript developers
[Article] Getting started with the Jest Javascript testing framework
[Article] What to expect when you decide to migrate from Javascript to Typescript
generators
[Article] Generators and ImmutableJS
[Article] Generators in Javascript
[Article] Simulating movement with ES6 generators
[Article] Infinite collections with ES6 generators
JVM
[Article] A categorized list of all Java and JVM features since JDK 8 to 21
[Article] Profile-based optimization techniques in the JVM
[Article] JVM JIT optimization techniques - part 2
[Article] JVM JIT optimization techniques
Webpack
[Article] How to write a Webpack loader
[Article] Why Webpack 2's Tree Shaking is not as effective as you think
[Article] Parallel Processing in JS
[Article] The first steps from Grunt to Webpack
Node.js
[Article] How to sign, verify, and encrypt JWTs in Node
[Article] How to use Let's Encrypt with Node.js and Express
[Article] A simple proxy to circumvent the SOP
[Article] Detecting possibly duplicate Strings
NodeJs
[Article] Dataset preparation for training a neural text-to-speech model with Piper TTS
[Article] How to transfer binary data efficiently across worker threads in NodeJs
[Article] Using worker pools in NodeJs
Elastic Stack
[Article] Custom Aggregations in Logstash with the Ruby Filter Plugin
[Article] How to integrate with Elastic Stack via Logstash
[Article] How to integrate a containerized application with the Elastic Stack
Organizations
[Article] Why a multi-account setup is essential for secure systems
[Article] How Service Control Policies help to secure AWS accounts
[Article] The rocky path to delete an AWS Organizations member account
Performance
[Article] Profile-based optimization techniques in the JVM
[Article] JVM JIT optimization techniques - part 2
[Article] JVM JIT optimization techniques
JIT
[Article] Profile-based optimization techniques in the JVM
[Article] JVM JIT optimization techniques - part 2
[Article] JVM JIT optimization techniques
ES6
[Article] Simulating movement with ES6 generators
[Article] Infinite collections with ES6 generators
[Article] More readable Javascript without variables
commentary
[Article] A brief overview of hack.summit() 2016 (part 3)
[Article] A brief overview of hack.summit() 2016 (part 2)
[Article] A brief overview of hack.summit() 2016 (part 1)
hack.summit() 2016
[Article] A brief overview of hack.summit() 2016 (part 3)
[Article] A brief overview of hack.summit() 2016 (part 2)
[Article] A brief overview of hack.summit() 2016 (part 1)
TDD
[Article] The need for an additional refactor phase in TDD
[Article] Walkthrough for a TDD Kata in Eclipse
[Article] Automated tests with Eclipse using MoreUnit
gapi
[Article] How to use async functions with gapi, the Google Drive client, and the file picker
[Article] Accessing Google Drive in Javascript
[Article] Using Google auth in Javascript
Selenium
[Article] 3 Common Cucumber Mistakes You've Probably Made
[Article] Detecting errors in the browser with Selenium
[Article] Animated failure reports with Selenium and Cucumber
Logging
[Article] Detecting errors in the browser with Selenium
[Article] Log review guided by tests
[Article] Testing for undesired log output
CDK
AWS CDK best practice: include the region in the stack's ID
[Article] How to remove a resource before creating it with the CDK
[Article] The problems with implicit AWS resources
CloudTrail
How hard it is to disable an IAM user when it does something suspicious?
[Article] CloudTrail's horrible developer experience
[Article] AWS: How to get notified on compromised credentials
SNS
Fun fact: you can make an unsubscribable subscription to an SNS topic
[Article] SNS to AppSync subscription
[Article] How to target subscribers in an SNS topic
JavaScript
[Article] How to transfer binary data efficiently across worker threads in NodeJs
[Article] Using worker pools in NodeJs
Syncthing
[Article] How to monitor Syncthing
[Article] How Syncthing provides secure file syncing without sharing your files with a third party
Spring Boot
[Article] How to integrate with Elastic Stack via Logstash
[Article] How to integrate a containerized application with the Elastic Stack
CloudWatch
[Article] AWS Config notifications with CloudWatch Events
[Article] AWS: How to query the available CPU credits for t2/t3 instances
NPM
[Article] Modern JavaScript library starter
[Article] How to automate development tasks using NPX
Cost Optimizations
[Article] How to check if your Reserved Instances are used
[Article] Keep costs under control when using t3 instances
EC2
[Article] EC2 VPC building blocks
[Article] Keep costs under control when using t3 instances
MFA
[Article] The AWS account administrator's guide to MFA
[Article] AWS: How to secure access keys with MFA
Custom Resources
[Article] How to use the PhysicalResourceId for CloudFormation Custom Resources
[Article] Custom resources in CloudFormation templates: Lessons learned
CSP
[Article] How to handle mixed content with CSP
[Article] How I failed to implement CSP
Supervisor
[Article] Using Let's Encrypt with Supervisor
[Article] Supervisor with Docker: Lessons learned
IntelliJ IDEA
[Article] Effective debugging with breakpoints
[Article] Effective print debugging
Magento
[Article] Magento 2 - Programmatically recreate the missing Catalog Search index table
[Article] How to create a Theme Plugin for Magento
Dotfiles
[Article] Lessons learned from using xmonad for a year
[Article] 5 Productivity Power Tools for Software Development on Linux
xmonad
[Article] Lessons learned from using xmonad for a year
[Article] 5 Productivity Power Tools for Software Development on Linux
Management
[Article] A tale of two development competitions
[Article] Some thoughts on managing small development teams
Scott
[Article] JUnit and Cucumber test reports based on source code and behavior
[Article] Scott: detailed failure reports and hassle free assertions for Java tests
SOP
[Article] Isolating scripts on a page
[Article] A simple proxy to circumvent the SOP
Spock
[Article] Scott: detailed failure reports and hassle free assertions for Java tests
[Article] Calm assertions with Spock
Scala
[Article] Managing Scala projects in Vim with Ag and Ctags
[Article] Scala development in Vim
AngularJS
[Article] Accessing Google Drive in Javascript
[Article] Using Google auth in Javascript
Ruby
[Article] How to integrate PlantUML into other software
[Article] MathJax processing on the server-side
JSON
[Article] Working with structured data in Java
[Article] Efficient SQLite backup on Android
Backup Manager
[Article] Efficient SQLite backup on Android
[Article] Practical measurement of the Android Backup Manager
Android
[Article] Efficient SQLite backup on Android
[Article] Practical measurement of the Android Backup Manager
LP
[Article] Running LP optimisation from Javascript
[Article] Running LP and IP optimisation from Java
mathematics
[Article] Running LP optimisation from Javascript
[Article] Running LP and IP optimisation from Java
integration
[Article] Integrating Facebook Comment Count Sum
[Article] Integrating Facebook Comments
facebook
[Article] Integrating Facebook Comment Count Sum
[Article] Integrating Facebook Comments
Nix
A one-liner for getting the exact versions of applications
[Article] First experiences with Nix shell
VPC
Finally, it's possible to host EC2 instances without paying the public IPv4 price using CloudFront VPC origins
[Article] EC2 VPC building blocks
EventBridge
How hard it is to disable an IAM user when it does something suspicious?
[Article] CloudTrail's horrible developer experience
AI
Thoughts on unreliable computing
Thoughts on using AI for coding
Aurora
[Article] A first look into AWS's new Aurora DSQL database
TTS
[Article] Dataset preparation for training a neural text-to-speech model with Piper TTS
Courses
[Article] Introducing: subscriptions to books and courses
Books
[Article] Introducing: subscriptions to books and courses
KMS
[Article] How to use KMS keys with CloudFront signed URLs
Functional Programming
[Article] Intro to PureScript for TypeScript developers
PureScript
[Article] Intro to PureScript for TypeScript developers
TOTP
[Article] How TOTP works
Search
[Article] Intro to Lucene
Lucene
[Article] Intro to Lucene
WAF
[Article] How to implement rate limiting for an AppSync API
GCP
[Article] Intro to AppSheet
AppSheet
[Article] Intro to AppSheet
Ruby Filter Plugin
[Article] Custom Aggregations in Logstash with the Ruby Filter Plugin
Logstash
[Article] Custom Aggregations in Logstash with the Ruby Filter Plugin
Jest
[Article] Getting started with the Jest Javascript testing framework
SCP
[Article] How to completely lock down an AWS account with a service control policy (SCP)
melt
[Article] Generating a crossfaded slideshow video from images with ffmpeg and melt
ffmpeg
[Article] Generating a crossfaded slideshow video from images with ffmpeg and melt
Jekyll
[Article] How to change a blog's permalinks and not lose all organic traffic
jq
[Article] How to Bash and jq: generate statistics for a REST API
MailChimp
[Article] Automatically schedule emails on MailChimp with RSS and AWS Lambda
PlantUML
[Article] How to integrate PlantUML into other software
Config Rules
[Article] AWS Config notifications with CloudWatch Events
SQS
[Article] How to use the AWS SQS CLI to receive messages
SSH
[Article] AWS: Increase instance security by allowing SSH only from your IP
SSM
[Article] Managing EC2 servers at scale: Ansible and RunCommand
Ansible
[Article] Managing EC2 servers at scale: Ansible and RunCommand
Serverless
[Article] Customizable monitoring script on AWS Lambda
Pwned Passwords
[Article] How to securely check your LastPass vault against the Pwned Passwords database
LastPass
[Article] How to securely check your LastPass vault against the Pwned Passwords database
HPKP
[Article] Why certificate pinning with HPKP is a bad idea
Spring
[Article] Dependency Injection Boundaries
Dependency Injection
[Article] Dependency Injection Boundaries
Komodo
[Article] Effective print debugging
Babel
[Article] 2 cases where Babel fixes your code but it shouldn't
Browserify
[Article] Getting started with Browserify
JSPM
[Article] JSPM basics and review
Ctags
[Article] Managing Scala projects in Vim with Ag and Ctags
Ag
[Article] Managing Scala projects in Vim with Ag and Ctags
Bower
[Article] Why Bower is still relevant
Web Workers
[Article] Parallel Processing in JS
Generics
[Article] Using Java Generics to express variance of Collections and Functions
random
[Article] Proper random numbers in Javascript
Ubuntu
[Article] Getting started with OpenCV for Java on Ubuntu
OpenCV
[Article] Getting started with OpenCV for Java on Ubuntu
Grunt
[Article] The first steps from Grunt to Webpack
Broken windows theory
[Article] Unbroken windows - overengineering in the name of clean code
Refactoring
[Article] Unbroken windows - overengineering in the name of clean code
Konsole
[Article] 5 Productivity Power Tools for Software Development on Linux
Less
[Article] 5 Productivity Power Tools for Software Development on Linux
Zsh
[Article] 5 Productivity Power Tools for Software Development on Linux
HTTP/2
[Article] Revisiting webapp performance on HTTP/2
SQL
[Article] A solution to Codility Kalium
Codility
[Article] A solution to Codility Kalium
Groovy
[Article] Calm assertions with Spock
D3.js
[Article] Historical monitoring on AWS
Google Drive
[Article] Accessing Google Drive in Javascript
Google auth
[Article] Using Google auth in Javascript
Gem
[Article] MathJax processing on the server-side
MathJax
[Article] MathJax processing on the server-side
Pocket
[Article] MathJax processing on the server-side
PhantomJS
[Article] Quick and dirty way to build PhantomJS2 from source
Levenshtein distance
[Article] Detecting possibly duplicate Strings
duplicates
[Article] Detecting possibly duplicate Strings
Strings
[Article] Detecting possibly duplicate Strings
GZIP
[Article] Efficient SQLite backup on Android
SQLite
[Article] Efficient SQLite backup on Android
IP
[Article] Running LP and IP optimisation from Java
SVG
[Article] Plotting charts with SVG
Catmull-Rom
[Article] Plotting charts with SVG
spdy
[Article] Integrating Facebook Comment Count Sum
http
[Article] Integrating Facebook Comment Count Sum
privacy
How things work matters
security
How things work matters
puzzle
The twists of the Ballmer puzzle
cloud
The hidden cost multiplier of fixed-price cloud resources
cost
The hidden cost multiplier of fixed-price cloud resources
aws
The hidden cost multiplier of fixed-price cloud resources
recommendation
Notes on "Hardest Problem in Computer Science: Centering Things"
complexity
Notes on "Hardest Problem in Computer Science: Centering Things"