- ID
- 1cf2f504-1c30-4a95-97d1-7fbe284faaea
Daypage Journal
Friday, 5/17/2019
#+BEGIN: clocktable :scope file :maxlevel 2
#+END:
Tasks [29/32]
DONE Breakfast
CLOSED:
:LOGBOOK:
CLOCK: -- => 0:40
:END:
DONE Clean dishes
CLOSED:
:LOGBOOK:
CLOCK: -- => 0:40
:END:
DONE Set tasks for the day
CLOSED:
:LOGBOOK:
CLOCK: -- => 0:05
:END:
DONE Write in daily journal
CLOSED:
:LOGBOOK:
CLOCK: -- => 0:13
:END:
DONE Help Jeremiah with SSL issues at PBP
CLOSED:
:LOGBOOK:
CLOCK: -- => 0:38
:END:
DONE Fill out follow up questions for Level 12
CLOSED:
:LOGBOOK:
CLOCK: -- => 1:05
:END:
https://level-12.breezy.hr/q/e78ada15746d
DONE Database driven web application development
CLOSED:
I believe I am a 5 here. I have spent 100% of my working time over the past 8.5
years doing database-backed web development.
Most of my work for the past 3 years has been developing APIs for consumption by
javascript frontends. Some of the work has been with Django Rest Framework and
were explicitly RESTful, while a lot of work was with Flask and building custom
architecture APIs (can we just call them RPCs again?) which catered to very
specific workflows on the frontend. Most of these still responded to REST-like
verbs, but the results of the calls were often non-deterministic processes
kicked off (starting a celery task or such).
Before my backend focus, I was building out sites using Django-CMS that used
Postgres or Mysql as a backend, and included custom plugins for data flows
specific to a given client (want to show latest podcast in a widget on the
homepage, for example).
DONE Backend languages and Python in particular
CLOSED:
I believe I am a 5 in Python, working with it for the past 8.5 years as well. I
have enough experience to have opinions about PEP proposals and the way modules
or projects are structured. I am committed to the sane use of community
standards when packaging, and am always trying to learn more about the most
sustainable ways to write, deploy and maintain Python code. I have likely spent
close to 90% of my professional life working in Python.
Besides python I am proficient in Ruby, Typescript, Go and eLisp. I am always
curious to learn more on this front, and have been working through koans for
Rust, as it seems like a future-proof way to get back into C/C++ style systems
development :)
DONE Python libraries: Django, Flask and/or SQLAlchemy
CLOSED:
I believe I am a 5 in major python libraries. I've been using Django since it
was pre-1.0 and have been a donor to the DSF for as long as it has existed. My
first interest in web development was building out a newspaper website, which
was the origins of the Django framework. I have spent close to 75% of my
professional working life in either Django of Flask.
I am likely more like a high 3 or a low 4 in Flask and SQLAlchemy. I haven't
used either for as long as Django, and don't have as much of an opinion over how
a Flask project is laid out. But the design is similar enough to other web
frameworks, that I am rarely lost when contributing to, or building out a
greenfield Flaks/SQLAlachemy project.
DONE HTML(5), CSS, and pre-processors like SASS
CLOSED:
I'm probably a 4 in HTML5 and a 3 in CSS. I've spent the bulk of my working life
using backend languages and coordinating my work with designers and front end
developers. Thus, I probably spent 30-40% of my time three years ago working
with HTML and CSS layouts, with that dropping to more like 15% for the past
three years I would actually like to get back to full stack development,
however, as when I was doing that work for Five Q and the newspaper I thoroughly
enjoyed contributing to the full development of the site. But I would need some
refreshers on the best way to layout a page or integrate preprocessors like SASS
with a project.
DONE General JavaScript, jQuery, etc.
CLOSED:
I am competent (3) in general javascript. I've used jQuery in a lot of projects,
though lately it seems like it's falling out of fashion in favor or things like
React and Vue.js. Thus, it's probably a 10% of my time for about 5 years, and
very little in the past 3 years. I used Mithril.js for a SPA project that involved a prayer
journal and enjoyed using it very much. Javascript does not scare me, I can use
it to get the job done, but like with CSS, I don't have enough experience to be
opinionated about how someone did something. I follow docs and get things done
here.
DONE Modern Javascript: ES6, React, SPAs, build tools, etc.
CLOSED:
I am comptent at modern JS (3). I have more experience, actually, with React and
ES6 than I do with writing my own jQuery projects. Over the past three years
I've probably spent 15% of my working time with React and ES6.
I like the structure of React, and have used it in work projects, but it always
seems a little heavy for projects where you don't have more than a half dozen
people working in the codebase. For those purposes, I tend to reach for
libraries like Riot or the aforementioned Mithril, because they have a lower
congnitive overhead while providing the same sort of "resuable component" arch
that people love React for.
DONE Databases and SQL Development
CLOSED:
I am proficient at SQL (4). I have spent close to 90% of my work over the past
8.5 years working in some fashion with SQL, though it's only in the past three
years that I've had to learn a lot about optimization of queries and the
specifics of how a database works.
I have opinions on Maria v Postgres, and have been known to ship products that
used sqlite, so long as the data access efficiency was not a requirement (mostly
for controlling settings and things like that). I have not used MSSQL much, but
have no objection to it. One of the nice parts about SQL is that aside from
quirks, SQL is SQL (until you try to migrate from MySQL to Postgres :) ). I have
even integrated a project with an existing Oracle database and Django, with
quite a bit of success.
DONE Automated testing and TDD
CLOSED:
I would say I'm proficient (4) at automated testing. All my code for the past 6 or 7 years included unit tests (though in Django that line between unit and integration is very hard to keep apart, unfortunately). Pinning a percentage on that is hard, but I'd say over my career as an engineer I've spent probably 40% of time working on tests. There have defintely been aspects of projects where the tests took longer to write than the solution.
I have dipped my toe in TDD, but never found a great way to do it while also delivering solutions. I think TDD works best in very structured environments where tooling is consistent and your test suite is not an overgrown mess (as it is in many startups). At Elation, there was no way to run a unit test in less than about 4 or 5 minutes due to database setup and teardown, even with sqlite. So TDD was a non-starter.
I do like to build out tests for a specific piece of logic before moving on to new code, but few would confuse what I do with TDD.
DONE Version Control: Git, Mercurial
CLOSED:
I would say I'm an expert (5) at version control. I've used it in 100% of the
work I've done over the past 8.5 years.
I'm opinionated about how to use DVCS tools, including whether you squash merge,
fast forward or force push to existing commits. I've gotten myself out of some
crazy places with Git, and have come to depend on it as a source of information
for the past and a questions to ask about why something is the way it is.
I like clean commit messages, consistent team workflows (which can disagree with
my opinions, so long as they're consistent and exist for logical reasons), and
the fewest commits possible, while keeping changesets reviewable.
DONE Networking fundamentals (HTTP, DNS, TCP/IP, etc)
CLOSED:
I would say I'm an expert at newtork fundamentals (5). I know how HTTP works. I
know how TCP packets move through the internet, and I manage my own DNS server
using PiHole on my home network. I've probably spent 20-30% of my free time and
10% of my professional life to managing some aspect of network configuration.
At Ridecell I was helping build out a kubernetes cluster with Jenkins for
automated testing and container creation. This required getting all the services
communicating together in the Google Cloud. I've also played with Hasicorp's
Consul tool some in my home network and found it to be a nice middle ground
between nothing and kubernetes :)
DONE Linux and related DevOps tools
CLOSED:
I am an expert with Linux and realted devops tools (5). I have spent close to
100% of the last 25 years learning Linux, starting with RedHat 5.2 on a machine
with a Celern FCPGA card running at 333Mhz. I currently use Ubuntu/Debian
flavors, but have no compunction with using Fedora or other flavors. I'm also a
bit of BSD geek, though with a family my time to play has decreased over the
years.
I've used ansible extensivly and maintain the leading open source solution to
deploy the pypiserver with ansible, and have a home server setup using Traefik
and docker to automate bringing up new services like mopidy, or a local jupyter
notebook available anywhere in the world.
I live in Emacs thanks to evil-mode, so I get Vim embedded in the kitchen sink
of programmers tools.
I have managed the security and deployment of fleets of debian machines using
ansible and terraform, along with kubernetes for container management in GCE.
I've also helped maintain a Jenkins cluster.
DONE Anything else you would like to point out that didn't get covered above?
CLOSED:
That's a lot of technoloy talk. But I see technology as a means to an end when
I'm being paid, and as an adventure to explore in when I'm on my own time. One
of the most important aspects to technology that I've found is being infintely
curious, both about the next big thing, and the things that came before you.
It's hard to imagine now, but React will probably be replaced with something
else in 10 years time (I hope it will soon be Lisps time to rise :)).
In business, we deliver solutions. And you can't lose the forest for the trees.
The best tool is often not the fanciest or most elegant, but the one that most
people are proficient in. And the most important solution to a customer may be
the same thing you've been building for 20 years. The clever and positive
engineer will consider their job, then, to do it more efficiently this time,
maybe building out a library to take the drudge work out, and still deliver a
solution in good time.
More than anything, though, engineering is about team building and working well
with people to deliver value, learn from others, and teach what you know without
expecting anything in return.
I am enamoured with the length Level 12 has gone to present the whole of itself
in the job listing, and already feel very excited about the opportunity to join
your team.
Thanks for your time and considration.
DONE Star Trek or Star Wars? Answer ... carefuly :)
CLOSED:
There's a place in my heart for both. But the existence of ST:TOS and TNG make
Star Trek a much more interesting place for me to spend my time. The movie
reboots are doing their best to erase any ground between the franchises though.
At the end of the day, Roddenberry himself explained that ST was supposed to be
a modern Gulliver's Travels, and I think he succeeded brilliantly and I find
myself always coming back and rewatching them, while Star Wars provides me more
nostaglia moments for where I was when I experienced those films ... if that
makes any sense at all :)
I guess I would say I'm comptent at Star Wars (3) and proficient at Star Trek
(4)?
DONE Post in RAB slack about interivew tips
CLOSED:
DONE Continue cleaning up root vegetable bed
CLOSED:
:LOGBOOK:
CLOCK: -- => 0:46
:END:
Got about another third cleared, and it went much faster today due to being wet,
so that felt pretty good.
DONE Move some of the tree debris to the new burn pile
CLOSED:
:LOGBOOK:
CLOCK: -- => 2:09
:END:
DONE Dinner
CLOSED:
:LOGBOOK:
CLOCK: -- => 1:05
:END:
DONE Watching Fantastic Mr. Fox with the family
CLOSED:
:LOGBOOK:
CLOCK: -- => 1:40
:END:
DONE Bedtime
CLOSED:
:LOGBOOK:
CLOCK: -- => 0:25
:END:
DONE Close up chickens and ducks
CLOSED:
:LOGBOOK:
CLOCK: -- => 0:15
:END:
DONE Watching NBA playoffs
CLOSED:
:LOGBOOK:
CLOCK: -- => 1:46
:END:
DONE Talking with Dad about the state of things
CLOSED:
:LOGBOOK:
CLOCK: -- => 0:35
:END:
DONE Figure out how to reply with different email addresses in notmuch
CLOSED:
:LOGBOOK:
CLOCK: -- => 1:27
:END:
Journal
After a bleak day yesterday having gotten a 'no thanks' back from ReCharge, I
had to buoy my spirits and managed to find three other job opporutnities to
pursue. Degreed, Hubbub and Level 12. L12 is the most interesting one of the
group, as they are a python/django agency shop very, very similar to Five Q. I
could see myself being very productive there quickly. I am pretty excited with
the propsect of also being able to do a 30-90 day contracting gig for them
instead of a drawn out interview process, which would very much be where I'm at
right now in terms of making money quickly.
Emma realized I still hadn't followed up on the $5k from the 401k withdrawal,
and now I'm pretty sure it's tied up in lost funds somewhere in the state. So I
have to own up to that process and figure out how to recoup some of the money.
Amazing how quickly we wilt when faced with the challenges we knew could, and
would come to us at any given moment.