Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
File Manager
/
blog
/
data
:
index.cache-20261026155118.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php http_response_code(404); exit; ?> a:2:{s:3:"sig";s:32:"f69656718c40504b34467891013b0db7";s:5:"posts";a:9:{i:0;a:15:{s:4:"slug";s:5:"about";s:5:"title";s:5:"About";s:4:"date";s:16:"2026-10-02 09:05";s:7:"updated";s:16:"2026-10-14 15:55";s:6:"status";s:9:"published";s:4:"type";s:4:"page";s:4:"tags";a:0:{}s:11:"description";s:18:"About daemon.devin";s:5:"image";s:0:"";s:6:"format";s:8:"standard";s:5:"media";a:0:{}s:7:"excerpt";s:16:"Hi, I’m Devin.";s:5:"words";i:389;s:7:"minutes";i:2;s:5:"plain";s:2553:"hi, i’m devin. i’m a web developer and ui enthusiast with well over a decade of hands on experience building for the web. my work bridges the gap between functional backend architecture and clean, intuitive frontend interfaces. over the years, i’ve specialized deeply in php and javascript, creating everything from custom ui frameworks to lightweight web tools. what i do full stack development: over 10+ years of experience crafting php applications, writing clean javascript, and integrating modular code bases. ui & design systems: i enjoy blending modern frontend architecture with retro futuristic and mid century modern aesthetic influences. whether it's building component libraries like themestrap https://github.com/daemondevin/themestrap or design tools like theme o matic, i aim for tools that look as good as they function. open source & side projects: outside of client and enterprise work, i'm usually working on pac man https://github.com/daemondevin/pac man . it's a fork of the portableapps.com launcher framework but its designed to support complex, modern, and legacy windows applications that portableapps.com launcher intentionally does not target. my version is not meant to replace the original. it exists to solve a different class of problems. why daemon.devin my alias daemon.devin is a clever play on words that bridges computer science concepts with my actual name. in unix like operating systems, a daemon is a background process that runs quietly and continuously in the background, handling tasks autonomously behind the scenes without needing direct user intervention. blending that technical foundation with "devin" speaks to my role as a backend focused full stack developer—someone who works under the hood, writing robust php and javascript apps, maintaining system architecture, and keeping the machinery running seamlessly behind the user interface. beyond the code when i’m not staring at a code editor or tweaking design tokens, i'm usually annoying claude with my antics.. just kidding. you can usually find me messing around with fl studio making music soundcloud profile found below , writing custom javascript games, or experimenting with ascii and vector graphics tools. in the wild github: @daemondevin https://github.com/daemondevin soundcloud: @daemondevin https://soundcloud.com/daemondevin codepen: @daemondevin https://codepen.io/daemondevin website: daemon.devn https://envs.net/ daemondevin get in touch email: daemon.devin@gmail.com secondary: daemon.devin@envs.net discord: daemon.devin ";}i:1;a:15:{s:4:"slug";s:13:"dark-dominion";s:5:"title";s:13:"Dark Dominion";s:4:"date";s:16:"2026-10-19 02:30";s:7:"updated";s:16:"2026-10-19 02:33";s:6:"status";s:9:"published";s:4:"type";s:4:"post";s:4:"tags";a:2:{i:0;s:5:"music";i:1;s:10:"SoundCloud";}s:11:"description";s:35:"A song I made called Dark Dominion.";s:5:"image";s:0:"";s:6:"format";s:5:"audio";s:5:"media";a:1:{i:0;s:48:"https://soundcloud.com/daemondevin/dark-dominion";}s:7:"excerpt";s:91:"Just testing out the format feature for TSBlog so here's a song I made called Dark Dominion";s:5:"words";i:17;s:7:"minutes";i:1;s:5:"plain";s:92:"just testing out the format feature for tsblog so here's a song i made called dark dominion ";}i:2;a:15:{s:4:"slug";s:28:"first-launch-post-for-tsblog";s:5:"title";s:29:"First Launch/Post for TSBlog!";s:4:"date";s:16:"2026-10-05 09:00";s:7:"updated";s:16:"2026-10-14 15:58";s:6:"status";s:9:"published";s:4:"type";s:4:"post";s:4:"tags";a:19:{i:0;s:6:"TSBlog";i:1;s:10:"Themestrap";i:2;s:8:"blogging";i:3;s:15:"web development";i:4;s:10:"web design";i:5;s:17:"component library";i:6;s:13:"UI components";i:7;s:10:"JavaScript";i:8;s:4:"HTML";i:9;s:3:"CSS";i:10;s:20:"frontend development";i:11;s:14:"web components";i:12;s:19:"reusable components";i:13;s:8:"open web";i:14;s:15:"developer tools";i:15;s:3:"CMS";i:16;s:14:"user interface";i:17;s:20:"software development";i:18;s:14:"web technology";}s:11:"description";s:158:"This post launches TSBlog, a lightweight, flat-file blogging system built to showcase the author's reusable UI components in the Themestrap Component Library.";s:5:"image";s:72:"/~daemondevin/blog/uploads/2026/10/tsblog-better-web-building-de000a.jpg";s:6:"format";s:8:"standard";s:5:"media";a:0:{}s:7:"excerpt";s:203:"Hi. You've just stumbled upon the very first officially posted blog entry from the very first officially hosted TSBlog blogging system! How exciting it must be for you to be witnessing history being w…";s:5:"words";i:1556;s:7:"minutes";i:8;s:5:"plain";s:4008:" welcome to tsblog hi. you've just stumbled upon the very first officially posted blog entry from the very first officially hosted tsblog blogging system how exciting it must be for you to be witnessing history being written as you read walk with me a moment.. the web wild west there was a brief, beautiful window in the early 2000s when the internet belonged entirely to the amateurs. before the web was consolidated into a handful of corporate platforms and slick, predictable templates, it was a lawless frontier built on raw curiosity. it was an era of beautifully chaotic experimentation. novices with zero formal training were building the world wide web from their bedrooms, throwing together bits of copied html, flashing gif banners, and background music that shocked your speakers on arrival. we didn't care about ui nor did we know the term " user experience "—we just wanted a small corner of the www to call our own. it was the peak of digital lawlessness i remember reading about css and a thing called div overlay . now i knew what div was thanks to html. does anyone else remember the old school div layouts phase back then? however, this was different. this meant tearing down the rigid walls of myspace with the legendary div overlay hack. we didn’t just customize our profiles; we staged a hostile takeover. armed with a chaotic string of table table table { display: none; } , we aggressively nuked the default website, leaving a blank canvas. in its place, we used position: absolute and custom photoshop backgrounds to force scrollable text boxes exactly where we wanted them. it was a brilliant, fragile illusion—a pixel perfect masterpiece held together by a prayer and a single string of stolen css. for those who don't know what i'm talking about, here's what my myspace profile page looked like back then: myspace / daemondevin/blog/uploads/2026/10/myspace f2937d.jpg we copy pasted layout codes into livejournal , spent hours customizing winamp skins, and integrated scripts like cutenews using a single, magical php include tag because we didn't even know what a mysql database was yet. everyone was learning by breaking things, fueled by a collective, unpolished enthusiasm. it was a digital web wild west see what i did there? =p , populated not by content creators or influencers or algorithms, but by programming pioneers who built simply because they were curious about code and it wasn't so overwhelming back then. anyway, there's something satisfying about building a publishing system from scratch. not because the world needs another blogging system. it probably doesn’t. but because building your own system gives you an opportunity to learn what actually goes into a project like this. i can certainly say i have a new found appreciation for bigger projects like modx and wordpress. however, those projects have their own staff and employees on an actual payroll. not to mention the immense amount of contributors thanks to their open source eco system. as they should.. well written software does deserve it but what about the little things that normally disappear beneath layers of themes, plugins, frameworks, configuration screens, and dependencies? tsblog: a throwback tsblog is my attempt at acknowledging those little things and bringing back that innovative musings from the past when things were of a simpler nature. inspired by from memory.. i'm sure it's still out there in the wild the old school flat file blogging script called cutenews by cutephp, tsblog is a nostalgic tribute to the good ol' days. it's basically a lightweight blogging and publishing system built around the same philosophy behind my themestrap component library : useful components, sensible defaults, minimal friction, and an emphasis on the actual experience of using the web. and rather than simply telling you what tsblog can do, i thought the first post should demonstrate it. so, welcome to the first post on tsblog. a blog built to showcase the system one of the fun ";}i:3;a:15:{s:4:"slug";s:27:"new-theme-and-entry-formats";s:5:"title";s:27:"New Theme and Entry Formats";s:4:"date";s:16:"2026-10-18 16:10";s:7:"updated";s:16:"2026-10-18 16:16";s:6:"status";s:9:"published";s:4:"type";s:4:"post";s:4:"tags";a:3:{i:0;s:10:"Themestrap";i:1;s:6:"TSBlog";i:2;s:13:"release notes";}s:11:"description";s:117:"TSBlog gets a Themestrap theme, six entry formats for posts, and a fix for updating when a release adds a new folder.";s:5:"image";s:0:"";s:6:"format";s:8:"standard";s:5:"media";a:0:{}s:7:"excerpt";s:103:"TSBlog now has a second theme, and posts can be more than text and a cover image. Here is what changed.";s:5:"words";i:317;s:7:"minutes";i:2;s:5:"plain";s:1737:"tsblog now has a second theme, and posts can be more than text and a cover image. here is what changed. < more the themestrap theme it has no dependencies. the slider, lightbox, tabs and menu are one small script, so there is no bootstrap, no icon font and nothing to build. to recolor it, change one variable accent in style.css . pick it under settings → theme . entry formats every post now has a format that decides what sits above its text: standard: a cover image, as before. slider: several pictures in a carousel. gallery: a grid of thumbnails that opens in a lightbox. video: a youtube or vimeo link, or an mp4 or webm file. audio: a soundcloud or spotify link, or an mp3 or ogg file. embed: a codepen link. paste the normal link from the address bar and the blog turns it into the right player. you never paste embed code. only those services are accepted, so a post cannot carry a stray frame. for pictures, one address per line works, or use add pictures to upload several at once. the format is stored in the post file format: and media: , and sqlite databases from before this change upgrade themselves the first time they open. updating if an update said it "tried to change a file updates are never allowed to touch", this is why: a blog decides what an update may change using the code it is running now, so an old blog refuses a release that adds a new folder. nothing was changed when that happened. the fix is a short bridge release first, which teaches the blog about the new folder, followed by the real release. the release tool has a bridge option for it, and the steps are in the updates docs. if you publish your own releases, build the bridge before the full release. everyone else just clicks update twice. ";}i:4;a:15:{s:4:"slug";s:23:"our-fallacious-thoughts";s:5:"title";s:23:"Our Fallacious Thoughts";s:4:"date";s:16:"2026-10-19 02:34";s:7:"updated";s:16:"2026-10-19 02:37";s:6:"status";s:9:"published";s:4:"type";s:4:"post";s:4:"tags";a:2:{i:0;s:7:"YouTube";i:1;s:23:"Our Fallacious Thoughts";}s:11:"description";s:53:"A YouTube video I made called Our Fallacious Thoughts";s:5:"image";s:0:"";s:6:"format";s:5:"video";s:5:"media";a:1:{i:0;s:43:"https://www.youtube.com/watch?v=kKr1eSjF-7Q";}s:7:"excerpt";s:76:"Now testing a YouTube video with one I made called Our Fallacious Thoughts..";s:5:"words";i:13;s:7:"minutes";i:1;s:5:"plain";s:78:"now testing a youtube video with one i made called our fallacious thoughts .. ";}i:5;a:15:{s:4:"slug";s:8:"projects";s:5:"title";s:8:"Projects";s:4:"date";s:16:"2026-10-25 22:58";s:7:"updated";s:16:"2026-10-25 23:34";s:6:"status";s:9:"published";s:4:"type";s:4:"page";s:4:"tags";a:0:{}s:11:"description";s:0:"";s:5:"image";s:0:"";s:6:"format";s:8:"standard";s:5:"media";a:0:{}s:7:"excerpt";s:153:"Here is what I am working on. Most of it follows one idea: carry only what you use. No build step, no vendor bloat, nothing that needs constant patching.";s:5:"words";i:803;s:7:"minutes";i:4;s:5:"plain";s:4000:"here is what i am working on. most of it follows one idea: carry only what you use. no build step, no vendor bloat, nothing that needs constant patching. note this page is a snapshot. projects move at different speeds, and some are further along than others. at a glance project what it is built with themestrap themestrap a zero build ui component library jquery, bootstrap 5 tsblog tsblog a blog engine that needs no setup php, optional sqlite pac man pac man a launcher framework for portable windows apps nsis portableapps portableapps portableapps i've built with pac man nsis themestrap github social preview / daemondevin/blog/uploads/2026/10/github social preview 960391.png a component library with no build pipeline. no webpack, no npm, no compile step. every component is a self contained jquery plugin that you drop in with a script tag and switch on with a data attribute. html <div data plugin hovercard data plugin options='{"side": "bottom", "delay": 200, 300 }' <a data hovercard trigger href=" " @daemon.devin</a <div data hovercard content a preview card, shown on hover.</div </div tip themestrap is what's behind this blog you're viewing = the github project page can be found here https://github.com/daemondevin/themestrap . the library covers carousels, dialogs, calendars, menus, command palettes, hover cards, markdown editing, dark mode, and a long tail of smaller pieces. a few plugins i am proud of: plugincarouselpro. a carousel with no vendor dependencies. seamless infinite loop, drag with pointer events, fade or slide, dots, thumbnails, an autoplay progress bar, lazy loading and responsive breakpoints. pluginscrollbar. a custom scrollbar written from scratch with pure css arrows and every axis and theme covered. pluginselect. a custom select that wraps the native one, so forms still submit. grouped options, type ahead, full keyboard control, and it flips upward when there is no room below. pluginalert. alerts and toasts with auto dismiss, animations, a countdown bar and a css token file you can restyle in minutes. pluginhighlight. code block enhancement and a generated table of contents, hardened with retries and a graceful fall back to plain text when a cdn misbehaves. there is also a dependency aware module loader that knows about the plugins, a manifest and documentation page to go with it, and a showcase mailbox app that puts eleven plugins to work in one real screen. every plugin ships with a demo page and a markdown guide. tsblog tsblog better web building / daemondevin/blog/uploads/2026/10/tsblog better web building 4d6e4a.jpg the blog you are reading. it is a blog engine for people who want to write. no setup. upload it, open it, choose a password. posts are plain files, or optionally one sqlite database. fast and light. a small theme, no third party scripts, clean addresses, an rss feed, a sitemap and sensible search metadata. a real writing experience. markdown, a simple mode for people who would rather not see it, scheduling, and drafts. entry formats. standard, slider, gallery, video, audio and embed posts, with players built from a plain link. everything in the box. github style alerts, reference links, light comments with spam protection, and an analytics page with hover cards for visitor ips. updates from the admin. it checks for a new release, downloads it, checks the signature, and swaps the files in, with a way back. it reuses themestrap plugins wherever they fit, and where one was missing i built it. pac man pac man / daemondevin/blog/uploads/2026/10/pac man 151b59.jpg pac man https://github.com/daemondevin/pac man is my launcher framework for portable windows apps. it builds on the official portableapps.com launcher and goes further, for the apps that need services, scheduled tasks, dll registration, drivers, registry and file redirection, fonts and firewall rules. each feature is its own segment, so a launcher only carries what it uses, and your system goes back to how it was when you close the app.";}i:6;a:15:{s:4:"slug";s:35:"reference-links-alerts-and-comments";s:5:"title";s:36:"Reference links, alerts and comments";s:4:"date";s:16:"2026-10-22 22:30";s:7:"updated";s:16:"2026-10-22 23:05";s:6:"status";s:9:"published";s:4:"type";s:4:"post";s:4:"tags";a:3:{i:0;s:6:"TSBlog";i:1;s:10:"Themestrap";i:2;s:13:"release notes";}s:11:"description";s:112:"TSBlog now understands reference-style links and GitHub alerts, and has a lite comment system you can switch on.";s:5:"image";s:0:"";s:6:"format";s:8:"standard";s:5:"media";a:0:{}s:7:"excerpt";s:78:"Three additions this time: reference links, GitHub style alerts, and comments.";s:5:"words";i:289;s:7:"minutes";i:2;s:5:"plain";s:1630:"three additions this time: reference links, github style alerts, and comments. < more reference links write the address once and reuse it. the definition can sit anywhere in the post and never shows on the page: images work the same way alt logo , and names are not case sensitive. alerts start a quote with note , tip , important , warning or caution and it becomes a highlighted box: note useful information. they are drawn with themestrap's pluginalert, with an icon, a title and colors for light and dark mode. the script only loads on posts that contain an alert, and without javascript you still get a plain colored box. comments comments are off until you turn them on under settings → comments. pick one of: i approve each comment first. new comments wait in the admin. show comments right away. a comment with more than two links still waits. closed. existing comments stay, no new ones are accepted. readers give a name, an optional email never shown and their comment, and can reply one level deep. the admin has a comments page to approve, mark as spam or delete, with a count of what is waiting. spam is handled without a captcha: a form token, a hidden trap field, a per visitor rate limit, a link limit and duplicate detection. everything lives in one private file, data/comments.php, which works the same with files or sqlite and is included in the backup. both themes show comments out of the box. if you made your own theme, add one call to ts comments section $post in post.php. the comments page in the docs has the details. updating this release adds no new folders, so one click on update is all it takes. ";}i:7;a:15:{s:4:"slug";s:16:"vs-code-portable";s:5:"title";s:16:"VS Code Portable";s:4:"date";s:16:"2026-10-19 07:34";s:7:"updated";s:16:"2026-10-19 07:56";s:6:"status";s:9:"published";s:4:"type";s:4:"post";s:4:"tags";a:4:{i:0;s:7:"VS Code";i:1;s:8:"portable";i:2;s:7:"pac-man";i:3;s:3:"paf";}s:11:"description";s:0:"";s:5:"image";s:52:"/~daemondevin/blog/uploads/2026/10/vscode-e7a6e2.jpg";s:6:"format";s:8:"standard";s:5:"media";a:0:{}s:7:"excerpt";s:203:"My VS Code Portable now runs on the newest pac-man, and that means a portable launcher that cleans up after itself even when it crashes. Every change it makes to Windows is written down before it happ…";s:5:"words";i:1766;s:7:"minutes";i:9;s:5:"plain";s:4000:"my vs code portable now runs on the newest pac man, and that means a portable launcher that cleans up after itself even when it crashes. every change it makes to windows is written down before it happens and undone when vs code closes, or on the next launch if something went wrong. if you haven't met it before: pac man https://github.com/daemondevin/pac man portableapps compiler & management is my launcher framework for portable windows apps. it's built on top of the portableapps.com launcher pal , but it isn't pal and doesn't replace it. pal deliberately stays away from apps that need services, drivers, firewall rules, scheduled tasks or shell integration. pac man exists for exactly those apps, and treats every launch like a transaction rather than an install. this post covers what changed in the framework, what that made possible for vs code portable, and the bugs that fell out along the way. the journal: every change comes with its undo the core of this release is a journal: before the launcher changes anything on your pc, it writes down how to undo that change. when the app closes, the launcher works back through the list, newest first, until nothing is left. if the launcher is killed, the pc loses power, or the usb stick gets pulled mid session, the undo steps are still in the journal. the next launch notices, tells you, and rolls back the old session before changing anything new. a few details that make this hold up in practice: it lives on the pc, not the stick. the journal is kept under hkcu\software\pac man\journal , and backup files under %localappdata%\pac man\journal , so recovery works even if the stick comes back with a different drive letter. undo steps are safe to run twice. if a recovery is itself interrupted, the next one simply picks up where it stopped. one rollback, in a fixed order. segments are undone in the reverse of the order they were applied, so nothing is removed while something else still depends on it. it covers 14 kinds of change. that's registry keys and values, files and folders, links, fonts, services, com dlls and type libraries, scheduled tasks, drivers, text lines and commands. five segments rewritten on the journal five segments were rebuilt from scratch on top of the journal this round. each one is switched on with a single line under activate and configured with numbered sections in the launcher ini. segment what it does how it's undone associations file types, url protocols and context menu entries, written under hkcu\software\classes only. it never touches windows' own default app choice; a type that already has a handler just gains an "open with" entry. new keys are deleted, replaced keys are re imported from a backup, changed values are put back. firewall temporary firewall rules through netsh, tagged so the launcher only ever removes its own. its rules are deleted; a rule someone else made is left alone. commands that need admin rights wait until they have them. tasks scheduled tasks the app needs while it runs. tasks that would store a password are refused. the task is deleted, and a task it replaced is re created from its exported xml. drivers driver packages added to the driver store for the session. the package is found by content in the driver store and removed with pnputil. runtime visual c++ and .net checks that run before anything else changes. a missing runtime can come from a portable copy put on path, or set as dotnet\ root for the app's process only. nothing to undo. the one exception, installing a runtime system wide, only happens after a prompt that says it's permanent. fonts, symlinks, regdll, services and hosts already run on the journal, so a launcher can now combine any of these and still get one clean rollback, in a fixed order, on exit or after a crash. what vs code portable gets out of it vs code portable is the first package rebuilt on all of this, and about 150 lines of hand written registry code are gone from it. here's what you'll notice: open with code por";}i:8;a:15:{s:4:"slug";s:35:"what-s-new-in-tsblog-and-themestrap";s:5:"title";s:35:"What's new in TSBlog and Themestrap";s:4:"date";s:16:"2026-10-14 15:59";s:7:"updated";s:16:"2026-10-14 16:00";s:6:"status";s:9:"published";s:4:"type";s:4:"post";s:4:"tags";a:3:{i:0;s:6:"TSBlog";i:1;s:10:"Themestrap";i:2;s:13:"release notes";}s:11:"description";s:118:"One-click updates, a friendlier writing screen, and a handful of new Themestrap plugins. Here is what changed and why.";s:5:"image";s:0:"";s:6:"format";s:8:"standard";s:5:"media";a:0:{}s:7:"excerpt";s:144:"TSBlog has had a busy week, and a lot of the work spilled over into Themestrap, the component library it is built on. Here is the short version.";s:5:"words";i:308;s:7:"minutes";i:2;s:5:"plain";s:1785:"tsblog has had a busy week, and a lot of the work spilled over into themestrap, the component library it is built on. here is the short version. < more tsblog it can update itself. open settings, press check for updates , and if there is something new, install it with one click. every release is signed, checked before anything changes, and backed up first, so you can go back with a single button. your posts, pictures and settings are never touched. a nicer writing screen. the publish date has a proper calendar, and the time has a picker of its own or just type 8:30pm . every dropdown is now a clean custom select, the number fields have real plus and minus buttons, and the questions it asks you, such as "delete this post?", appear as dialogs instead of the browser's plain boxes. leave with unsaved changes and it asks first. tags you can paste. paste design, css, javascript and you get three tags, not one long one. it skips duplicates and tells you if a post is over its limit of twenty. better posts for readers. posts get a thin reading progress bar and a soft "keep reading" fade. both can be switched off in settings. safer sign in. the login and setup screens were rebuilt, with inline errors and a lockout countdown after too many wrong passwords. themestrap new: pluginnumberinput a styled stepper and plugintimepicker a popover time picker that pairs with the calendar . plugindialog gained confirm and alert , so replacing a browser prompt takes a few lines. pluginselect now fires normal change events and opens a long list at the selected item. plugintagsinput splits pasted lists into separate tags. pluginauth was rewritten to work with any backend, not just modx. pluginscrollshadow can fade the edge of the page, and the markdown plugins got a security fix. ";}}}