Paul's Programming Notes PostsRSSGithub

Arduino - Oven Thermometer

Parts:

  • HiLetgo DC 3-5V MAX6675 Module + K Type Thermocouple Temperature Sensor
  • UCTRONICS 0.96 Inch OLED Module 12864 128x64 Yellow Blue SSD1306 Driver I2C
  • ESP32

Code:

Arduino - Coffee Roasting Monitor

Parts:

  • Arduino Uno
  • 2x MAX6675 w/ thermocouple

Code:

Django - Duplicate Unformatted Logs

Recently I worked on a bug that was causing duplicate unformatted log messages to appear in a Django app’s logs. I made a repository that demonstrates the issue: https://github.com/pawl/django_duplicate_unformatted_logs_example

The problem was caused by an accidental call to logging.info (without using logging.getLogger to get a specific logger) while the root logger isn’t already configured.

The solution ended up being to get rid of the accidental calls to logging.info and configuring the root logger to prevent it from accidentally happening again. I go into more details in that repo.

Vue - vue-custom-element

Vue-custom-element seems like the best way to integrate vue into an existing application that uses server side templates.

This approach allows you to use vue components (built with the build pipeline) in your existing html without making your entire application a SPA.

Initially I started following this guide: https://robinverton.de/blog/2018/06/22/django-vue.js-integration-as-a-widget/

Vue-custom-element turned that code into 3 lines and allowed using components like normal (without the data attributes).

This approach seems much better than: https://vsupalov.com/vue-js-in-django-template/ Which doesn’t allow for using a build pipeline for babel, linting, testing, single page components, live reload, modules with import/require, etc.

Targeting your builds for web components might do the same thing: https://cli.vuejs.org/guide/build-targets.html#web-component It says it’s not compatible with IE11, but that might not be a big deal in most situations.

Django - ModelChoiceField queryset caching

It would be nice to know a better way to cache the ModelChoiceField’s queryset when it’s used in a form that runs is_valid() in a loop (like Formsets do). The best way I know how at the moment is by not using a ModelChoiceField at all. The solution requires using a ChoiceField, running the query for choices outside of the loop, then passing the choices into the form to override the ChoiceField choices.

Here’s an example:

Learning Vue Through Terrible Pull Requests

I made a pull request asking to “remove the unused public/index.html” file from django-vue-template: https://github.com/gtalarico/django-vue-template/pull/53

Well, the author responded and it turns out it’s definitely used (by vue magic): https://cli.vuejs.org/guide/html-and-static-assets.html

Oops, definitely should have googled “vue public/index.html” before making that pull request. I made another pull request to add a link about it to the django-vue-template docs: https://github.com/gtalarico/django-vue-template/pull/54