Skip to content

Two Years of Blogging

A look back at another year of blogging


A year ago I wrote Blogging in Numbers, a look at the first year and a half of this blog. Time to look back at another year.

Posts

20 posts this year, bringing the total to 57. Last year was the year of DAXLib and SVGs, but this year is the year of CI/CD, bringing me back to the reasons I started this blog in the first place.

The spread across the year is sporadic. I don't write to a schedule. I keep an eye out for something interesting, usually a problem at work, an announcement or something that generally sparks my curiosity. Then nothing for a couple of months. With two young kids and a day job, motivation comes in bursts and so does burnout, so I try not to force a schedule.

Below is a timeline of posts from the last year. The dots along the top are the posts in order, with a card for each below showing its views and LinkedIn numbers. Click a dot to pick out its card, filter by category, or sort by whichever number you like. The diamonds below the line are the sessions I gave over the same period, which link to the recording or slides.

{ "categories": ["CI/CD", "DAX", "Fabric", "Modelling", "Visuals"], "posts": [ {"date": "2025-10-31", "title": "DAX UDF Library AutoDocs", "url": "/posts/DAXUDF-AutoDocs/", "image": "/2026/2026-10-17-Two-Years-Blogging/thumbs/DAXUDF-AutoDocs.jpg", "category": "DAX", "views": 347, "impressions": 8375, "reactions": 66, "comments": 4}, {"date": "2025-11-20", "title": "Calendar-Based Time Intelligence", "url": "/posts/CalendarTimeIntel/", "image": "/2026/2026-10-17-Two-Years-Blogging/thumbs/CalendarTimeIntel.jpg", "category": "Modelling", "views": 207, "impressions": 5526, "reactions": 32, "comments": 1}, {"date": "2025-11-24", "title": "Fabric Graphs", "url": "/posts/FabricGraph/", "image": "/2026/2026-10-17-Two-Years-Blogging/thumbs/FabricGraph.jpg", "category": "Fabric", "views": 166, "impressions": 2606, "reactions": 24, "comments": 0}, {"date": "2025-12-23", "title": "DaxLib.SVG Compound Function Performance", "url": "/posts/daxlibCompoundPerformance/", "image": "/2026/2026-10-17-Two-Years-Blogging/thumbs/daxlibCompoundPerformance.jpg", "category": "DAX", "views": 185, "impressions": 3831, "reactions": 38, "comments": 0}, {"date": "2025-12-29", "title": "DAX Performance Tuner MCP Server", "url": "/posts/daxlibCompoundDAXPerformanceTuner/", "image": "/2026/2026-10-17-Two-Years-Blogging/thumbs/daxlibCompoundDAXPerformanceTuner.jpg", "category": "DAX", "views": 101, "impressions": 3291, "reactions": 42, "comments": 0}, {"date": "2026-01-04", "title": "DaxLib.SVG 0.2.3", "url": "/posts/DAXLibSVG-0-2-3/", "image": "/2026/2026-10-17-Two-Years-Blogging/thumbs/DAXLibSVG-0-2-3.jpg", "category": "DAX", "views": 142, "impressions": 8104, "reactions": 67, "comments": 0}, {"date": "2026-02-02", "title": "Fabric-CICD Updates", "url": "/posts/Fabric-cicd-0-1-33/", "image": "/2026/2026-10-17-Two-Years-Blogging/thumbs/Fabric-cicd-0-1-33.jpg", "category": "CI/CD", "views": 377, "impressions": 4007, "reactions": 48, "comments": 2}, {"date": "2026-02-22", "title": "Fabric-CICD - It's Official", "url": "/posts/Fabric-cicd-0-2-0/", "image": "/2026/2026-10-17-Two-Years-Blogging/thumbs/Fabric-cicd-0-2-0.jpg", "category": "CI/CD", "views": 159, "impressions": 2516, "reactions": 43, "comments": 0}, {"date": "2026-03-19", "title": "DaxLib.SVG 1.0.1", "url": "/posts/DAXLibSVG-1-0-1/", "image": "/2026/2026-10-17-Two-Years-Blogging/thumbs/DAXLibSVG-1-0-1.jpg", "category": "DAX", "views": 504, "impressions": 10835, "reactions": 75, "comments": 4}, {"date": "2026-04-28", "title": "SVG Rendering Cost in Power BI", "url": "/posts/SVG-Render-Cost/", "image": "/2026/2026-10-17-Two-Years-Blogging/thumbs/SVG-Render-Cost.jpg", "category": "Visuals", "views": 130, "impressions": 5347, "reactions": 47, "comments": 0}, {"date": "2026-05-05", "title": "CICD for Fabric Data Teams", "url": "/posts/CICD-Fabric-Data-Teams/", "image": "/2026/2026-10-17-Two-Years-Blogging/thumbs/CICD-Fabric-Data-Teams.jpg", "category": "CI/CD", "views": 162, "impressions": 2732, "reactions": 39, "comments": 2}, {"date": "2026-05-07", "title": "Musings on Agentic Development in Fabric", "url": "/posts/Agentic-Dev-Musings/", "image": "/2026/2026-10-17-Two-Years-Blogging/thumbs/Agentic-Dev-Musings.jpg", "category": "Fabric", "views": 399, "impressions": 3191, "reactions": 42, "comments": 1}, {"date": "2026-05-11", "title": "Dynamic Data Masking in Power BI", "url": "/posts/data-masking/", "image": "/2026/2026-10-17-Two-Years-Blogging/thumbs/data-masking.jpg", "category": "Modelling", "views": 214, "impressions": 4721, "reactions": 54, "comments": 1}, {"date": "2026-06-09", "title": "Fabric App Documentation Site", "url": "/posts/rayfin-zensical/", "image": "/2026/2026-10-17-Two-Years-Blogging/thumbs/rayfin-zensical.jpg", "category": "Fabric", "views": 154, "impressions": 2235, "reactions": 31, "comments": 1}, {"date": "2026-07-28", "title": "DaxLib.SVG 2.0.0", "url": "/posts/DAXLib-SVG-2-0-0/", "image": "/2026/2026-10-17-Two-Years-Blogging/thumbs/DAXLib-SVG-2-0-0.jpg", "category": "DAX", "views": 333, "impressions": 2375, "reactions": 33, "comments": 1}, {"date": "2026-08-23", "title": "Lost Connections", "url": "/posts/cicd-connections/", "image": "/2026/2026-10-17-Two-Years-Blogging/thumbs/cicd-connections.jpg", "category": "CI/CD", "views": 49, "impressions": 933, "reactions": 16, "comments": 2}, {"date": "2026-09-29", "title": "Fabric-CICD in Practice - Groundwork", "url": "/posts/fabric-cicd-first-deploy/", "image": "/2026/2026-10-17-Two-Years-Blogging/thumbs/fabric-cicd-first-deploy.jpg", "category": "CI/CD", "views": 116, "impressions": 1363, "reactions": 36, "comments": 5}, {"date": "2026-09-30", "title": "Fabric Deployment Plans", "url": "/posts/fabric-deployment-plans/", "image": "/2026/2026-10-17-Two-Years-Blogging/thumbs/fabric-deployment-plans.jpg", "category": "CI/CD", "views": 37, "impressions": 1051, "reactions": 18, "comments": 0}, {"date": "2026-10-01", "title": "Fabric CICD - Two Different Worlds", "url": "/posts/fabric-cicd-two-worlds/", "image": "/2026/2026-10-17-Two-Years-Blogging/thumbs/fabric-cicd-two-worlds.jpg", "category": "CI/CD", "views": 157, "impressions": 3368, "reactions": 40, "comments": 6}, {"date": "2026-10-15", "title": "LogicalIds and Variable Libraries", "url": "/posts/logicalid-variable-libraries/", "image": "/2026/2026-10-17-Two-Years-Blogging/thumbs/logicalid-variable-libraries.jpg", "category": "CI/CD", "views": 11, "impressions": 632, "reactions": 17, "comments": 0} ], "sessions": [ {"date": "2025-11", "title": "SVGs in Power BI", "event": "Devon and Cornwall User Group", "url": "https://www.youtube.com/watch?v=Y9FUHd5NZoQ"}, {"date": "2025-11", "title": "Fabric Fridays 102: Fabric DAX LIB", "event": "KratosBI", "url": "https://www.youtube.com/watch?v=eDuTGJMr6HY"}, {"date": "2026-02", "title": "Extending DAX with User-Defined Functions (UDFs)", "event": "Microsoft Data Platform Group Birmingham", "url": "https://github.com/EvaluationContext/evaluationcontext.github.io/tree/master/Resources/presentations/26-02-Birmingham"}, {"date": "2026-02", "title": "Graphs in Power BI", "event": "Power BI and Fabric Summit", "url": "https://github.com/EvaluationContext/evaluationcontext.github.io/tree/master/Resources/presentations/26-02-PowerBIFabricSummit"}, {"date": "2026-04", "title": "DaxLib.SVG", "event": "SQLBits", "url": "https://github.com/EvaluationContext/evaluationcontext.github.io/tree/master/Resources/presentations/26-04-SQL%20Bits"}, {"date": "2026-04", "title": "Power Hour", "event": "SQLBits", "url": "https://github.com/EvaluationContext/evaluationcontext.github.io/tree/master/Resources/presentations/26-04-SQL%20Bits"}, {"date": "2026-06", "title": "DAX Lib: From Zero to Community Hero", "event": "Havens Consulting", "url": "https://www.youtube.com/watch?v=6W25fR70lAk"}, {"date": "2026-09", "title": "DAXLib: Zero to Community Hero", "event": "Power BI Next Step", "url": "https://github.com/EvaluationContext/evaluationcontext.github.io/tree/master/Resources/presentations/26-08-PBINextSteps"}, {"date": "2026-10", "title": "Fabric-CICD: From Click Ops to DevOps", "event": "FabFest", "url": "https://github.com/EvaluationContext/evaluationcontext.github.io/tree/master/Resources/presentations/26-10-FabFest"} ] }

