articles

    NASA's First Agile Technical Interchange Meeting

    Yesterday was NASA’s very first Agile Technical Interchange Meeting! NASA is becoming agile 🚀🏃‍♂️💨

    I learned how Agile is applied outside of my discipline, web software, to improve how we build hardware and integrated systems, particularly in the systems engineering discipline.

    Here are some ✨highlights✨ of NASA’s agile journey:

    💙 Agile = respect. Tears were shed during a cybersecurity team’s transition to SAFe (Scaled Agile Framework). Years of pent-up frustration and pain came out as the team realized how unseen they felt due to working in a very reactive manner, with requests coming in all over the place and no visibility into what they were accomplishing. Now their capacity is clearly understood by their customers and their leadership, and they are delivering more and happier than ever before.

    ✈ Architecture affects agility. A team rearchitected their software to leverage microservices for coordinating drone traffic in lower-atmosphere urban air space. The architecture change has allowed them to be much more agile in how they deploy software.

    🌐 NASA does open-source!? I heard from the OpenMDAO team about how they are building open-source software from NASA, and how adapting an agile mindset has allowed them to respond and work with the open-source community.

    🔬 An agile mindset helps deliver valuable research. Much research happens at NASA, and adopting an agile mindset/approach is helping researchers think about how they deliver value with their research. This approach is not taught in doctorate programs, so it was fascinating to see the melding of these concepts and how important it is that NASA is thoughtful about what value our research products can deliver!

    We have a ways to go, but we’re on our way! I’m looking forward to staying connected with this community and seeing what else can be done with an agile mindset at NASA - National Aeronautics and Space Administration!

    Photo credit: Jackelynne Silva-Martinez, PhD

    Jake sitting with other nasa agile practitioners in a conference room

    Now 2024-05-05

    Also available on my /now page

    Read More →

    Introducing Fed Meetup

    Now that we are out of the pandemic, federal travel is back in full swing. Federal employees are flying cross-country to get together and meet on various topics to do their work more effectively. I see this, especially at my organization, NASA. Just this winter I flew out to Kennedy Space Center for the Office of Safety and Mission Assurance Face-to-Face with more than 50 other colleagues to talk about where the organization is going and to do workshops together. We do these twice a year.

    Read More →

    A Day In My Life At NASA

    On days like today, I marvel as I reflect all the awesome things I get to do in my role here at the NASA Safety Center.

    Today I…

    🐛 Hosted a “bug hunt” for the new app we launched last month, having the whole development team try to break the app to catch bugs before they become an issue.

    🌒 Spoke with someone from the Human Landing System program about their interest in using a fishbone (Ishikawa) diagram to identify what could cause the lunar lander to tip over during landing. This is a problem that has plagued recent commercial lunar landings, and we are looking to support these use cases in our new app.

    🥗 Ate a fantastic salad with my team at the café in the new Research Support Building at NASA Glenn Research Center

    🤹‍♀️ Consulted with a co-worker about how we could use Microsoft Delve to surface Reliability Engineers in the agency with unique skills that could be shared with others in that discipline.

    📊 Reviewed the Science Mission Directorate’s system for tracking risks to inform how our team will build an agency-level tool that surfaces elevated risks from the mission directorates.

    👬 Demoed our API for mishap data to a group building a Digital Twin of NASA facilities. Mishap data could be layered with information we have on aging infrastructure to build a compelling case for which areas of NASA’s infrastructure are in the most need of attention.

    And that all is just the tip of the iceberg! Looking forward to tomorrow!

    A Brief Thought On A Recent Bout of Resistance

    Gotta get back on the ol' blog! I’ve been working a bit on a draft of an article, but have been having some resistance to finishing it. Do I keep it long and playful like it is now, or cut the fluff and get right to the message?

    I’ve been pondering this question, and I think the right answer is to just get the dang thing out into the world. Have fun writing it. The style does not matter. Either way, it will be a hit with some people and a miss with others. And that doesn’t matter anyways. I want to write for me to work through things and hopefully that helps others along the way. But if not, fine!

    Just write Jake!

    Text Message Triage

    Me: “Oh, I need to respond to that later.”

    Text Message: cries softly as it floats into the void, never to be seen again

    Read More →

    To Be Good, You Must Be Dangerous

    “They see they can and must stand up, because they begin to understand how genuinely monstrous they will become, otherwise, feeding on their resentment, transforming it into the most destructive of wishes. To say it again: There is very little difference between the capacity for mayhem and destruction, integrated, and strength of character. This is one of the most difficult lessons of life.”

    - Jordan B. Peterson, 12 Rules for Life

    To be good, you must be dangerous.

    Much of my life, I equated dangerous with bad. But I have come to realize that a chief aim of the good ought to be to increase their dangerousness. This is necessary when operating in and around evil.

    A capacity for evil is not inherently bad. Your capacity is morally neutral, but it is up to you to wield it appropriately. C.S. Lewis illustrates this well when answering the question of why there is evil at all:

    “‘Why did God make a creature of such rotten stuff that it went wrong?’ The better stuff a creature is made of—the cleverer and stronger and freer it is—then the better it will be if it goes right, but also the worse it will be if it goes wrong. A cow cannot be very good or very bad; a dog can be both better and worse; a child better and worse still; an ordinary man, still more so; a man of genius, still more so; a superhuman spirit best—or worst—of all.”

    - C.S. Lewis, Mere Christianity

    Jesus makes this point too, when telling his disciples that they ought to be wise as serpents. This is potent imagery considering it was a serpent that caused the fall of man.

    “Behold, I am sending you out as sheep in the midst of wolves, so be wise as serpents and innocent as doves.”

    Matthew 10:16 ESV

    He implores them to wield the wisdom of the serpent with the innocence of the dove. Why not just tell them to be innocent as doves? Because to be good, you must be dangerous.

    This then, is the aim of the good: to be cleverer and stronger and freer. To be dangerous.

    My User Story Template

    Below is the template I created for writing user stories.

    # User Story
    
    As a...  
    I want...  
    So that...  
    
    # Description
    
    Lorem...
    
    # Acceptance Criteria
    
    - bullet criteria
    
    GIVEN setup  
    WHEN action  
    THEN result  
    

    I write a lot of user stories for my team, and they need to be clear, to the point, and verifiable. This template was born out of a need for consistency in how user stories were defined and written and aims to give a development team the bare minimum they need to deliver a hot, fresh slice of valuable software. Nothing here is ground-breaking, but it serves as a foundation for defining work when building software.

    User Story Statement Section

    First, we start with the traditional user story statement.

    As a
    I want
    So that

    This forces the author of the story to be clear about who wants what, and most importantly, why they want it.

    For the As a clause, try to be clear about a specific type of person. If your description can conjure up a mental picture of a distinct archetypal user-type, you’re doing it right. Avoid writing simply As a user at all costs. We’ve all done it, and we should all be ashamed.

    In your I want section, describe one want. If you are tempted to have more than one clause here, you might consider if an additional user story is warranted.

    With the So that clause, focus intently on the unique value this will provide to your archetypal user-type. This is the hardest clause to write, but also the most important to do well. It’s value may be obscure to some, because it does not directly contribute to the “spec” of what needs built. But this is your chance to clearly define the impact of this work to be done. It breathes life into the code to be written, and gives your designer, developer, tester, etc. a clear reason for doing what they’re doing.

    Description Section

    This is your chance to go into more detail about your user story. What should the user-facing phrasing be? What data are we working with?

    I often will take a first pass at this providing as much important context and detail as I can from the product perspective. Sometimes, a developer will go into description after I’ve written it and add a subsection for Technical Details to go more in depth on any technical nuances to the user story that should be considered during development and testing.

    Acceptance Criteria Section

    Acceptance criteria gives the team a clear basis to know when they are done with a user story. It is something we can point to and either say “Yes, we accomplished what we wanted to” or “No, this doesn’t do everything we needed”.

    I write acceptance criteria one of two ways, and sometimes I use both.

    Bullet Syntax

    Acceptance criteria can be a simple bullet-list. This is more often the case for smaller user stories, or ones that are more technical. This can be a simple, useful tool to include any non-functional requirements that need to be met to accept the user story.

    Gherkin Syntax

    When it makes sense, I write acceptance criteria in GIVEN, WHEN, THEN format. This lays out a very clear path for manually testing the user story, and this syntax can be used for behavior driven development. It becomes an executable spec that we can use directly in our automated tests.

    Example

    Here’s an example of a user story I’ve written recently:

    User Story

    As a case owner or admin
    I want to add users to my case
    So that I can collaborate with others
    And determine appropriate access levels for CRUD operations

    Description

    link to mockups

    The scope of this ticket includes setting up roles in the application. See the roles matrix for the case-specific roles in the application.

    Add a button in the top right to add case members (see mockups, only visible for case owners and admins).

    Owners and admins can add other members. The owner can add Admins, but Admins cannot add other Admins.

    After clicking the button, the user selects a person and a role, and then can save them as a member to the case. After saving, the new member should be displayed in the case members table.

    The role options will be…

    • Case Roles
      • Admin (CRUD, only visible to case owner)
      • Contributor (CRU, D data they created. Can remove items from diagram)
      • Report Editor (R, U report section)
      • View Only (R)

    Note that “Owner” is not one of the role options, because the owner is whoever created the case and there will only ever be one owner per case.

    Acceptance Criteria

    GIVEN I am a (owner, case admin)
    WHEN I add a member as a contributor
    THEN the member is displayed in the case members table with the contributor role

    GIVEN I am a (contributor, report editor, view only)
    THEN I do not see the button to add a member

    GIVEN I am “case admin”
    WHEN I am selecting the role for a new member
    THEN I can not select “case admin”

    While this template helps define the user story, it is important to remember that the user story is a placeholder for conversation. If you write this up and then immediately push it to your team to work on it, you’re missing the beauty of the user story. Bring your draft of the user story before the team and then have a conversation about it. Invite ideas and questions from others on the team. Define and come to a common understanding of the problem to be solved, or the value to be delivered. Then determine how you will bring forth that solution or value.

    If you adopt this template or some variation of it, reach out to let me know!

    Who Am I?

    I am the outlaw.
    I am the innocent.
    I am the sage.
    I am the jester.

    I am the everyman.
    I am the ruler.
    I am the caregiver.
    I am the explorer.

    I am the hero.
    I am the artist.
    I am the magician.
    I am the lover.

    I am the slave.
    I am the master.
    I am the giver of life.
    I am the wreaker of havoc.

    I am the one who decides.

    I am you.

    Blogroll

    I added a blogroll to my site! I had been thinking about creating this for a while, and the new recommendations feature in Micro.blog gave me the push to finally do it. I added it to my navigation links, but… it’s getting really crowded up there. I may have to do something about that, but I want people to be able to find my blogroll, and putting a link in any of my other pages didn’t seem quite right.

    For now, it is just a list of sites, but I’d like to add little one-liner descriptions of why I like each site. I’ve had a lot of fun discovering blogs through the blogrolls of others, and I’m excited to start to share my own recommendations! My list will grow as I discover new blogs. Right now I’ve been finding a lot of interesting blogs by clicking around at https://blogroll.org/ and https://ooh.directory/. These are awesome resources to find independent folks sharing from their own space on the web.

    My favorite way to discover sites though is through personal recommendations. The more organic, the better. Here’s my rank order of favorite ways:

    1. A personal 1:1 recommendation - “Jake! You gotta check out….”
    2. A link in a post I’m enjoying (falling down a rabbit hole)
    3. A blogroll on a personal site
    4. A blog listing site (like those linked above)

    If you have some blogs I need to check out or other ways of discovering blogs, I’d love to hear about them!

    Remember To Live, An Interactive Haiku

    days lived
    more to go
    remember to live!


    Input your own numbers into the haiku above as a reminder to yourself to live!

    For the first box, calculate your_age_in_years * 365

    For the second box, calculate your_expected_max_age_in_years * 365 - first_box_value


    calculator-1.com

    Originally I had hoped to make this much more dynamic so that you could input your current age and expected max age and I would handle all the calculating behind the scenes, but alas Javascript doth not jive with Markdown.

    Haiku

    I’m adding a new category on my site for haiku. Most of these will be quick micro-posts, but others may be longer. I have an idea for an interactive haiku but I’m not positive how that will work since my posts are published in Markdown. It should be a fun mini-project!

    To my chagrin, I tend towards rule-following, so most of my haiku will follow the 5-7-5 format. I would like to experiment outside of those lines from time to time.

    Here are some haiku I’ve been workshopping in my pocket journal:

    whatever you do
    must matter so you enjoy
    whatever you do

    I will be faithful
    all of my days are for you
    no one else will do

    flowers dance in wind
    clouds amble along slowly
    people collect likes

    quite peculiar
    is the love of a small child
    pure, strong, undeserved

    oh you fool! live more!
    think often of your deathbed
    it is near, not far

    look how far I ran
    so far to be same old me
    right where I began

    Tear It All Down

    My website looked quite different at its beginning. I thought starting a blog would be a good opportunity to play around with new technology, so I decided to teach myself SvelteKit and build my site with it. It was very exciting: I would build in SvelteKit, write all my posts as standalone markdown files, and deploy on Vercel. As I started building and exploring what other people had done to get inspiration, I came across a concept called the IndieWeb. I felt aligned with the values of this web community, so I wanted to build my site to be part of it. Suddenly, my to-do list was expanding rapidly to include all sorts of IndieWeb specs and principles. Would markdown files be enough to do everything I wanted to do? Perhaps I would need to set up a database using something like Supabase

    The more I added to my to-do list for the site, the more I began to dread working on it. This was supposed to be fun, what happened?

    I lost my Why. What I really wanted was to start writing. To have a place to share myself and to figure out how to do that. That was my Why. But I wasn’t clear on that. I thought this site would be a good place to write and be a fun coding project. Mixing those was a mistake for me. I became so consumed with perfecting the design and functionality that I had no time to think about writing.

    So what to do? I had this thing that I built, that I actually quite liked, but it was taking me further from my Why rather than toward it.

    I decided to tear it all down.

    I threw everything away and started from a blank slate. How could I just write? How could I stay connected to my Why? A blogging platform, duh! Other people have already solved the problem of creating a website whose primary purpose is publishing writing. In fact, Manton over at Micro.blog solved that problem and built his solution on the IndieWeb principles I admire, so that was the clear choice for me. I took everything I had written and migrated it over to Micro.blog, abandoning my SvelteKit project.

    After the migration, everything felt better. I had space to write, space to bring forth my Why. I still couldn’t keep myself from customizing themes and plugins to make the site my own, but a little bit of play is okay as long as it leaves my Why undisturbed.

    Why had this not been obvious in the beginning? Well for one, I didn’t even know about Micro.blog or the IndieWeb when I started out. But more importantly, my thinking had been clouded by an unclear Why and a fear of judgment, which I’ve come to realize are connected. My fear was something like, “This is supposed to be a web software guy and he didn’t build his own site from scratch? He must not really know his stuff.”

    That’s a silly fear. Who cares? Have you seen all the intelligent people working in the web space that host their sites on a platform? They’re everywhere! And yet, I could not come to that realization until I was really clear on my Why.

    I share all of this to implore you to evaluate your Why. Do you have the right Why? Are you clear on it? Is what you’re doing moving you in the right direction? If not, it’s very possible that you can make minor course corrections to get you back on track. You should try that first. But if you’ve gotten far away from your Why, don’t be afraid to tear it all down. It’s okay to start at zero. The sunk cost has already sunk, so don’t drown yourself trying to save it.

    Tearing it all down is not the fastest way to do a thing, but it may be the way to do the right thing.


    Here are some screenshots of what the site looked like before. I had a v1 for my homepage, which was ripped off from this YouTube video: Build & Deploy a Modern Web Portfolio w. SvelteKit & TailwindCSS (youtube.com). That felt fake and not like my own, so I started to simplify it into a v2 before deciding to tear it all down.

    v1 homepage

    A homepage including an intro section with a profile photo of Jake, an about section, a section highlighting the three latest posts, and a now section highlighting what Jake is up to now.

    v2 homepage

    A simplified version of the homepage showing a profile of Jake with a blurb of text and the most recent posts.

    Articles page

    A page listing links to each long-form article title and a short description of each.

    Articles page - light mode

    The articles page describe above, but in light mode.

    Article page

    The page for a single article. The article displayed is titled Reflections on Fatherhood.

    Connect page

    A page to share Jake's email and LinkedIn so people could reach out to him.

    Tags/Categories Page

    This page shows a not implemented screen, stating 'You found an easter egg! Tags have not been implemented yet. Check back soon!'. At the bottom, there is a button that says Get me out of Here!

    A Piece of My Self

    A blog post is not just a piece of writing to me. It is a piece of my self, and these pieces track the process of my becoming. Sometimes I forget and I get lost, so these pieces and connections help to bring me back to who I am and who I aspired to be.

    - Winnie Lim, in P&B: Winnie Lim

    I appreciate this reframing of a blog post as a “piece of my self”. As I set out in the early stages of my blog, this captures quite well what I aspire for it to be. Each post is one tiny piece of me, a snapshot in time of one aspect of my self I thought worth sharing. Brought together as a whole, they tell a scattered story of my wanderings.

    Some posts will be technical, some funny, some vulnerable, and some excited, because these are all pieces of my self. I look forward to looking back on years-old posts, and reminiscing where I was on my path at a given time. I already enjoy doing this with personal journal entries, but I have a sense that there will be a unique quality to reflecting on the progression of my blog.

    I am also eager for serendipitous moments when someone encounters one of these pieces of my self, and is so compelled by it that they take time to discuss it with me. Positive or negative, if someone is engaging with one of these pieces of my self then it must have struck a chord, and I think that is a decent signal that I am approximating Truth, which is one of my ultimate aims of this blog. To be truth-seeking in my self and truth-seeking in my interests.

    I already felt this a bit with my recent post on My Obsidian Daily Note Template. I was astounded by how quickly people were adopting parts of it or all of it. As I published it I thought, “Is this too ‘in the weeds’? Did I waste my time going into all this detail?”. But there were people out there, quite a few, looking for someone to guide them through these particular weeds. It is a wonderful feeling to create a point of connection. Something you and another can both behold and say, “This resonates”.

    So this, too, is one piece among others. If it resonates, I would love to hear from you.

    Now 2024-02-17

    My 7mo daughter is starting to push herself around the house backward. I’m having fun chasing her around as she unknowingly slides herself under chairs.

    I am gearing up to launch the NASA Cause Analysis Tool in late March. The product is looking really good! I’ll be able to share more about it when it shows up on our public-facing Mishap Investigation page.

    I’ve been re-organizing and adding to this site as I learn more about all the options I have with Micro.blog. I’ve also been trying to write more. I’m still working on finding a good balance with that.

    There’s a big wave of babies about to be born among my friends, so I’m looking forward to helping out and getting to meet all of my daughter’s new buddies!

    I’ve been trying out the recommended_routine - bodyweightfitness (reddit.com) for exercise. I got my equipment installed, now I just need to use it consistently. I am really liking the emphasis on stretching and flexibility. I feel great after these workouts.

    My Obsidian Daily Note Template

    I use my Obsidian daily note as my main digital jumping-off point for things like:

    • habits
    • daily log
    • tasks
    • journaling

    I’ve gathered ideas for setting this up from all over the internet over many months, and unfortunately, I don’t recall all the resources I used. Dann Berg’s post inspired my “Today’s Notes” section, and I first learned a lot about Obsidian from Nick Milo’s YouTube channel.

    Below I outline what my template looks like, and how I set it up.

    Table of Contents

    Overview

    My template allows me to have the same daily note created for me each day. Here’s what it looks like:

    Example of Jake's full daily note template

    I’ll talk more about each individual section later in this post, but overall this daily note has helped me to become more organized and focused. Its primary purpose is managing tasks and rapidly logging notes throughout the day. Having one place to collect both tasks and quick notes has been helpful for me. A nice perk of doing it in Obsidian is that those quick notes can easily evolve into standalone markdown files if they need to, but the key is having a really low friction place to capture a thought or task.

    Having my daily note link to other “periodic” notes (daily, weekly, monthly) feels very Obsidian-ish, but truth be told I don’t use the links too often. They are nice when I need them though, like quickly needing to get to something I logged yesterday.

    I used to use the 5 Minute Journal section more than I do now, but this has been replaced by analog journaling. I sort of miss having this stored digitally, and I’m sure I could hack together some awesome digital journal dashboard with Dataview, but that’s not really the point, is it? Journaling analog helps me to slow down and really reflect, which seems to make my individual sessions more meaningful. And that’s what I’m really looking for. All that being said, I do still like using the 5-Minute Journal occasionally when I’m feeling scattered and need a quick dose of mindfulness while at my computer.

    The Today’s Notes section is another one I don’t use too often, but it’s fun to have. I’m not using it to navigate between notes I’m currently working on that day, because Obsidian has great navigation features I’m using instead (e.g., tabs, search). But I do like having it whenever I take a look at past daily notes. It’s fun to see a snapshot of what I worked on any given day, and the combination of the daily log, completed tasks, and Today’s Notes paints a nice picture of what I was doing and thinking.

    Plugins

    Daily Notes and Periodic Notes

    These plugins both can create a daily note from a specified template file. Periodic Notes allows the creation of some additional types of notes, like weekly, monthly, quarterly, and yearly.

    I prefer to keep my daily notes in their own folder, and each daily note’s title is formatted as YYYY-MM-DD.

    I keep my template file in “Bins/Templates/Daily Note”.

    Here’s my config for Daily Notes:

    Here’s my config for Periodic Notes (you’ll see I also use weekly and monthly notes, which I link to from my daily note):

    Templater

    With Templater, if I create a file from a template, either manually or through Daily Notes or Periodic Notes, I can run some code from my template when the template is instantiated. This allows me to get things like the current date, daily quote, date ranges for tasks, and file title at the time when I use the template.

    You can even use Templater to run your own JavaScript during note creation, but I am not using that in the current iteration of my daily notes template.

    Here is my current config for Templater:

    The two important parts are:

    1. Specify a template folder (I use “Bins/Templates”)
    2. Trigger Templater on new file creation. You want this on so that Templater works with Daily Notes and Periodic Notes.

    I use Templater all over my daily note template, and anything between <% ... %> is Templater syntax.

    Dataview

    Dataview is a powerful way to query data across all of your notes in your Obsidian vault. For my daily note, I use it to display any notes I created or modified that day.

    I don’t believe I did anything unique with the config for Dataview, much of the setup is for viewing preference.

    Tasks

    Obsidian is the main place I track tasks digitally, and I use the Tasks plugin to do that. My full setup with Tasks warrants a separate post, but for my daily note I use it to capture tasks in my Daily Log and to display tasks that are:

    • overdue
    • due today
    • coming soon (next 3 days)
    • completed today

    I haven’t changed much from the default Tasks config. I just have it configured to add a “done date” each time I complete a task.

    QuickAdd

    QuickAdd allows running macros from anywhere in Obsidian. I have a macro setup that can be run from anywhere and allows me to quickly write up text that gets appended at the top of my Daily Log with the current timestamp.

    To configure this I created a macro called “Capture to daily note” in QuickAdd:

    QuickAdd settings config

    In the settings for that macro, I tell it where to add the text, and how to create the Daily Note if it has not already been created:

    macro settings config

    To summarize, QuickAdd looks for today’s daily note, and then inserts my supplied text after the header I supplied, which is ## Daily Log, and gives it some special formatting that I specify near the bottom of the settings. More on this in the Daily Log Section.

    Buttons

    Buttons allows you to place buttons in your notes that can run macros. I use a button in my daily note templated to run the QuickAdd macro I described above. This allows me to really quickly capture a short note to my daily log, even if I am viewing my Daily Note on reading mode (which is something I end up doing often from mobile).

    Calendar

    I use the calendar plugin to navigate between my daily and weekly notes, and to create them.

    The Template

    You can get the full template from this Gist on Github. Below I’ll break down the template by section so you can take only the pieces and parts you need.

    Frontmatter Habits

    Template

    ---
    week: <% tp.date.now('ww',0, tp.file.title, 'YYYY-MM-DD') %>
    weight:
    startEating:
    endEating:
    tags: daily
    ---
    

    Plugins Used

    • Templater

    Description

    For my habits section, I use the YAML frontmatter of the markdown file to track any daily habits. I use Templater to get the week number and save it as a property. I also use the Frontmatter to tag all daily notes with the #daily tag. After that, all additional front matter fields are used to track daily metrics, which could be things like weight, times, mood, etc.

    To be honest, I don’t use this much anymore, but it was useful when I was doing intermittent fasting. I was eating within an 8 hour window each day, so I used this section to track when I started eating, when I stopped eating, and my weight. Then, with this data stored in each daily note, I used the Obsidian Charts plugin in my weekly and monthly notes to trend my progress over time. If you are interested in how this is setup, shoot me an email and let me know.

    Example of Obsidian Charts in one of my monthly notes:

    Obsidian chart showing weight and eating windows charted over a month

    Daily Quote

    Template

    <% tp.web.daily_quote() %>
    

    Output Example

    A quote from peter drucker that says the best way to predict your future is to create it

    Plugins Used

    • Templater

    Description

    I like having a new quote at the top of each of my daily notes. Templater has a built-in function I use that returns the quote of the day when the template is instantiated.

    Title

    Template

    # <% tp.date.now("dddd, MMMM Do YYYY", 0, tp.file.title, "YYYY-MM-DD") %>
    

    Output Example

    a screesnhot showing the text Friday, January 19th 2024

    Plugins Used

    • Templater

    Description

    All my daily notes have a file title in the format YYYY-MM-DD, but I like having a more readable format that includes the weekday.

    I use the tp.date.now function to format the date from the title of the file. Here are what the 4 different parameters in the function do:

    1. Format - sets the format for the date
    2. Offset - I keep this at 0 because I want the current date. 1 would give me tomorrow, -1 would give me yesterday.
    3. Reference - the date to use. If not provided, the function uses today’s date when a note is created from it. I supply the file title here so that no matter when I make my daily note, the title in the note matches the file title. For example, I might create tomorrow’s daily note ahead of time to start taking notes for tomorrow, so I want the file title to be the date used, NOT today’s date during note creation.
    4. Reference format - the date format for #3

    Template

    [[ <% tp.date.now("YYYY-MM-DD", -1, tp.file.title, "YYYY-MM-DD") %> | ⬅️ Yesterday]] | [[<% tp.date.now("YYYY-MM-DD", 1, tp.file.title, "YYYY-MM-DD") %> | ➡️ Tomorrow]] | [[<% tp.date.now("YYYY-[w]WW", 0, tp.file.title, "YYYY-MM-DD") %> | 📖 Weekly]] | [[<% tp.date.now("YYYY-MM", 0, tp.file.title, "YYYY-MM-DD") %> | 📅 Monthly]]
    

    Output Example

    Markdown links for yesterday, tomorrow, weekly, monthly

    Plugins Used

    • Templater

    Description

    My navigation section consists of 4 links, each generated with Templater’s tp.date.now function to match the title of another “periodic” note in my vault.

    The 4 links are:

    Yesterday

    [[ <% tp.date.now("YYYY-MM-DD", -1, tp.file.title, "YYYY-MM-DD") %> | ⬅️ Yesterday]]
    
    • Use tp.file.title to get the date, offset -1 for yesterday

    Tomorrow

    [[<% tp.date.now("YYYY-MM-DD", 1, tp.file.title, "YYYY-MM-DD") %> | ➡️ Tomorrow]]
    
    • Use tp.file.title to get the date, offset +1 for tomorrow

    Weekly

    [[<% tp.date.now("YYYY-[w]WW", 0, tp.file.title, "YYYY-MM-DD") %> | 📖 Weekly]]
    
    • Use tp.file.title to get the date, format to my weekly note title format

    Monthly

    [[<% tp.date.now("YYYY-MM", 0, tp.file.title, "YYYY-MM-DD") %> | 📅 Monthly]]
    
    • Use tp.file.title to get the date, format to my monthly note title format

    Daily Log

    Template

    ```button
    name Add to Log
    type command
    action QuickAdd: Capture to daily note
    color default
    ```
    ^button-rjgc
    
    ## Daily Log
    
    

    Output Example

    Empty state

    Adding a log with the button

    Example of added log

    Plugins Used

    • QuickAdd
    • Buttons

    Description

    I like having a Daily Log section to rapid log tasks, ideas, notes, etc. throughout the day. I added a button to help me do this for two reasons:

    1. I use Obsidian mobile, and often view notes in reading mode from my phone. Having the button allows me to quickly capture a log even from reading mode
    2. I like having a timestamp for my log entries. It forces a chronological log I can look back on.

    I described how I configured the QuickAdd macro above in the QuickAdd Plugin section. Once the QuickAdd macro is configured, I can add the Button to my template and use the command type to call my QuickAdd macro.

    I do often add things to my daily note without using the “Add to Log” button. This section is where I create and store my tasks 97% of the time. That way, my task location is the daily note, so I can easily see the date it was created and I get the associated context of everything else stored in my daily note.

    Tasks

    Template

    ## [[Tasks Dashboard | Tasks]]
    
    > [!overdue]+ Due before <% tp.file.title %>
    > ```tasks
    > due before <% tp.date.now("YYYY-MM-DD", 0, tp.file.title, "YYYY-MM-DD") %>
    > not done
    > hide due date
    > hide recurrence rule
    > group by function task.tags.map( (tag) => tag.split('/')[1] ? tag.split('/').slice(0, 2).join('/') : '')
    > ```
    
    > [!due-today]+ Due <% tp.file.title %>
    > ```tasks
    > due <% tp.date.now("YYYY-MM-DD", 0, tp.file.title, "YYYY-MM-DD") %>
    > not done
    > hide due date
    > hide recurrence rule
    > group by function task.tags.map( (tag) => tag.split('/')[1] ? tag.split('/').slice(0, 2).join('/') : '')
    
    > [!coming-soon]- Due soon after <% tp.file.title %>
    > ```tasks
    > due after <% tp.date.now("YYYY-MM-DD", 0, tp.file.title, "YYYY-MM-DD") %>
    > due before <% tp.date.now("YYYY-MM-DD", 4, tp.file.title, "YYYY-MM-DD") %>
    > not done
    > hide due date
    > hide recurrence rule
    > group by due
    > group by function task.tags.map( (tag) => tag.split('/')[1] ? tag.split('/').slice(0, 2).join('/') : '')
    > ```
    
    > [!success]- Completed <% tp.file.title %>
    > ```tasks
    > done <% tp.date.now("YYYY-MM-DD", 0, tp.file.title, "YYYY-MM-DD") %>
    > short mode
    > ```
    

    Output Example

    Multiple tasks lists for overdue, due today, coming soon, and completed

    Plugins Used

    • Templater
    • Tasks

    Description

    Setting Up CSS Snippets for Callout Styles

    Before I get into the task queries for the template, I’ll mention that I use callouts to contain my task queries because I like the color-coded separation, and I like being able to collapse/expand my task lists. I have set up custom callout styles that I’ve tailored to my task system. The default styles would work fine too, but you can set up custom styles with CSS Snippets.

    I followed the docs here to get this set up.

    Under “Appearance > CSS Snippets”, click the folder icon to open your snippets folder (.obsidian/snippets).

    In this location, create a file called callouts.css that contains the following:

    .callout[data-callout="overdue"] {
      --callout-color: 255, 215, 0;
      --callout-icon: alarm-clock;
    }
    
    .callout[data-callout="due-today"] {
      --callout-color: 12, 248, 161;
      --callout-icon: check-square;
    }
    
    .callout[data-callout="coming-soon"] {
      --callout-color: 37, 202, 227;
      --callout-icon: timer;
    }
    
    .callout[data-callout="next-two-weeks"] {
      --callout-color: 42, 165, 227;
      --callout-icon: hourglass;
    }
    
    .callout[data-callout="later"] {
      --callout-color: 127, 128, 222;
      --callout-icon: calendar;
    }
    
    .callout[data-callout="no-date"] {
      --callout-color: 163, 80, 250;
      --callout-icon: calendar-off;
    }
    
    .callout[data-callout="recurring"] {
      --callout-color: 216, 191, 216;
      --callout-icon: repeat;
    }
    
    .callout[data-callout="personal"] {
      --callout-color: 240, 240, 240;
      --callout-icon: user;
    }
    
    .callout[data-callout="work"] {
      --callout-color: 240, 240, 240;
      --callout-icon: briefcase;
    }
    

    Go back to “Appearance > CSS Snippets” and click the refresh icon to reload the snippets into Obsidian’s styles.

    Now you can use these callout type identifiers to style your callouts. These are the custom callout types I use to contain different types of tasks. I don’t use all of these in my daily note, some show up in other places like my Tasks Dashboard.

    Grouping Tasks

    For my daily note, I like my task queries to show tasks in a certain date range (e.g., overdue, due today, due in the next 3 days, completed today) and then within the query, I like to group my tasks by whether they are related to work, personal, or uncategorized. I use tags to assign my tasks to projects, so I look at the tag to determine which group a task should fall into.

    My tag structure for organizing tasks has three sections: #{prefix}/{area}/{project}. An example tag would be: #p/personal/website. I prefix all project tags with p/ so that I can quickly pull them all up in the typeahead menu when I start typing a tag. The second part of the tag is the area that the project belongs to, which is either “work” or “personal” in my setup. This is what I like to group my tasks on.

    To accomplish this, at the end of my tasks query I have:

    group by function task.tags.map( (tag) => tag.split('/')[1] ? tag.split('/').slice(0, 2).join('/') : '')
    

    Here’s what this is doing for each task:

    • it looks to see, “Does this task have a tag with an area section?”
    • if it does, it cuts off the project from the end, and returns the area like: #{prefix}/{area}
    • if it does not, it returns empty

    So then my tasks fall into one of 3 groups:

    1. Personal
    2. Work
    3. Uncategorized

    My “due soon” tasks query takes grouping even further, and groups tasks first by their due date and then sub-groups into the areas I defined above.

    5 Minute Journal

    Template

    ## 5 Minute Journal
    
    ### 🌞
    **3 things I am grateful for...**
    1. 
    
    **What will I do to make today great?**
    - 
    
    **Daily affirmations**
    
    
    ### 🌚
    **What were the highlights from your day?**
    1. 
    
    **How could I have made today even better?**
    
    

    Output Example

    5 minute journal prompts

    Plugins Used

    • N/A

    Description

    This section is my quick daily dose of mindfulness when I need it. The first section 🌞 is for the morning, and the second section 🌚 is for the evening.

    Today’s Notes

    Template

    ## Today's Notes
    
    > [!example]- Created Today
    > ```dataview
    > table without id
    > file.link as Note,
    > file.folder as Folder,
    > file.ctime as "Created"
    > FROM ""
    > where file.ctime >= date(<%tp.file.title%>) AND file.ctime <= date(<%moment(tp.file.title,'YYYY-MM-DD').add(1, 'd').format("YYYY-MM-DD")%>) AND file.path != this.file.path
    > sort file.ctime desc
    > ```
    
    > [!example]- Modified Today
    > ```dataview
    > table without id
    > file.link as Note,
    > file.folder as Folder,
    > file.mtime as "Last Modified"
    > FROM ""
    > where file.mtime >= date(<%tp.file.title%>) AND file.mtime <= date(<%moment(tp.file.title,'YYYY-MM-DD').add(1, 'd').format("YYYY-MM-DD")%>) AND file.path != this.file.path
    > sort file.mtime desc
    > ```
    

    Output Example

    two tables, one showing notes created today, the other showing notes modified today

    Plugins Used

    • Dataview
    • Templater

    Description

    My “Today’s Notes” section lists any notes I created or modified during the day that the current daily note represents. I like being able to trace this history where I can go back to a daily note and see what I was working on in Obsidian that day.

    The logic for Created Today is show files that:

    • were created on or after today at 12AM
    • were created on or before tomorrow at 12AM
    • except for this daily note

    The logic for Modified Today is show files that:

    • were modified on or after today at 12AM
    • were modified on or before tomorrow at 12AM
    • except for this daily note

    Final Thoughts

    I hope this helps you with setting up your own Daily Note template! I took inspiration from many places to put this together, and I hope to give back to the Obsidian community by sharing how I use my Daily Note. It is where I spend at least 80% of my time in Obsidian.

    Reflections on Fatherhood

    Below are some thoughts I typed up the morning before my wife was induced for our first child. I recall feeling especially reflective that morning, and I was trying to prepare myself for what was ahead (note: I was/am still unprepared, but I’ve managed to figure things out on the fly so far).

    2023-07-05 Thoughts on the Day of the Induction

    Soon I am going to be a dad and my wife is going to be a mom. It is strange how major change can be right in front of my face, and yet it is hard to believe that it is coming. But how will things change? How can I know what change will be like before it has made its way into my life and started to rearrange things I once cared for? Will I be sad at losing things? Certain freedoms? Or will my values and beliefs be changed?

    It feels more like the latter, but I have no idea how that will play out. I think I will miss some freedoms from before having a baby, like getting sleep whenever I want, but on the whole, I think this will be a good change and I am really looking forward to it.

    Here is what I think will change:

    • Less sleep, especially early on
    • I will develop a larger capacity for love
    • If I do it right, I will slow down and see the world through a child’s eyes once again
    • Life will become less flexible in some ways - not able to disc golf as much, trickier to go into the office for work, etc.
    • My wife and I will need to unite around a common goal in a way that we really haven’t had to before
    • Less time to myself
    • More laughter
    • Really more of all emotions. I think life will become more vivid and intense, as long as I lean in
    • More walks (I am really excited to use the fancy stroller we got 😂)
    • Less of an aversion to grossness. Getting accustomed to changing dirty diapers and getting poo/pee on myself
    • More wonder and awe
    • More prioritizing family. It is easy to dive into work and get consumed with projects I am working on, but I think it will become easier/more important to be giving myself to my family
    • Less self-centeredness
    • Less screen time (This will not magically change on its own, but I will be focusing on this. I do NOT want to be the dad that has his face in his phone while his daughter is wanting to be seen by him.)
    • My WHY will be strengthened. I will have more purpose and conviction behind my actions.
    • The burden of responsibility on my shoulders will be increased

    Someday when my daughter describes her dad I hope she will say:

    • He loved me
    • We had so much fun together
    • He was goofy and embarrassed me in school
    • He was my example for following Jesus
    • He showed me how a good man should treat me
    • He could beat up all the other dads 😂
    • He was there when I needed a shoulder to cry on
    • He got out of his comfort zone to try things I wanted to do
    • He didn’t raise his voice at me unless he had to keep me safe
    • He loved mom
    • He encouraged my interests
    • He taught me right from wrong

    Reflections

    Now that I my daughter is over 5 months old, I’m impressed with my past self that most of his predictions were pretty close. I’d like to reflect on some of what I got right/wrong.

    Will I be sad at losing things? Certain freedoms? Or will my values and beliefs be changed?

    It feels more like the latter, but I have no idea how that will play out.

    I have found it to be true that my values have shifted some. It was not such a big and dramatic immediate change as I had expected, but I have not felt sad about losing any freedoms from before my daughter was born.

    I will develop a larger capacity for love

    I’m not sure if my capacity for love is larger or not, but close moments with her do hit differently. Baby giggles or moments when it is just the two of us looking into each other’s eyes make my heart so full.

    If I do it right, I will slow down and see the world through a child’s eyes once again

    I am still working on this, and I want to do this more. I think I will be forced into this soon, as she will begin crawling in the next couple of months, so I’m going to need to put my baby cap on to identify all the hazards we may still have on the floors.

    My wife and I will need to unite around a common goal in a way that we really haven’t had to before

    Yes. Having a baby has been very uniting, but also brings about a number of disagreements over strongly held opinions on parenting. So far, we have centered around “safety” as our tiebreaker to determine which opinion we should go with when we can’t come to agreement through talking about it. It is interesting that so many of our opinions are rooted in our own childhood experiences, so in a lot of our disagreements it is more important to empathize with each other about past experiences than to rationalize about the current situation. When we empathize, we both tend to feel much better about the approach we decide on. The core to all of this is a mutual understanding that we are on the same team, and we both want the best for our daughter, even when we are coming at it from different angles.

    Less time to myself

    Finding time for me has become much more challenging. The only alone time I’ve found has come early in the morning, before the girls are awake. Surprisingly though, changing diapers in the middle of the night has made it easier to get up early. It has been very refreshing for me to get up around 4:30 or 5:00, make a warm cup of coffee, and then either journal, read a book, or work on a personal project. I’d like to incorporate more exercise into my “me time”, but the time feels so short and I’m having way more fun doing stuff like writing this post. I know I will feel so much better if I just suck it up and do the exercise though, and I can find ways to be fast and still have time for the other things I enjoy.

    Really more of all emotions. I think life will become more vivid and intense, as long as I lean in

    When I can keep myself free from attention-grabbing distractions (looking at you, phone) and I can focus my whole being on time with my family, this is true. I have found that I am still just as prone toward distraction though, and while I get distracted with flashy colors and noises (YouTube), the color in front of my eyes slowly sucks the color out of life around me. I feel grayer and duller when I am giving into distractions. It is sad that this numbing has become the norm in our society, with so many of us getting off of work and going straight to TV, phone, video games, you name it. I think my disclaimer “as long as I lean in”, holds true here. I need to constantly check in with myself to be sure that I am leaning in.

    More walks (I am really excited to use the fancy stroller we got 😂)

    This has saved me from my lack of a workout routine. What I didn’t account for, though, was how much I’d be walking around the house carrying the baby. That is a workout in itself! I don’t think I’ve gained strength in my upper body, but my endurance is way higher now that I am carrying a baby all the time.

    More prioritizing family. It is easy to dive into work and get consumed with projects I am working on, but I think it will become easier/more important to be giving myself to my family

    This has not come automatically. I’ve tried to do this, but I have to really work for it. Work issues can seem so urgent, and personal projects can feel so much more fun than changing diapers. I must patiently remind myself of the value of being with my family when other things are constantly pulling at me. This value is realized on a scale of years, or even decades, when my family will be able to look back and see how much I loved them, even in the little moments. This perspective is hard to have when so many other things feel like they need my attention NOW and I could see results on them right away.

    The burden of responsibility on my shoulders will be increased

    This sounds so serious and heavy lol. Yes this is true, but I haven’t felt weighed down at all.

    Someday when my daughter describes her dad I hope she will say:

    I won’t be able to reflect on the real-life outcomes of this section for another 20+ years. But all of these hopes are still true. I was emotional as I wrote it originally, and I am emotional again thinking about this. It really all boils down to: I hope she feels loved by me, and I hope she reciprocates it. It feels scary to think that one or both of these could not be true in 20+ years. But I get emotional thinking about how joyful I will be if both are true.

    All in all, being a dad has been awesome. I would do it again, but not anytime too soon. Right now I am perfectly content with just having one daughter and learning how to love her well.

    Adding Space

    I’ve never considered my handwriting to be great, but I’ve been doing a lot more writing by hand recently so I resolved to make an effort to write more legibly.

    The first thing I tried was to add more space between each character and each word, and that alone made a huge difference! Actually, it’s enough of an improvement that I’m content with my handwriting for now and won’t be trying any more improvements for a while. Keeping some level of messiness feels necessary to maintain the soul of my style.

    Focusing on pushing my hand out to the right to separate each character has made my writing feel like it flows a lot better. I think before I was overly focused on cramming each word tightly together so I could maximize the space on each page. In fact, since making this change, part of me still feels guilty for taking up more space on the page with each word. Somehow it feels wasteful, and I’m surprised I could feel guilty about something so trivial. I try to remind myself that whitespace has value too. It brings separation, clarity. It lays the canvas from which each character or word is defined. Having too much ink smushed together muddles everything up. Each stroke is only as good as the accompanying whitespace that makes it a stroke at all.

    As I think about whitespace in a literal sense and how it has improved my writing, it makes me wonder about whitespace in a figurative sense. Are there areas in my life where I am trying too hard to cram “stuff” together, and a little whitespace might bring separation and clarity? What does whitespace even mean, in that sense?

    Now 2023-11-26

    Work 💼

    Working at the NASA Safety Center, part of the Office of Safety and Mission Assurance. My big focus recently has been product strategy for a new root cause analysis software we are building from scratch. I’ve also been making our safety-related data more accessible for analysis, defining how we will leverage Microsoft Power Platform, and improving our dev team’s technical capabilities.

    Family 👨‍👩‍👧

    My daughter is 5 months old now. I’m taking every opportunity I get to play on the floor with her and laugh together. My wife and I are getting back into a regular date-night routine.

    Faith ⛪

    Attending a weekly bible study at my church with my wife and our close friends. That group had no babies when we joined 2 years ago, and by next year there will be 14 babies/kids 😯

    Projects 💻

    Working on this personal website. I’ve missed having coding as a regular part of my day, so I’m tinkering on this site to remedy that.

    Journaling 🖋

    I’ve always journaled in some capacity, but I’ve really gotten back into it recently. I’m bullet journaling daily, partially to track personal to-dos, partially to log what is happening each day, but mostly to force myself to review what is happening each month and each day. The slowness of the practice helps me retain my schedule better in my brain. I’m also doing morning pages most mornings to declutter my mind at the start of each day. As part of this renewed interest in journaling, I’ve gotten back into fountain pens. Right now, I’m using a Lamy Safari with Diamine Red Dragon ink.

    Reading 📚

    See what I’m reading now at goodreads.com/jakeweido…

    Health 💪

    Working on eating smaller portion sizes and wishing I worked out more 😂 I’ve been doing random sets of pushups every now and then, but I plan to start following the Recommended Routine from Reddit’s Bodyweight Fitness Community