Skip to main content
Marcel Krčah

Hi, I'm Marcel Krčah 👋, an independent software engineering consultant. I'm interested in tackling complexity in its various forms, in preventing building waste by collaborative exploration and alignment, and in backend & functional programming. If you are interested, you can sign up for my newsletter or RSS feed.


Blog posts

Here's a list of all posts I have written, sorted by date. You can also search by tags.
  1. Migrated this blog to Eleventy: back to basics
  2. Deadlifting 201kg: some recent learnings
  3. More control with idempotency
  4. Tackling confusion with spreadsheet tables
  5. Taking care of people
  6. EC2 Application Load Balancer: Identifying clients by user-agents
  7. Determining total AWS cost of a system using tags
  8. Passing a secret value to AWS Lambda
  9. Functional programming: driving team adoption
  10. AWS Athena: Adding yyyy/mm/dd partitions to an S3 table
  11. PostgreSQL vs Aurora PostgreSQL vs Aurora PostgreSQL Serverless
  12. Seting up AWS for test/acc/prod environments
  13. AWS QuickSight: Adding an IAM user
  14. Business intelligence for AWS S3 data
  15. Lessons-learned from a 6-month Typescript/AWS Lambda project
  16. Business metrics for system maintenance
  17. Reading AWS CloudWatch logs with CLI and fzf
  18. Parameterize AWS Lambda with SSM Param Store
  19. Getting started with functional programming in Typescript
  20. Building cathedrals
  21. Adding changelogs to blog posts
  22. Changelog of this blog (meta)
  23. Tracking AWS Lambda errors with Sentry (and CloudFormation)
  24. Defining resources conditionally based on environment
  25. DynamoDB: key technical concepts & features
  26. Contractor didn't deliver: how to resolve?
  27. Testing asynchronous systems
  28. Generating tax reports with Python, Jinja, and Click
  29. Building bi-directional sync between two system
  30. Resolving conflicts peacefully and powerfully
  31. Making hard decisions later
  32. Shell scripts vs. Python/Javascript scripts
  33. I'm glad for using 1Password
  34. Tracking hours with Clockify, fzf, jq and awk
  35. Preparing a lemon pie: visualization
  36. Embarrassingly simple proof of concepts
  37. Everyday decision making & architectural vision
  38. The spirit of kaizen
  39. The curious case of if-not
  40. To buy or to build?
  41. Honest function inputs
  42. Coding and writing are alike
  43. What is complexity?
  44. We think in conceptual metaphors
  45. Clean code: can we learn from altruism & evolution?
  46. Does your codebase feel easier to sustain each year?
  47. Exploring my writing: The subjects of sentences
  48. Exploring my writing: Hedging
  49. Connecting to AWS API Gateway with HTTP
  50. Managing dotfiles with a bare git repo
  51. Adding domain knowledge to code comments
  52. Drawings for technical explanations: my first steps
  53. Tips on building a data analytics warehouse
  54. Taking things personally
  55. On software tooling
  56. Why Docker for Data Scientists
  57. Which problem would that solve?
  58. Which task do you resent the most today?
  59. From a model to production: Software-engineering best-practices
  60. Should you hire a data engineer instead of a data scientist?
  61. Supercharge your team
  62. Strive for focus & simplicity
  63. Transition your career to big data
  64. Resist the quench for coding
  65. How a newline can ruin your Hive
  66. How to ingest data from Azure DataMarket into Hadoop
  67. Introduction to Apache Zookeeper, backbone of big-data systems
  68. Analyzing Elastic MapReduce data with Python, Pandas and scikit-learn
  69. Detecting random text in web registration forms