Speaking

After writing a series of blogs I tend to collate them into a session, and I try not to give the same session twice. Now, I don't think I am naturally a good speaker, and I am always surprised that I get positive feedback. I am definitely more comfortable writing than speaking, as I get more time to obsess over the details and ensure my points are clear. My sessions tend to be on the more technical end of the spectrum, and it is a challenge to gauge how much detail to go into, and what implied knowledge to assume without losing the audience. But I'm happy that they seem to be well received.

I got to speak at SQLBits, Power BI Next Step and FabFest, as well as a handful of user groups.

Weirdly I prefer watching a talk to reading a blog. The exception is when I'm actually trying to do something. Then a blog post wins every time, because you can follow it line by line. Which is probably why mine are written the way they are.

AI

I have mostly avoided writing about AI, and sessions on AI turn me off completely. The exception is the technical details of how AI works. I would avoid a session on how to use an MCP with Power BI but would attend one on how vector embeddings work. The same goes for Power BI: I'd skip a session on how to make a report pretty for one that goes into detail on the VertiPaq engine. I think there is a strong value in having broad technical knowledge. This is what lets you plan and steer AI, and I find myself correcting models frequently. You need that knowledge for the creative part too, the solutions the model doesn't offer because it hasn't seen them. I can spend thirty minutes to an hour on a prompt, reading the docs and thinking through every aspect, before I let it loose.

I do use AI for this blog. I have created a skill that helps with templating and reviewing posts. It scaffolds the front matter and headings, and it checks a draft for accuracy, spelling and whether it sounds like me. This helps me get over the hurdle of staring at a blank page. Generally my first prompt will be a note I transcribed while out walking, or in the shower, or reading documentation, with a list of points I want to cover, and documentation references I have already reviewed. Writing this blog is a solo endeavour, and I want it to be accurate and read well, which the skill's review helps with.

Conclusion

I'm happy with how things are going. This year's CI/CD posts brought me back to why I started the blog, and I still write for me rather than for the numbers. If something sparks my curiosity next year, it will probably end up here.

Comments