Monday, 10/28/2019
- ID
- 35e3c3ad-edd5-4aaa-b49d-8a69c1c4ae1e
Tasks
DONE Set tasks for the day
CLOSED: SCHEDULED: <2019-10-28 Mon 8:00>
:LOGBOOK:
CLOCK: -- => 0:06
CLOCK: -- => 0:43
:END:
DONE Krystian / Colin fat model discussion
CLOSED: SCHEDULED: <2019-10-28 Mon 8:30-9:00>
There are arguments to be made in either case. This link from SO makes a
compelling argument as to why views are the wrong place for application
logic see:
- https://stackoverflow.com/questions/8590468/django-fat-models-and-skinny-controllers
- https://softwareengineering.stackexchange.com/questions/90808/are-django-forms-violating-mvc
At 15Five we tend to write a lot of utility functions for checks, and then
wrap them up in implementation functions which usually take a request and do
safety validation and such.
The problem with this is that there is still really easy access to the raw
data and if you don't wrap your data is data models, you wind up with data
in funky states and that's pretty much the root of all bugs.
I'm prepared to believe that thick models are not the absolute answer, but
at some point you have to enforce data integrity via relationships, and the
lower down you do it, the harder it is for data state to drift.
In our case, we either need to provide more consistent access to data model
conventions, or more strictly enforce data model integrity.
For example, our data design says no group type can have two groups that
share the same name. Right now, you have to remember to check that
constraint everytime you move a group around. It seems like that doesn't
happen often, but then you go to delete a group type and move groups to
the default group type and things blow up because the person writing the
delete logic forgot (or never knew) about that data design.
- Institutional knowledge
1. File size
Models files grow huge quickly. There are ways to manage that
2. How do you make your codebase maintainable?
Microservices?
Database as monolith, apps run on own servers?
Mods/apps but no hard rules on interfaces?
User model gains the most from feature creep
list of objetives for users? Throw it in as a model property
Prefer, functions inside of objecitves code that take a user as parameter
Makes for slightly more awkward code, esp. for OOO zealots
Storing data on user? Create FK with a new table? Put it on the user prefs
model?
Database constraints were historically limited
Very universal data constraints, should be on database
Sometimes a property is just a property on a model
Not limited by a status flag, okay to just change name directly
Other things are very connected, user.is_active, or status field
But logic needs to change based on constraints
Save method is okay, because you can get around it, but still enforce it
from time to time
Safe handler that can take parameter to do things fast without checking
from time to time
In PPP squad, start dates will live on User model, provide utility
functions for commonly used things
Publish an external interface to our code
OKR and goal settings should not live on the User model
DONE Maine 200 committee kick off
CLOSED: SCHEDULED: <2019-10-28 Mon 9:00-10:30>
:LOGBOOK:
CLOCK: -- => 1:31
:END:
Role of committee
Goal of event
-
Fundraising goals
- Are you inviting all? Or are you exlcuding some
- Do we build on Hermione, or treat it as a separate event?
- Didn't build on hermione as a local success
Where will money go?
- ME200?
DONE Write in daily journal
CLOSED: SCHEDULED:
:LOGBOOK:
CLOCK: -- => 0:24
:END:
DONE Check email
CLOSED: SCHEDULED: <2019-10-28 Mon 8:15>
:LOGBOOK:
CLOCK: -- => 0:14
:END:
DONE Parking work session
CLOSED: SCHEDULED:
:LOGBOOK:
CLOCK: -- => 1:10
:END:
- West Court - overnight restrictions off
- Overnight 11-6 to 12-8
- 25ft min v 10 ft on corners
- Not do painting but add extra signage
- 10-15 ft on hydrant on Battle & Main
- Changing time to 2hr on lower Main
- Changing time on dock to 4hr all spots
- Launch ramp goes to 1 hour parking + add parking curbs
- Pentagoet to Pleasent one-way will wait, but we're thinking about it
DONE Team Boost
CLOSED: SCHEDULED:
- ZOOM
- https://zoom.us/j/647103643
:LOGBOOK:
CLOCK: -- => 0:20
:END:
DONE Talk to Shawn about clearing leaves on Water Street
CLOSED:
:LOGBOOK:
CLOCK: -- => 0:01
:END:
Note
Tip MacDonald came in to request that the town make sure to clear leaves out of
the gutter and drain on Water Street by the bank BEFORE things start freezing
over. Last year the ice came up near to the door because water couldn't drain properly.
DONE Write in work journal
CLOSED: SCHEDULED:
- LINK
- https://15five.quip.com/bqoiAdg7Dhx8
:LOGBOOK:
CLOCK: -- => 0:26
CLOCK: -- => 0:04
:END:
DONE Lunch
CLOSED: SCHEDULED:
:LOGBOOK:
CLOCK: -- => 0:45
:END:
DONE Cleaning the house
CLOSED: SCHEDULED:
:LOGBOOK:
CLOCK: -- => 1:08
:END:
DONE Dishes
CLOSED: SCHEDULED:
:LOGBOOK:
CLOCK: -- => 0:47
:END:
DONE Document how permissions works in 15Five app currently
CLOSED: SCHEDULED:
:LOGBOOK:
CLOCK: -- => 0:30
CLOCK: -- => 1:00
CLOCK: -- => 0:48
CLOCK: - => 2:03
:END:
DONE Prepare short presentation about the virtues of emacs
CLOSED: SCHEDULED:
DONE Bedtime
CLOSED: SCHEDULED:
:LOGBOOK:
CLOCK: -- => 0:38
:END:
DONE Watch Poldark
CLOSED: SCHEDULED:
:LOGBOOK:
CLOCK: -- => 1:31
:END:
Journal
After a successful ferry beach weekend, today has been quite busy. My day began
with Emma sleeping in and not having the kids awake until after 7. I was
probably more worked up about that than I either had a right to be, or than was
necessary. The kids ended up getting to school before 8, and I was at town
office for my slate of meetings in fine time as well.
My conversation about thick models with Krystian went well. I'm always impressed
with how reasonable and approachable Krystian is when it comes to talking
through ideas. The one thing that felt a little off is that I may have been
conflating thick models and standard interfaces a little bit. Though they may
also just be inter-related.
My next meeting was the kick-off for the ME200 steering committee. Marsha Mason,
Bill and Bobby Vagt were on the committee along with Shawn. Helen Miller had
called in to sort of pitch her services. I'm not sure how that's all going to go
down, but I felt pretty good with the direction so far.
Report
#+BEGIN: clocktable :scope file :maxlevel 3 :formula % :compact t :tags t
#+CAPTION: Clock summary at
| Tags | Headline | Time | % |
|-------------------------------+----------------------------------------------+---------+-------|
| | *Total time* | *14:06* | 100.0 |
|-------------------------------+----------------------------------------------+---------+-------|
| | Monday, 10/28/2019 | 14:06 | 100.0 |
| | \_ Tasks | 14:06 | 100.0 |
| @personal, tasks, daily | \_ Set tasks for the day | 0:49 | 5.8 |
| @town, me200, meeting | \_ Maine 200 committee kick off | 1:31 | 10.8 |
| @personal, habit, journal | \_ Write in daily journal | 0:24 | 2.8 |
| @personal, email, comms | \_ Check email | 0:14 | 1.7 |
| @town, sboard, worksession | \_ Parking work session | 1:07 | 7.9 |
| @15five, meeting, boost | \_ Team Boost | 0:20 | 2.4 |
| @town, request, maintence | \_ Talk to Shawn about clearing leaves... | 0:01 | 0.1 |
| @15five, work, dev, journal | \_ Write in work journal | 0:30 | 3.5 |
| @personal, lunch, meal | \_ Lunch | 0:45 | 5.3 |
| @home, chores, cleaning | \_ Cleaning the house | 1:08 | 8.0 |
| @home, chores, dishes | \_ Dishes | 0:47 | 5.6 |
| @15five, eng5015, task, perms | \_ Document how permissions works in... | 4:21 | 30.9 |
| @family, kids, bedtime | \_ Bedtime | 0:38 | 4.5 |
| @family, tv, poldark | \_ Watch Poldark | 1:31 | 10.8 |
#+END: