41554 blogs · [ { "id": "01a087ad-5630-723c-8ad5-7a890e71d8c9", "title": "ZSA Voyager Keyboard", "url": "https://neilgrogan.com/voyager/", "published_at": "2026-07-08T00:00:00+00:00" }, { "id": "01a087ad-563a-7239-9900-2940ade7ed8b", "title": "ZSA Voyager Keyboard", "url": "https://www.neilgrogan.com/voyager/", "published_at": "2026-07-08T00:00:00+00:00" }, { "id": "01a087ad-5632-71b5-9ba5-b4925622331d", "title": "Go Bag Pt. 2", "url": "https://neilgrogan.com/gobagv2/", "published_at": "2026-06-30T00:00:00+00:00" }, { "id": "01a087ad-563a-7239-9900-2940ae1472a6", "title": "Go Bag Pt. 2", "url": "https://www.neilgrogan.com/gobagv2/", "published_at": "2026-06-30T00:00:00+00:00" }, { "id": "01a087ad-5632-71b5-9ba5-b49256590887", "title": "Kubernetes and Nix Cluster", "url": "https://neilgrogan.com/k8s-nix-cluster/", "published_at": "2025-08-29T00:00:00+00:00" }, { "id": "01a087ad-563a-7239-9900-2940ae357138", "title": "Kubernetes and Nix Cluster", "url": "https://www.neilgrogan.com/k8s-nix-cluster/", "published_at": "2025-08-29T00:00:00+00:00" }, { "id": "01a087ad-5632-71b5-9ba5-b492572acebe", "title": "Picade", "url": "https://neilgrogan.com/picade/", "published_at": "2025-01-19T00:00:00+00:00" }, { "id": "01a087ad-563a-7239-9900-2940af2649e3", "title": "Picade", "url": "https://www.neilgrogan.com/picade/", "published_at": "2025-01-19T00:00:00+00:00" }, { "id": "01a087ad-5632-71b5-9ba5-b4925786c5e0", "title": "20 Years of this Blog", "url": "https://neilgrogan.com/20-years/", "published_at": "2024-10-24T00:00:00+00:00" }, { "id": "01a087ad-563a-7239-9900-2940af739e14", "title": "20 Years of this Blog", "url": "https://www.neilgrogan.com/20-years/", "published_at": "2024-10-24T00:00:00+00:00" }, { "id": "01a087ad-5632-71b5-9ba5-b49257dce216", "title": "Framework 13 AMD", "url": "https://neilgrogan.com/framework13/", "published_at": "2024-10-12T21:52:53+00:00" }, { "id": "01a087ad-563a-7239-9900-2940b05833a1", "title": "Framework 13 AMD", "url": "https://www.neilgrogan.com/framework13/", "published_at": "2024-10-12T21:52:53+00:00" }, { "id": "01a087ad-5632-71b5-9ba5-b4925802f436", "title": "HomeAssistant Yellow Review", "url": "https://neilgrogan.com/ha-yellow-review/", "published_at": "2024-04-21T00:00:00+00:00" }, { "id": "01a087ad-563a-7239-9900-2940b129a839", "title": "HomeAssistant Yellow Review", "url": "https://www.neilgrogan.com/ha-yellow-review/", "published_at": "2024-04-21T00:00:00+00:00" }, { "id": "01a087ad-5632-71b5-9ba5-b492587a60df", "title": "Convert Bank Transactions XLS to CSV in Python", "url": "https://neilgrogan.com/bank-xls-csv/", "published_at": "2022-11-25T00:00:00+00:00" }, { "id": "01a087ad-563a-7239-9900-2940b172a861", "title": "Convert Bank Transactions XLS to CSV in Python", "url": "https://www.neilgrogan.com/bank-xls-csv/", "published_at": "2022-11-25T00:00:00+00:00" }, { "id": "01a087ad-5632-71b5-9ba5-b49258db13ae", "title": "Linux, Freesat and Saorview", "url": "https://neilgrogan.com/linux-freesat-saorview/", "published_at": "2022-09-01T00:00:00+00:00" }, { "id": "01a087ad-563a-7239-9900-2940b1ce9526", "title": "Linux, Freesat and Saorview", "url": "https://www.neilgrogan.com/linux-freesat-saorview/", "published_at": "2022-09-01T00:00:00+00:00" }, { "id": "01a087ad-5632-71b5-9ba5-b49259ba2369", "title": "Ubiquiti Unifi with Sonos on a separate VLAN", "url": "https://neilgrogan.com/ubnt-sonos/", "published_at": "2020-05-22T00:00:00+00:00" }, { "id": "01a087ad-563a-7239-9900-2940b26ba46b", "title": "Ubiquiti Unifi with Sonos on a separate VLAN", "url": "https://www.neilgrogan.com/ubnt-sonos/", "published_at": "2020-05-22T00:00:00+00:00" }, { "id": "01a087ad-5632-71b5-9ba5-b4925a71ef4c", "title": "Ubuntu 20.04 Vagrant with Packer", "url": "https://neilgrogan.com/vagrant-ubuntu-fossa/", "published_at": "2020-05-02T00:00:00+00:00" }, { "id": "01a087ad-563a-7239-9900-2940b2d6073e", "title": "Ubuntu 20.04 Vagrant with Packer", "url": "https://www.neilgrogan.com/vagrant-ubuntu-fossa/", "published_at": "2020-05-02T00:00:00+00:00" }, { "id": "01a087ad-5632-71b5-9ba5-b4925ad86f18", "title": "Ubiquiti Home Network", "url": "https://neilgrogan.com/ubnt/", "published_at": "2019-11-10T00:00:00+00:00" }, { "id": "01a087ad-563a-7239-9900-2940b2e921fb", "title": "Ubiquiti Home Network", "url": "https://www.neilgrogan.com/ubnt/", "published_at": "2019-11-10T00:00:00+00:00" }, { "id": "01a087ad-5632-71b5-9ba5-b4925b182e7a", "title": "Scraping Transaction Data from KBC Bank", "url": "https://neilgrogan.com/kbc-tx-js/", "published_at": "2019-05-13T00:00:00+00:00" }, { "id": "01a087ad-563a-7239-9900-2940b375a452", "title": "Scraping Transaction Data from KBC Bank", "url": "https://www.neilgrogan.com/kbc-tx-js/", "published_at": "2019-05-13T00:00:00+00:00" }, { "id": "01a087ad-5632-71b5-9ba5-b4925be13205", "title": "Using IPv6 with Docker Compose on Ubuntu Server", "url": "https://neilgrogan.com/docker-compose-ipv6/", "published_at": "2019-02-08T00:00:00+00:00" }, { "id": "01a087ad-563a-7239-9900-2940b40d0dfe", "title": "Using IPv6 with Docker Compose on Ubuntu Server", "url": "https://www.neilgrogan.com/docker-compose-ipv6/", "published_at": "2019-02-08T00:00:00+00:00" }, { "id": "01a087ad-5632-71b5-9ba5-b4925cac1bc1", "title": "Learning Org Mode", "url": "https://neilgrogan.com/org-mode/", "published_at": "2018-05-20T00:00:00+00:00" }, { "id": "01a087ad-563a-7239-9900-2940b444e843", "title": "Learning Org Mode", "url": "https://www.neilgrogan.com/org-mode/", "published_at": "2018-05-20T00:00:00+00:00" }, { "id": "01a087ad-5632-71b5-9ba5-b4925cbf1b65", "title": "Favourite Podcasts", "url": "https://neilgrogan.com/fave-podcasts/", "published_at": "2018-02-01T00:00:00+00:00" }, { "id": "01a087ad-563a-7239-9900-2940b44bc244", "title": "Favourite Podcasts", "url": "https://www.neilgrogan.com/fave-podcasts/", "published_at": "2018-02-01T00:00:00+00:00" }, { "id": "01a087ad-5632-71b5-9ba5-b4925cd6b138", "title": "Python 3 In-Memory Zip File", "url": "https://neilgrogan.com/py-bin-zip/", "published_at": "2018-01-14T00:00:00+00:00" }, { "id": "01a087ad-563a-7239-9900-2940b52bd8b7", "title": "Python 3 In-Memory Zip File", "url": "https://www.neilgrogan.com/py-bin-zip/", "published_at": "2018-01-14T00:00:00+00:00" }, { "id": "01a087ad-5632-71b5-9ba5-b4925d0b8c40", "title": "The year of self hosting", "url": "https://neilgrogan.com/self-host/", "published_at": "2018-01-03T00:00:00+00:00" }, { "id": "01a087ad-563a-7239-9900-2940b57f3c00", "title": "The year of self hosting", "url": "https://www.neilgrogan.com/self-host/", "published_at": "2018-01-03T00:00:00+00:00" }, { "id": "01a087ad-5632-71b5-9ba5-b4925dbd2288", "title": "Scraping Data from your Bank in Python", "url": "https://neilgrogan.com/bank-tx-py/", "published_at": "2017-07-12T00:00:00+00:00" }, { "id": "01a087ad-563b-729d-a618-c2ad48b435ad", "title": "Scraping Data from your Bank in Python", "url": "https://www.neilgrogan.com/bank-tx-py/", "published_at": "2017-07-12T00:00:00+00:00" }, { "id": "01a087ad-5632-71b5-9ba5-b4925df3b77a", "title": "Slack Bots for Work", "url": "https://neilgrogan.com/slack-bot/", "published_at": "2017-02-16T00:00:00+00:00" }, { "id": "01a087ad-563d-73d0-9b9e-e96518490905", "title": "Slack Bots for Work", "url": "https://www.neilgrogan.com/slack-bot/", "published_at": "2017-02-16T00:00:00+00:00" }, { "id": "01a087ad-5632-71b5-9ba5-b4925ea88f70", "title": "Run Command on SSH Login", "url": "https://neilgrogan.com/ssh-login-cmd/", "published_at": "2016-11-30T00:00:00+00:00" }, { "id": "01a087ad-563d-73d0-9b9e-e96518fd2916", "title": "Run Command on SSH Login", "url": "https://www.neilgrogan.com/ssh-login-cmd/", "published_at": "2016-11-30T00:00:00+00:00" }, { "id": "01a087ad-5632-71b5-9ba5-b4925f8b6a96", "title": "iOS Shells, Prompt vs. Mosh", "url": "https://neilgrogan.com/mosh/", "published_at": "2016-11-15T00:00:00+00:00" }, { "id": "01a087ad-563d-73d0-9b9e-e96519d6e5cd", "title": "iOS Shells, Prompt vs. Mosh", "url": "https://www.neilgrogan.com/mosh/", "published_at": "2016-11-15T00:00:00+00:00" }, { "id": "01a087ad-5632-71b5-9ba5-b4925fe1e95e", "title": "Plain Text Accounting", "url": "https://neilgrogan.com/ledger/", "published_at": "2016-10-10T00:00:00+00:00" }, { "id": "01a087ad-563d-73d0-9b9e-e96519e55e64", "title": "Plain Text Accounting", "url": "https://www.neilgrogan.com/ledger/", "published_at": "2016-10-10T00:00:00+00:00" }, { "id": "01a087ad-5632-71b5-9ba5-b49260b7d707", "title": "Newsfast MSc Project in UCD", "url": "https://neilgrogan.com/newsfast/", "published_at": "2016-09-07T00:00:00+00:00" }, { "id": "01a087ad-563d-73d0-9b9e-e9651ab21f25", "title": "Newsfast MSc Project in UCD", "url": "https://www.neilgrogan.com/newsfast/", "published_at": "2016-09-07T00:00:00+00:00" }, { "id": "01a087ad-5632-71b5-9ba5-b4926175fe16", "title": "Automatic Newsletter Cleanup in Gmail", "url": "https://neilgrogan.com/gmail-newsletter-filter/", "published_at": "2016-08-19T00:00:00+00:00" }, { "id": "01a087ad-563d-73d0-9b9e-e9651b0a787b", "title": "Automatic Newsletter Cleanup in Gmail", "url": "https://www.neilgrogan.com/gmail-newsletter-filter/", "published_at": "2016-08-19T00:00:00+00:00" }, { "id": "01a087ad-5632-71b5-9ba5-b492619d3ab8", "title": "iPad Pro Review", "url": "https://neilgrogan.com/ipadpro/", "published_at": "2016-07-13T00:00:00+00:00" }, { "id": "01a087ad-563d-73d0-9b9e-e9651b398a6b", "title": "iPad Pro Review", "url": "https://www.neilgrogan.com/ipadpro/", "published_at": "2016-07-13T00:00:00+00:00" }, { "id": "01a087ad-5632-71b5-9ba5-b4926206c637", "title": "Remote: Office Not Required", "url": "https://neilgrogan.com/remote-book/", "published_at": "2016-05-01T00:00:00+00:00" }, { "id": "01a087ad-563d-73d0-9b9e-e9651c1843aa", "title": "Remote: Office Not Required", "url": "https://www.neilgrogan.com/remote-book/", "published_at": "2016-05-01T00:00:00+00:00" }, { "id": "01a087ad-5632-71b5-9ba5-b492622cfb69", "title": "Mechanical Keyboards", "url": "https://neilgrogan.com/mech-kb/", "published_at": "2016-04-15T00:00:00+00:00" }, { "id": "01a087ad-563d-73d0-9b9e-e9651c89b143", "title": "Mechanical Keyboards", "url": "https://www.neilgrogan.com/mech-kb/", "published_at": "2016-04-15T00:00:00+00:00" }, { "id": "01a087ad-5632-71b5-9ba5-b49263245de9", "title": "Ulysses App", "url": "https://neilgrogan.com/ulysses-app/", "published_at": "2016-04-01T00:00:00+00:00" }, { "id": "01a087ad-563d-73d0-9b9e-e9651d2f2dc6", "title": "Ulysses App", "url": "https://www.neilgrogan.com/ulysses-app/", "published_at": "2016-04-01T00:00:00+00:00" }, { "id": "01a087ad-5632-71b5-9ba5-b49264227289", "title": "Roost Laptop Stand", "url": "https://neilgrogan.com/roost-stand/", "published_at": "2016-03-15T00:00:00+00:00" }, { "id": "01a087ad-563d-73d0-9b9e-e9651df3a50c", "title": "Roost Laptop Stand", "url": "https://www.neilgrogan.com/roost-stand/", "published_at": "2016-03-15T00:00:00+00:00" }, { "id": "01a087ad-5632-71b5-9ba5-b492650407d8", "title": "Maintainable Software Book", "url": "https://neilgrogan.com/maintain-soft-book/", "published_at": "2016-03-01T00:00:00+00:00" }, { "id": "01a087ad-563d-73d0-9b9e-e9651e344ef9", "title": "Maintainable Software Book", "url": "https://www.neilgrogan.com/maintain-soft-book/", "published_at": "2016-03-01T00:00:00+00:00" }, { "id": "01a087ad-5633-727c-87b9-b86c9810a8b4", "title": "Dashing Dashboards", "url": "https://neilgrogan.com/dashing/", "published_at": "2016-02-15T00:00:00+00:00" }, { "id": "01a087ad-563d-73d0-9b9e-e9651f02da72", "title": "Dashing Dashboards", "url": "https://www.neilgrogan.com/dashing/", "published_at": "2016-02-15T00:00:00+00:00" }, { "id": "01a087ad-5633-727c-87b9-b86c982c4257", "title": "Fill hours worked in SAP Netweaver Automatically", "url": "https://neilgrogan.com/autohours/", "published_at": "2016-02-01T00:00:00+00:00" }, { "id": "01a087ad-563d-73d0-9b9e-e9651f0e59a7", "title": "Fill hours worked in SAP Netweaver Automatically", "url": "https://www.neilgrogan.com/autohours/", "published_at": "2016-02-01T00:00:00+00:00" }, { "id": "01a087ad-5633-727c-87b9-b86c990a2028", "title": "Automated 'Push' Restaurant menu", "url": "https://neilgrogan.com/rest-menu/", "published_at": "2016-01-10T00:00:00+00:00" }, { "id": "01a087ad-563d-73d0-9b9e-e9651fb34f18", "title": "Automated 'Push' Restaurant menu", "url": "https://www.neilgrogan.com/rest-menu/", "published_at": "2016-01-10T00:00:00+00:00" }, { "id": "01a087ad-5633-727c-87b9-b86c99788816", "title": "Adventures with Docker", "url": "https://neilgrogan.com/docker/", "published_at": "2016-01-02T00:00:00+00:00" }, { "id": "01a087ad-563d-73d0-9b9e-e96520798fa9", "title": "Adventures with Docker", "url": "https://www.neilgrogan.com/docker/", "published_at": "2016-01-02T00:00:00+00:00" }, { "id": "01a087ad-5633-727c-87b9-b86c9a1035c4", "title": "Deliveries App", "url": "https://neilgrogan.com/deliveries-app/", "published_at": "2015-12-01T00:00:00+00:00" }, { "id": "01a087ad-563d-73d0-9b9e-e965209f7229", "title": "Deliveries App", "url": "https://www.neilgrogan.com/deliveries-app/", "published_at": "2015-12-01T00:00:00+00:00" }, { "id": "01a087ad-5633-727c-87b9-b86c9a1fa6ba", "title": "Adventures with React", "url": "https://neilgrogan.com/react/", "published_at": "2015-10-22T00:00:00+00:00" }, { "id": "01a087ad-563d-73d0-9b9e-e965211fdbca", "title": "Adventures with React", "url": "https://www.neilgrogan.com/react/", "published_at": "2015-10-22T00:00:00+00:00" }, { "id": "01a087ad-5633-727c-87b9-b86c9ac25598", "title": "Automatically Decline and Delete or Accept and Delete Outlook 2010 Meetings", "url": "https://neilgrogan.com/outlook/", "published_at": "2015-10-06T00:00:00+00:00" }, { "id": "01a087ad-563d-73d0-9b9e-e96521244ea1", "title": "Automatically Decline and Delete or Accept and Delete Outlook 2010 Meetings", "url": "https://www.neilgrogan.com/outlook/", "published_at": "2015-10-06T00:00:00+00:00" }, { "id": "01a087ad-5633-727c-87b9-b86c9ad0076a", "title": "Editorial App", "url": "https://neilgrogan.com/editorial-app/", "published_at": "2015-09-10T00:00:00+00:00" }, { "id": "01a087ad-563d-73d0-9b9e-e96521b2653b", "title": "Editorial App", "url": "https://www.neilgrogan.com/editorial-app/", "published_at": "2015-09-10T00:00:00+00:00" }, { "id": "01a087ad-5633-727c-87b9-b86c9bcfafc9", "title": "Go Bag(s)", "url": "https://neilgrogan.com/gobag/", "published_at": "2015-09-01T00:00:00+00:00" }, { "id": "01a087ad-563d-73d0-9b9e-e965226022d4", "title": "Go Bag(s)", "url": "https://www.neilgrogan.com/gobag/", "published_at": "2015-09-01T00:00:00+00:00" }, { "id": "01a087ad-5633-727c-87b9-b86c9bdf624b", "title": "Services I pay for", "url": "https://neilgrogan.com/services/", "published_at": "2015-08-26T00:00:00+00:00" }, { "id": "01a087ad-563d-73d0-9b9e-e965226adcf4", "title": "Services I pay for", "url": "https://www.neilgrogan.com/services/", "published_at": "2015-08-26T00:00:00+00:00" }, { "id": "01a087ad-5633-727c-87b9-b86c9c3c41b0", "title": "Apple Watch Stand", "url": "https://neilgrogan.com/watch-stand/", "published_at": "2015-08-23T00:00:00+00:00" }, { "id": "01a087ad-563d-73d0-9b9e-e9652271da7d", "title": "Apple Watch Stand", "url": "https://www.neilgrogan.com/watch-stand/", "published_at": "2015-08-23T00:00:00+00:00" }, { "id": "01a087ad-5633-727c-87b9-b86c9cf0a77b", "title": "Soulver App", "url": "https://neilgrogan.com/soulver-app/", "published_at": "2014-11-17T00:00:00+00:00" }, { "id": "01a087ad-563d-73d0-9b9e-e96523177d4c", "title": "Soulver App", "url": "https://www.neilgrogan.com/soulver-app/", "published_at": "2014-11-17T00:00:00+00:00" }, { "id": "01a087ad-5633-727c-87b9-b86c9de22c36", "title": "Drafts App", "url": "https://neilgrogan.com/drafts-app/", "published_at": "2014-11-16T00:00:00+00:00" }, { "id": "01a087ad-563d-73d0-9b9e-e96523b97bdf", "title": "Drafts App", "url": "https://www.neilgrogan.com/drafts-app/", "published_at": "2014-11-16T00:00:00+00:00" }, { "id": "01a087ad-5633-727c-87b9-b86c9e4d600b", "title": "De'Longhi Magnifica ESAM4200 Bean to Cup", "url": "https://neilgrogan.com/coffee-machine/", "published_at": "2014-11-13T00:00:00+00:00" }, { "id": "01a087ad-563d-73d0-9b9e-e96524b94994", "title": "De'Longhi Magnifica ESAM4200 Bean to Cup", "url": "https://www.neilgrogan.com/coffee-machine/", "published_at": "2014-11-13T00:00:00+00:00" }, { "id": "01a087ad-5633-727c-87b9-b86c9f365630", "title": "Mac Mini Server", "url": "https://neilgrogan.com/macmini/", "published_at": "2014-11-12T00:00:00+00:00" }, { "id": "01a087ad-563d-73d0-9b9e-e96525b24ba3", "title": "Mac Mini Server", "url": "https://www.neilgrogan.com/macmini/", "published_at": "2014-11-12T00:00:00+00:00" }, { "id": "01a087ad-5633-727c-87b9-b86ca02ff26c", "title": "All Music Radio", "url": "https://neilgrogan.com/181fm/", "published_at": "2014-10-09T00:00:00+00:00" }, { "id": "01a087ad-563d-73d0-9b9e-e96525db6637", "title": "All Music Radio", "url": "https://www.neilgrogan.com/181fm/", "published_at": "2014-10-09T00:00:00+00:00" }, { "id": "01a087ad-5633-727c-87b9-b86ca0d55651", "title": "Going on Holidays? Check these Gadgets", "url": "https://neilgrogan.com/holiday-gadgets/", "published_at": "2014-09-13T00:00:00+00:00" }, { "id": "01a087ad-563d-73d0-9b9e-e96526d47737", "title": "Going on Holidays? Check these Gadgets", "url": "https://www.neilgrogan.com/holiday-gadgets/", "published_at": "2014-09-13T00:00:00+00:00" }, { "id": "01a087ad-5633-727c-87b9-b86ca151d2a7", "title": "Math can help you outsmart the MTA", "url": "https://neilgrogan.com/math-mta/", "published_at": "2014-09-12T00:00:00+00:00" }, { "id": "01a087ad-563d-73d0-9b9e-e9652744e890", "title": "Math can help you outsmart the MTA", "url": "https://www.neilgrogan.com/math-mta/", "published_at": "2014-09-12T00:00:00+00:00" }, { "id": "01a087ad-5633-727c-87b9-b86ca24bdc9d", "title": "Bell Curve is Wrong", "url": "https://neilgrogan.com/bell-curve/", "published_at": "2014-09-11T00:00:00+00:00" }, { "id": "01a087ad-563d-73d0-9b9e-e96527d1d679", "title": "Bell Curve is Wrong", "url": "https://www.neilgrogan.com/bell-curve/", "published_at": "2014-09-11T00:00:00+00:00" } ] posts Claim your blog
Back to Neil Grogan
Blog · corpus.blog/blogs/neilgrogan.com/posts

Neil Grogan

neilgrogan.com

2026

2025

2024

2022

2020

2019

2018

2017

2016

2015

2014