I got a printer
  • Blog
  • Portfolio
  • Contact

Posts

Concurrent Artisan Migrate and other db migrations

September-20

Running phinx or artisan migrate during a deployment is great, but how can you ensure they don't clobber each other in a multi-machine deployment?

Why do all CI pipelines suck?

April-09

I can't think of a better way to express this other than all existing CI/CD pipelines suck.

PHP Event Sourcing Makes Me Sad

March-11

I'm looking at starting a new project with Event Sourcing, and I just keep running into the same fatal flaw in every PHP implementation I can find. First reported by Fritz on the Prooph project, the Prooph people thought it was an unavoidable side-effect of using a document DB to store log information (it is, but that's beside the point).

Why are there no good HTTP status codes?

September-07

Why do all HTTP response codes suck for application development?

Django CMS doesn't work with Bootstrap 4 and flexbox layouts

June-21

I ran into a fundamental difference between flexbox and box-model layouts (bootstrap 3 vs bootstrap4). CSS grid layouts - as seen in frameworks like Bootstrap and Foundation - use the rules of CSS to help layout and align parts of a Web page. Flexbox is fundamentally different from CSS grid systems because flexbox uses rules baked into the browser and not the cascading rules of CSS.

Is session ID enough for a CSRF token?

June-12

Can you use just the user's session ID as an anti-CSRF token? Let's break down CSRF tokens and how to create them.

SQLSTATE [HY000]: General error: 2014 Cannot execute queries while other unbuffered queries are active.

June-08

This error message doesn't always point you at the right solution.

[PDOException] SQLSTATE[HY000]: General error: 2014 Cannot execute queries while other unbuffered queries are active. Consider using PDOStatement::fetchAll(). Alternatively, if your code is only ever going to run against mysql, you may enable query buffering by setting the PDO::MYSQL_ATTR_USE_BUFFERED_QUERY attribute.

How to build a mondrian WAR file

February-16

Mondrian doesn't ship with a WAR file by default anymore. This inhibits people from trying out Mondrian via its XML/A servlet.

Get proper time series data from MySQL for Grafana

February-15

Getting proper time series data from SQL can be challenging. It's best to create a proper datawarehouse and generate a calendar table, but I can show you how to create an ad-hoc calendar table for quick visualization in Grafana.

PHP Sessions will eat your data

February-12

I wrote about this last year, but it bears repeating. Database backed sessions in PHP will eat your data under normal circumstances.* (If your normal usage involves Ajax calls).

  • Older Posts →

Site developed by and content copyright Mark Kimsal.

Based on Bootstrap. Icons from Font Awesome. Web fonts from Google.