Today, as I revisited the Open Context: About - Web Services and APIs, I also started to think about how I would use Installation | Playwright Python and CDPSession | Playwright Python to interact with certain websites I have running on Chrome.
MIC-05-3 tools for finances
In preparing to meet with a financial advisor today, I was scrambling around to create a comprehensive inventory of our financial assets. It shouldn't have been that hard but I did have to do some amount of digging around. Now that I have the skeleton of an inventory, what tools should I use to fill out the outline and keep it up to date? Are there tools that will keep a financial inventory up-to-date automatically? I will work through the list at Tools and calculators - Bogleheads in search of such tools.
Let me tell you what perplexity.ai writes in response to the paragraph above:
Keeping a comprehensive inventory of your financial assets up-to-date
can indeed be a challenging task. However, there are several tools
available that can help you manage your financial inventory and keep it
updated automatically.
Portfolio Management Apps: Apps like Empower (formerly Personal
Capital), SigFig Wealth Management, Sharesight, and Yahoo Finance
can help you manage your financial portfolio. These apps can sync
with your existing accounts, providing real-time information on all
your investments in one place. They offer features like tracking
your net worth, creating a savings plan, tracking performance, asset
allocation, and fees with easy-to-read graphs and charts. Some of
these apps also offer automated investing for a fee, optimizing your
portfolio and providing daily monitoring to keep it on track with
rebalancing, dividend reinvestment, and tax-efficient
strategies refBudget Apps: Apps like Mint, YNAB (You Need A Budget),
Goodbudget, EveryDollar, and PocketGuard can help you manage your
budget and track your spending. These apps can sync with your
financial accounts, track spending, and categorize expenses so you
can see where your money is going. Some of these apps also offer
features like setting up alerts when you have exceeded your budget
in various categories, establishing goals, scheduling payments, and
reviewing your
investments refBogleheads Tools and Calculators: The Bogleheads website offers
a variety of tools and calculators that can help you manage your
financial inventory. These include tools for backtesting, Monte
Carlo simulation, tactical asset allocation and optimization, and
investment analysis. There are also tools for maintaining your
portfolio, computing and comparing tax costs, and modeling virtually
every aspect of a retiree\'s financial life. Some of these tools are
spreadsheets that you can download and use to manage your financial
inventory ref, refCredit Card Tracker Apps: If you have multiple credit cards,
apps like TPG To Go, Spending Tracker, Mint, Bill Tracker, and
Credit Card Manager can help you manage your credit cards. These
apps can track your spending, set reminders for bill payments, and
even recommend which card to use for a particular purchase to
maximize
rewards refDebt Reduction Software: If you have debts, software like
Quicken can help you manage and reduce your debts. This software can
provide a comprehensive view of your financial situation, including
your debts, and help you create a plan to reduce your
debts ref
MIC-05-2 Bike Outline Paths
I\\'m looking forward to a complete implementation of a new feature in Bike: Using Outline Paths - Bike, a language for specifying a subset of rows in an outline.
MIC-05-1 A new direction
Although I will continue working on the Bike-pandoc integration, I am stepping back to work on the bigger picture of MyInfoNet.
MIC-04-5 Recycling electronics instead of programming
No programming but I did manage to bring to the ewaste collective in Berkeley years of built up electronic waste we had in our apartment, including two Macbook Pros, an iPad, my Pixel 2, two old iPhones, and many, many cables. The fall cleaning was inspired by setting up my new phone and figuring out what to do with the Pixel 4a, which I'm hanging on to for now.
MIC-04-4 Can perplexity.ai help me give me the answer?
Tomorrow, I'll see whether the suggested function that perplexity.ai gave me does what I want.
MIC 04-3 Non-recursive walk of a panflute document
Next round of programming yields:
def panflute_to_bike_etree_nr(e, level=0) -> ET.Element:
# questions about how header levels are handled as we put them into the etree
etree = None
stack = [(e, level)]
# current ul_elem
ul_elem = None
heading_level = 0
while stack:
(e, level) = stack.pop()
print(" " * level, e.tag)
if is_inline_or_contentless(e):
li_elem = ET.Element("li")
# TO DO: handle rich text
p_elem = ET.SubElement(li_elem, "p")
p_elem.text = pf.stringify(e).strip()
# 2 things to figure out: parent_ul (where to attach li_elem) and what the current ul_elem is
if e.tag == "Header":
print ("header", e.level, e.identifier, e.classes, e.attributes, pf.stringify(e))
li_elem.attrib["data-type"] = "heading"
li_elem.attrib["data-level"] = str(e.level)
if e.level > heading_level:
# child
parent_ul = ul_elem
print ("e.level > heading_level", ul_elem)
elif e.level == heading_level:
# sibling
# parent_ul has to be ul parent of ul_elem
parent_ul = ul_elem.getparent().getparent()
else:
# e.level < heading_level
# uncle or higher
parent_ul = find_ul_ancestor(ul_elem, int(e.level)-1)
heading_level = e.level
ul_elem = ET.SubElement(li_elem, "ul")
parent_ul.append(li_elem)
else:
ul_elem.append(li_elem)
else:
if e.tag == "Doc":
etree = empty_bike_etree()
ul_elem = etree.xpath("//ul")[0]
else:
# BulletList
# OrderedList
# ListItem
print("block", e.tag)
try:
for c in reversed(e.content):
stack.append((c, level + 1))
except AttributeError:
pass
# clean up etree by adding ids
etree = add_ids_to_bike_etree(etree)
return etree
MIC-04-2 some progress
My first pass -- taking a recursive approach:
def panflute_to_bike_etree(pfe) -> ET.Element:
"""
pfe: panflute element
base_header_level: the base header level to use for the document
TO DO: handle different header levels -- might need to abandon this approach in favor of non-recursive approach with a manual stack
"""
if is_inline_or_contentless(pfe):
p_elem = ET.Element("p")
p_elem.text = pf.stringify(pfe).strip()
return p_elem
else:
if pfe.tag == "Doc":
etree = empty_bike_etree()
ul_elem = etree.xpath("//ul")[0]
else:
ul_elem = ET.Element("ul")
try:
for c in pfe.content:
e = panflute_to_bike_etree(c)
li_elem = ET.SubElement(ul_elem, "li")
li_elem.append(e)
except AttributeError:
pass
else:
if pfe.tag == "Doc":
etree = add_ids_to_bike_etree(etree)
return etree
else:
return ul_elem
MIC-04-1 Will structural pattern matching help me?
On my to-study list is a tutorial on PEP 636 -- Structural Pattern Matching: Tutorial | peps.python.org that I think will be useful to my work to convert the pandoc AST to a bike outline:
- Structural Pattern Matching in the Real World - Raymond Hettinger - YouTube
- Raymond Hettinger on X: \"Here\'s a PDF for my #Python #PyConIT2022 talk: Structural Pattern Matching in the Real World: New tooling, real code, problems solved. This is intermediate and advanced level Structural Pattern Matching. tl;dr The "good stuff" is in section 1.2 https://t.co/CwguxhRaZS\" / X
MIC-03-5 Figuring out how to use multiple versions of pandoc
Until today, I didn't worry about the specific version of pandoc
I used. However, as pandoc continues to evolve, there might be differences that affect the computations I conduct with pandoc, pypandoc, panflute, and the pandoc Python library. I don't have the energy this evening to write what I learned. Stay tuned.