devlog.md

[Blog Post Automation] Automation Chronicles: From Launchd Errors to SEO_07

Today began with tweaking power-saving settings early in the morning, followed by an extensive half-day investigation into why automated execution failed, during which I also resolved three blog interface bugs and addressed an SEO labeling issue simultaneously.

Optimized power settings were addressed first.

I have a pipeline set to automatically publish posts every morning at 7 AM, and I wondered if it would wake up precisely even when the laptop is asleep. After examining the pmset settings together, I scheduled a scheduled wake (wakeonpowern, note: corrected from wakeorpoweron for accuracy) for 6:55 AM. I executed the command and confirmed its registration using pmset -g sched before going to sleep.

The execution failed in the morning.

By 08:00 AM, it was confirmed that the scheduled job verification set for last night executed precisely at 08:00:49, yet there were no updates to the pipeline logs from 07:00 onwards since the previous night. The issue stemmed from launchd rejecting execution due to an EX_CONFIG(78) error.

It seemed to be an issue with power saving/FileVault, so I restarted the system fully and retried, but failed again. Suspecting a code signing issue with the venv Python, I wrapped it in a shell command, achieving success in isolated tests but encountering failure when applied to actual registered tasks. Changing the label name entirely resolved it temporarily—however, attempting the same with a new name again led to failure once more. After hours of iteratively formulating hypotheses and disproving them, I concluded that repeated registration and retries might be exacerbating the issue itself, thus pausing further action for now.

Three blog screen bugs have been identified.

In the meantime, launching the actual blog revealed entirely different issues. Clicking on posts displayed the homepage summary instead, links in the sidebar to popular posts redirected back to the homepage, and the sidebar stock ticker displayed hardcoded fake numbers.

SymptomsCause
Clicking on a post only displays the home summary.No conditional branching to distinguish if the theme widget is for "individual post view" existed.
Popular post links redirect to home pageVariable names used in themes were always empty despite appearances.
Text size in the table cell suddenly increases.Drop cap style captures paragraphs within the table, not just the first paragraph of the text.

During this review, I discovered that one pasted post had an unusually large HTML file size of 781KB—a remnant from directly copying content from AI Research tool screens. Using a cleanup tool streamlined this to 32KB. Further checks revealed 11 additional affected posts requiring similar treatment, though I deferred the full cleanup to a later date, focusing initially on developing the tool.

I have developed a new real-time market index widget.

We also integrated real-time market data into the sidebar charts. For the KOSPI index, we opted to utilize official open data from the Public Data Portal instead of web scraping, while other indices reused their existing data sources. Unfortunately, due to limitations with Blogger, we couldn’t directly distribute themes via APIs, so we designed a system where daily calculated values are uploaded as public files to a separate storage location, allowing visitors’ browsers to directly access these files.

SEO labels have also been organized.

Upon receiving feedback that automatically applied labels appeared overly mechanical, I revisited the implementation. Due to identical internal tags being affixed to every post, the label page had essentially become indistinguishable from the overall blog post list, causing confusion. I replaced these generic labels with more relevant keywords—specific metric terms and regional phrases—better suited for reader searches.

Trouble Shooting

SymptomsCauseSolution method
Launchd continues to fail with EX_CONFIG(78) error.Several hypotheses including power saving, signature, and name stamping were proposed but not confirmed.Renamed the name and encapsulated the code defensively, but noted it as not a verified solution and left it pending.
Sidebar script not loading silently in the browserBlogger displays script wrapped in special syntax verbatim without stripping it.Rewrite the script eliminating the syntax itself and omitting unnecessary characters.
Text within the table cell appears enlarged to 58px.The style guidelines had overly broad scope for "the first paragraph.Narrow the scope to "direct child below" to prevent overflow within the table.

Reflections / Next Steps

This reinforced the idea that when encountering inconsistent results despite repeated attempts to reproduce an issue, it's often more beneficial to document the issue thoroughly rather than persistently dwelling on it immediately—observing subsequent natural executions can provide clearer insights. Conversely, issues directly reported by users through visual inspection often yield more straightforward resolutions—underscoring the necessity of practical application and visual verification. Moving forward, my plan is to verify the successful automatic execution starting tomorrow morning and ensure all remaining dataset indices are accurately reflected.

Comments