| 8. 7. 2022 | How to Make Reviewers Love Your Big Pull Requests – ieftimov.com
|
| 4. 6. 2022 | Problem Solving Framework & Principles for Software Engineers – ieftimov.com
|
| 3. 5. 2022 | Ditch old tools and habits for the golden tools of your new company – ieftimov.com
|
| 18. 3. 2022 | Identify & Escalate Risks: A Practical Framework for Software Engineers – ieftimov.com
|
| 21. 2. 2022 | How to Make the Step up From Intermediate to Senior Engineer – ieftimov.com
|
| 21. 2. 2022 | How to Make the Step up From Intermediate to Senior Engineer – ieftimov.com
|
| 12. 12. 2021 | Creating and testing gRPC server interceptors in Ruby – ieftimov.com
|
| 12. 12. 2021 | Creating and testing gRPC server interceptors in Ruby – ieftimov.com
|
| 27. 10. 2021 | Docker Compose, stray PID files, Rails and beyond – ieftimov.com
|
| 27. 10. 2021 | Docker Compose, stray PID files, Rails and beyond – ieftimov.com
|
| 1. 6. 2021 | Conditional HTTP GET: The fastest requests need no response body – ieftimov.com
|
| 1. 6. 2021 | Conditional HTTP GET: The fastest requests need no response body – ieftimov.com
|
| 12. 4. 2021 | Deep dive in CORS: History, how it works, and best practices – ieftimov.com
|
| 12. 4. 2021 | Deep dive in CORS: History, how it works, and best practices – ieftimov.com
|
| 22. 5. 2020 | Testing in Go: Stop Leaking Files – ieftimov.com
|
| 22. 5. 2020 | Testing in Go: Stop Leaking Files – ieftimov.com
|
| 2. 5. 2020 | Four Steps to Daemonize Your Go Programs – ieftimov.com
|
| 2. 5. 2020 | Four Steps to Daemonize Your Go Programs – ieftimov.com
|
| 2. 4. 2020 | Understanding bytes in Go by building a TCP protocol – ieftimov.com
|
| 2. 4. 2020 | Understanding bytes in Go by building a TCP protocol – ieftimov.com
|
| 13. 3. 2020 | Testing in Go: WebSockets – ieftimov.com
|
| 13. 3. 2020 | Testing in Go: WebSockets – ieftimov.com
|
| 2. 3. 2020 | Testing in Go: HTTP Servers – ieftimov.com
|
| 2. 3. 2020 | Testing in Go: HTTP Servers – ieftimov.com
|
| 18. 2. 2020 | Testing in Go: Clean Tests Using t.Cleanup – ieftimov.com
|
| 18. 2. 2020 | Testing in Go: Clean Tests Using t.Cleanup – ieftimov.com
|
| 2. 2. 2020 | Testing in Go: Golden Files – ieftimov.com
|
| 2. 2. 2020 | Testing in Go: Golden Files – ieftimov.com
|
| 5. 1. 2020 | Make resilient Go net/http servers using timeouts, deadlines and context cancellation – ieftimov.com
|
| 5. 1. 2020 | Make resilient Go net/http servers using timeouts, deadlines and context cancellation – ieftimov.com
|
| 16. 12. 2019 | Testing in Go: Test Doubles by Example – ieftimov.com
|
| 16. 12. 2019 | Testing in Go: Test Doubles by Example – ieftimov.com
|
| 1. 12. 2019 | Testing in Go: Dependency Injection – ieftimov.com
|
| 1. 12. 2019 | Testing in Go: Dependency Injection – ieftimov.com
|
| 16. 11. 2019 | Simple Golang database seeding abstraction for Gorm – ieftimov.com
|
| 16. 11. 2019 | Simple Golang database seeding abstraction for Gorm – ieftimov.com
|
| 16. 9. 2019 | Testing in Go: Fixtures – ieftimov.com
|
| 16. 9. 2019 | Testing in Go: Fixtures – ieftimov.com
|
| 27. 7. 2019 | Testing in Go: Subtests – ieftimov.com
|
| 27. 7. 2019 | Testing in Go: Subtests – ieftimov.com
|
| 10. 7. 2019 | Testing in Go: Table-Driven Tests – ieftimov.com
|
| 10. 7. 2019 | Testing in Go: Table-Driven Tests – ieftimov.com
|
| 1. 7. 2019 | Testing in Go: go test – ieftimov.com
|
| 1. 7. 2019 | Testing in Go: go test – ieftimov.com
|
| 24. 6. 2019 | Testing in Go: Naming Conventions – ieftimov.com
|
| 24. 6. 2019 | Testing in Go: Naming Conventions – ieftimov.com
|
| 15. 6. 2019 | Testing in Go: Writing Practical Failure Messages – ieftimov.com
|
| 15. 6. 2019 | Testing in Go: Writing Practical Failure Messages – ieftimov.com
|
| 30. 5. 2019 | Testing in Go: Failing Tests – ieftimov.com
|
| 30. 5. 2019 | Testing in Go: Failing Tests – ieftimov.com
|
| 8. 5. 2019 | Testing in Go: First Principles – ieftimov.com
|
| 8. 5. 2019 | Testing in Go: First Principles – ieftimov.com
|
| 23. 4. 2019 | Deep Dive in the Upcoming Go Error Inspection Changes – ieftimov.com
|
| 23. 4. 2019 | Deep Dive in the Upcoming Go Error Inspection Changes – ieftimov.com
|
| 1. 4. 2019 | My First dotGo Conference – ieftimov.com
|
| 1. 4. 2019 | My First dotGo Conference – ieftimov.com
|
| 26. 3. 2019 | Tell your team you are running late using Google Home, Google Cloud Functions, Golang and Twilio – ieftimov.com
|
| 26. 3. 2019 | Tell your team you are running late using Google Home, Google Cloud Functions, Golang and Twilio – ieftimov.com
|
| 11. 3. 2019 | Barebones model of Spotify's 'Recently Played' screen using a Least Recently Used (LRU) cache in Golang – ieftimov.com
|
| 11. 3. 2019 | Barebones model of Spotify's 'Recently Played' screen using a Least Recently Used (LRU) cache in Golang – ieftimov.com
|
| 27. 2. 2019 | When and Why to use a Least Frequently Used (LFU) cache with an implementation in Golang – ieftimov.com
|
| 27. 2. 2019 | When and Why to use a Least Frequently Used (LFU) cache with an implementation in Golang – ieftimov.com
|
| 13. 2. 2019 | Golang Datastructures: Trees – ieftimov.com
|
| 13. 2. 2019 | Golang Datastructures: Trees – ieftimov.com
|
| 26. 1. 2019 | OTP in Elixir: Learn GenServer by Building Your Own URL Shortener – ieftimov.com
|
| 26. 1. 2019 | OTP in Elixir: Learn GenServer by Building Your Own URL Shortener – ieftimov.com
|
| 15. 1. 2019 | Understanding the basics of Elixir's concurrency model – ieftimov.com
|
| 15. 1. 2019 | Understanding the basics of Elixir's concurrency model – ieftimov.com
|
| 31. 12. 2018 | A deeper dive in Elixir's Plug – ieftimov.com
|
| 31. 12. 2018 | A deeper dive in Elixir's Plug – ieftimov.com
|
| 23. 12. 2018 | Validate your passwords using Elixir and haveibeenpwned.com's API – ieftimov.com
|
| 23. 12. 2018 | Validate your passwords using Elixir and haveibeenpwned.com's API – ieftimov.com
|
| 24. 2. 2018 | Data structures in Go: Stacks and queues – ieftimov.com
|
| 24. 2. 2018 | Data structures in Go: Stacks and queues – ieftimov.com
|
| 18. 2. 2018 | Data structures in Go: Linked lists – ieftimov.com
|
| 18. 2. 2018 | Data structures in Go: Linked lists – ieftimov.com
|
| 30. 1. 2018 | Create and manage MacOS LaunchAgents using Go – ieftimov.com
|
| 30. 1. 2018 | Create and manage MacOS LaunchAgents using Go – ieftimov.com
|
| 23. 1. 2018 | Packing multiple binaries in a Golang package – ieftimov.com
|
| 23. 1. 2018 | Packing multiple binaries in a Golang package – ieftimov.com
|
| 2. 11. 2017 | Understanding why and how to add idempotent requests to your APIs – ieftimov.com
|
| 2. 11. 2017 | Understanding why and how to add idempotent requests to your APIs – ieftimov.com
|
| 7. 10. 2017 | Versioning REST APIs: The Theory and Using Grape in Ruby – ieftimov.com
|
| 7. 10. 2017 | Versioning REST APIs: The Theory and Using Grape in Ruby – ieftimov.com
|
| 29. 10. 2016 | What happens when you DELETE a resource? – ieftimov.com
|
| 29. 10. 2016 | What happens when you DELETE a resource? – ieftimov.com
|
| 26. 6. 2016 | Sprinkle some HATEOAS on your Rails APIs – ieftimov.com
|
| 26. 6. 2016 | Sprinkle some HATEOAS on your Rails APIs – ieftimov.com
|
| 16. 6. 2016 | The practicality of designing and describing your APIs – ieftimov.com
|
| 16. 6. 2016 | The practicality of designing and describing your APIs – ieftimov.com
|
| 6. 6. 2016 | Learn your tools: Navigating your Git History – ieftimov.com
|
| 6. 6. 2016 | Learn your tools: Navigating your Git History – ieftimov.com
|
| 27. 5. 2016 | How Rails handles status codes – ieftimov.com
|
| 27. 5. 2016 | How Rails handles status codes – ieftimov.com
|
| 20. 5. 2016 | A bit about decorators and presenters – ieftimov.com
|
| 20. 5. 2016 | A bit about decorators and presenters – ieftimov.com
|
| 23. 4. 2016 | Git history is underrated – ieftimov.com
|
| 23. 4. 2016 | Git history is underrated – ieftimov.com
|
| 31. 3. 2016 | Write your first Rubygems plugin – ieftimov.com
|
| 31. 3. 2016 | Write your first Rubygems plugin – ieftimov.com
|
| 25. 3. 2016 | You Can't Rescue Them All – ieftimov.com
|
| 25. 3. 2016 | You Can't Rescue Them All – ieftimov.com
|
| 8. 3. 2016 | Refactoring in Ruby: Primitive Obsession – ieftimov.com
|
| 8. 3. 2016 | Refactoring in Ruby: Primitive Obsession – ieftimov.com
|
| 23. 2. 2016 | PostgreSQL Indexes: B-Tree – ieftimov.com
|
| 23. 2. 2016 | PostgreSQL Indexes: B-Tree – ieftimov.com
|
| 30. 1. 2016 | PostgreSQL Indexes: First Principles – ieftimov.com
|
| 30. 1. 2016 | PostgreSQL Indexes: First Principles – ieftimov.com
|
| 24. 1. 2016 | Building a Weather Widget using RxJS – ieftimov.com
|
| 24. 1. 2016 | Building a Weather Widget using RxJS – ieftimov.com
|
| 19. 1. 2016 | Understanding Reactive Programming with RxRuby – ieftimov.com
|
| 19. 1. 2016 | Understanding Reactive Programming with RxRuby – ieftimov.com
|
| 13. 1. 2016 | Refactoring in Ruby: The right place for a Builder? – ieftimov.com
|
| 13. 1. 2016 | Refactoring in Ruby: The right place for a Builder? – ieftimov.com
|
| 7. 1. 2016 | Running a Rails Application on Deis – ieftimov.com
|
| 7. 1. 2016 | Running a Rails Application on Deis – ieftimov.com
|
| 4. 1. 2016 | Refactoring in Ruby: Smelly Parameters Lists – ieftimov.com
|
| 4. 1. 2016 | Refactoring in Ruby: Smelly Parameters Lists – ieftimov.com
|
| 28. 12. 2015 | Refactoring in Ruby: TDD your way through Extract Class – ieftimov.com
|
| 28. 12. 2015 | Refactoring in Ruby: TDD your way through Extract Class – ieftimov.com
|
| 14. 12. 2015 | Rails, Secure Cookies, HSTS and friends – ieftimov.com
|
| 14. 12. 2015 | Rails, Secure Cookies, HSTS and friends – ieftimov.com
|
| 3. 12. 2015 | Why and how to test Rake tasks in your Rails application – ieftimov.com
|
| 3. 12. 2015 | Why and how to test Rake tasks in your Rails application – ieftimov.com
|
| 27. 11. 2015 | Writing command line apps with Elixir – ieftimov.com
|
| 27. 11. 2015 | Writing command line apps with Elixir – ieftimov.com
|
| 26. 11. 2015 | Getting Started with Minitest – ieftimov.com
|
| 26. 11. 2015 | Getting Started with Minitest – ieftimov.com
|
| 4. 11. 2015 | Testing Ruby Mixins with Minitest in isolation – ieftimov.com
|
| 4. 11. 2015 | Testing Ruby Mixins with Minitest in isolation – ieftimov.com
|
| 23. 10. 2015 | Filter request params from Phoenix logs – ieftimov.com
|
| 23. 10. 2015 | Filter request params from Phoenix logs – ieftimov.com
|
| 18. 10. 2015 | How to set tests as pending in your ExUnit suite – ieftimov.com
|
| 18. 10. 2015 | How to set tests as pending in your ExUnit suite – ieftimov.com
|
| 9. 10. 2015 | Write and publish your first Elixir library – ieftimov.com
|
| 9. 10. 2015 | Write and publish your first Elixir library – ieftimov.com
|
| 21. 8. 2015 | Variable hoisting in Ruby – ieftimov.com
|
| 21. 8. 2015 | Variable hoisting in Ruby – ieftimov.com
|
| 15. 8. 2015 | TDD Patterns: Humble Object – ieftimov.com
|
| 15. 8. 2015 | TDD Patterns: Humble Object – ieftimov.com
|
| 5. 8. 2015 | Test Doubles: in theory, in Minitest and in RSpec – ieftimov.com
|
| 5. 8. 2015 | Test Doubles: in theory, in Minitest and in RSpec – ieftimov.com
|
| 29. 7. 2015 | Exception handling and testing it with Minitest – ieftimov.com
|
| 29. 7. 2015 | Exception handling and testing it with Minitest – ieftimov.com
|
| 21. 7. 2015 | Testing Ruby's floats precision – ieftimov.com
|
| 21. 7. 2015 | Testing Ruby's floats precision – ieftimov.com
|
| 14. 7. 2015 | Migrating a test suite from RSpec to Minitest – ieftimov.com
|
| 14. 7. 2015 | Migrating a test suite from RSpec to Minitest – ieftimov.com
|
| 7. 7. 2015 | How to write Rails middleware – ieftimov.com
|
| 7. 7. 2015 | How to write Rails middleware – ieftimov.com
|
| 28. 6. 2015 | Rack: Writing middleware – ieftimov.com
|
| 28. 6. 2015 | Rack: Writing middleware – ieftimov.com
|
| 16. 6. 2015 | Rack: First Principles – ieftimov.com
|
| 16. 6. 2015 | Rack: First Principles – ieftimov.com
|
| 12. 6. 2015 | In and out of PostgreSQL using COPY – ieftimov.com
|
| 12. 6. 2015 | In and out of PostgreSQL using COPY – ieftimov.com
|
| 26. 5. 2015 | Implementing "the lovely" Singleton Pattern – ieftimov.com
|
| 26. 5. 2015 | Implementing "the lovely" Singleton Pattern – ieftimov.com
|
| 19. 5. 2015 | POV: Startup Weekend Skopje – ieftimov.com
|
| 19. 5. 2015 | POV: Startup Weekend Skopje – ieftimov.com
|
| 18. 5. 2015 | How to: YourGem.configure – ieftimov.com
|
| 18. 5. 2015 | How to: YourGem.configure – ieftimov.com
|
| 4. 5. 2015 | RailsConf 2015 talks that you should watch – ieftimov.com
|
| 4. 5. 2015 | RailsConf 2015 talks that you should watch – ieftimov.com
|
| 28. 4. 2015 | How to write RSpec formatters from scratch – ieftimov.com
|
| 28. 4. 2015 | How to write RSpec formatters from scratch – ieftimov.com
|
| 22. 4. 2015 | Pattern to pattern: Template Method & Strategy – ieftimov.com
|
| 22. 4. 2015 | Pattern to pattern: Template Method & Strategy – ieftimov.com
|
| 15. 4. 2015 | Exploring new methods in Ruby 2.2.0 – ieftimov.com
|
| 15. 4. 2015 | Exploring new methods in Ruby 2.2.0 – ieftimov.com
|
| 14. 4. 2015 | Using multiple sources in a Gemfile – ieftimov.com
|
| 14. 4. 2015 | Using multiple sources in a Gemfile – ieftimov.com
|
| 6. 4. 2015 | Template Method Pattern in Ruby – ieftimov.com
|
| 6. 4. 2015 | Template Method Pattern in Ruby – ieftimov.com
|
| 1. 3. 2015 | AngularJS Services Part 4: Value and Constant – ieftimov.com
|
| 1. 3. 2015 | AngularJS Services Part 4: Value and Constant – ieftimov.com
|
| 28. 2. 2015 | AngularJS Services Part 3: Service – ieftimov.com
|
| 28. 2. 2015 | AngularJS Services Part 3: Service – ieftimov.com
|
| 27. 2. 2015 | AngularJS Services Part 2: Factory – ieftimov.com
|
| 27. 2. 2015 | AngularJS Services Part 2: Factory – ieftimov.com
|
| 25. 2. 2015 | AngularJS Services Part 1: Provider – ieftimov.com
|
| 25. 2. 2015 | AngularJS Services Part 1: Provider – ieftimov.com
|
| 5. 6. 2014 | SOLID Principles in Ruby – ieftimov.com
|
| 5. 6. 2014 | SOLID Principles in Ruby – ieftimov.com |