RSSAmplifier

Blog

Writings about development, tech, and life.

Creating the things I want to exist and sharing what I learn along the way.

jace.proRSS feed ↗336 posts

Latest posts

Setting Up a ServiceNow MID Server in 3 Minutes (No Docker Hub Required)

Spinning Up a ServiceNow MID Server Without Docker Hub The moers/mid-server image on Docker Hub is convenient, but what if you want to understand what’s actually happening under the hood? Or what if you need to run a MID server on a machine without internet access to Docker Hub? Turns out, ServiceNow publishes version-specific MID server container recipes directly from your instance. You just need…

ServiceNow's New AI Pricing Tiers

ServiceNow has been making some big waves on their SKUs last week to “include AI” with all of them, allegedly. I take this all with a grain of salt until I can actually try it. The announcement ServiceNow announced giving customers AI-native experiences across all products and packages on April 9th, 2026. I thought this meant they were going to include Now Assist in all their SKUs. I got this…

ServiceNow AI Tools You Can Use Today

ServiceNow just made a big announcement about AI in every SKU but you can’t actually use most of it yet. No GenAI on PDIs, no clear tier limits, and current customers won’t see changes until renewal. So what can you use right now? Here’s everything I know of. A pretty post on the difffernces here is laid out nicely by Lukasz Szumilas here . Data exploration MCP Servers MCP servers let AI tools…

Setting Up Writebook on Coolify

Basecamp (37signals) recently released Writebook - a simple, self-hosted application for publishing books on the web. It’s a Rails app distributed as a Docker image, and I wanted to run it on my Coolify server. Should be straightforward, right? Well, almost. What is Writebook? Writebook lets you publish content in Markdown, with support for picture pages, chapters, and title pages. Books can be…

Comparing AI Harnesses: OpenCode, Ollama, LM Studio, Claude Code, Open WebUI, and VS Code

Every week there’s a new AI coding tool. I’ve been testing the ones that actually matter: OpenCode , Ollama , LM Studio , Claude Code , Open WebUI , and VS Code with Copilot . They all take different approaches and honestly some of them aren’t even the same kind of thing. Let me explain. The quick version Open Source Runs Offline Has Agent Tools Cost OpenCode Yes (MIT) Yes Yes, 15 built-in Free…

Just use a VPS bro

https://www.youtube.com/watch?v=40SnEd1RWUU&t=5s I wanted to take a few minutes and detail out the steps Kai made making his video as they apply to … .probably many things I’ve set up. Let’s get into it. Continue. “”" kai: I want to install Open Claw and set up my personal AI assistant. ai: Just use a VPS. It’s like a oneclick install. kai: Oh, I was just going to buy a Mac Mini. ai: No, you need…

CLIs are for AIs and here is my list

I’m noticing that there’s a bunch of CLI’s being created recently to interface with common tools that we all use. And I wanted to make a short list of them so I didn’t have to keep googling for them occasionally. In case anyone else finds this useful, below is that list. CLIs Official CLIs by vendor Basecamp CLI Google CLI Fluent SDK (ServiceNow) Bitwarden CLI CLIs made by others or tools…

K24 and K25: A late review of the schedule I had

I think it’s fun some times to reminisce about things I’ve done and wonder about things others have. I was setting up a new bookings page and noticed I still had the schedule for K24 and K25. K24 Day 1 Attendee Breakfast Put AI to work for people Provide just-in-time training to users with Guided Tours Amplify asset governance with ServiceNow SAM and HAM Attendee Lunch Welcoming wizards: The…

Turn an Old Chromebook into a Coolify Server with Lubuntu

I had an old Acer Chromebook CB3-431 sitting around - 4GB RAM, 32GB eMMC storage. Not much, but enough to run a lightweight server. Here’s how I turned it into a Coolify-managed server. The Hardware Acer Chromebook CB3-431 (Intel Braswell, board name: EDGAR) 4GB RAM 32GB internal storage No ethernet port (WiFi only) Why Lubuntu? I initially tried Ubuntu Server and a few other distros, but ran into…

Supporting Netlify _redirects on Coolify er nginx

Using Netlify-style _redirects with Coolify I’ve been hosting this site on Coolify for a while now, and it’s been great. But one thing I missed from my Netlify days was the simple _redirects file. You know, the one where you just write: /old-path /new-path 301 And it just works. Recently, I needed to change a URL on my site - /submit-session to /speak . On Netlify, this would be a one-line change…

Setting up Email Forwarding to Basecamp in Microsoft 365

How to Set Up Email Forwarding to Basecamp in Microsoft 365 This guide walks through setting up external email forwarding from a Microsoft 365 shared mailbox to Basecamp (or any external address)! Overview Microsoft 365 has two layers that control email forwarding: Mailbox Forwarding Settings - Where you configure where to forward emails Outbound Spam Filter Policy - Controls whether external…

AI In A Box Hackathon: What We Built, What We Learned, and All the Data

AI In A Box Hackathon: What We Built, What We Learned, and All the Data When I kicked off the AI In A Box Hackathon, my main goal was simple: get people actually using AI In A Box on ServiceNow. Honestly, I thought if I could get enough folks building with it, the value would speak for itself and maybe I’d land a few new customers. That didn’t happen. At least, not yet. But here’s what did happen…

Product vs Service in ServiceNow

ServiceNow has Products and Services. They’re not the same thing. Here’s the difference. TLDR Products are what you sell to customers (SOMT, Product Catalog). Services are what you deliver and support internally (CSDM, CMDB). A customer buys a “1 Gigabit Internet Plan” (Product). You provision and manage a “Fiber Internet Service” (Service). The Breakdown Aspect Product (Product Offering) Service…

Deleting a ton of records in ServiceNow

Someone needed to delete 25+ million records from metric_instance. Here’s what happened. TLDR Use Table Cleanup Policies. They don’t trigger business rules (unless iterativeDelete is set), run in 20-minute batches, and are designed for this. Make sure your query has good indexes or it’ll timeout at 30 seconds. Expect days, not hours. Test first. The four methods ServiceNow gives you four ways to…

Batch update ServiceNow store apps with one script

Got a bunch of ServiceNow store apps that need updating? Here’s a script from Eric Riemer that makes it painless. I have this here cause it’s super useful. The problem You have 10+ store apps that need updates. Clicking through each one individually is tedious. The solution Use the CI/CD Batch Install API to update them all at once. This script: Finds all installed store apps with updates…

Using Rclone on s3-compliant buckets

What is s3 S3 is a pretty neat idea. It’s a place to store files for a price. What’s really nice about using S3 is you can store larger static assets or build assets and not have to include them in your build. Or you can use it as a place to store your backups of your databases. How can RClone help? Rclone is a command line utility that lets you connect to and work with a bunch of storage to store…

Changing the popup/hover over view in ServiceNow

Today I was looking at an issue and had trouble finding the documentation for the hover overview. That’s cause it’s not called that. It’s called the “popup” view or “ sys_popup ”. This is a rewrite of the fine work Roger Chew did on the community here . If there is no defined sys_popup view ServiceNow will default to using the “ default ” view. If the view sys_popup,[viewname] exists, then this…

Restore Record when Restore is not working

Sometimes in ServiceNow, the standard restore function for deleted records may not work as expected. In such cases, you can manually recreate the record using its XML representation and GlideRecord scripting. // we are going to recreate a record; var recordXML = '<?xml version="1.0" encoding="UTF-8"?><ais_search_source><active>true</active><condition…

Kevin Clark created Service Portal Redirector

Sometimes you need to redirect users to an appropriate Service Portal based on various conditions. For example, you might want to redirect users based on their role, department, or location. This usually requires dealing with ui scripts, the SPEntry script, and possibly other components. To simplify this process, Kevin Clark created the Service Portal Redirector . I haven’t used it, however it’s a…

WIP Guide to URL Parameters in ServiceNow

I realized when I was looking for the “do not add url to history” param that I didn’t have a good list of URL parameters for ServiceNow. So I started compiling one here. This is a work in progress. If you have any to add, please let me know. Stop redirections sysparm_view=manage_security Add sysparm_view=manage_security to stop being navigated away. That’ll let you see the form and XML. If you…

Do you need a CI and not the matched Asset? Enter skip_sync

A few years ago I was digging into how Assets and CIs interact on ServiceNow. I came across this article that explains the skip_sync field on Asset or CI records. What is the skip_sync field on Asset or CI record - Support and Troubleshooting (servicenow.com) What is the skip_sync field on Asset or CI record Issue For the latest information on this topic, see Configuration Item [cmdb_ci] class.…

What is an ACL

Access Controls (or also known as Access Control Lists - ACLs) are a way to define who can see what within a system. In ServiceNow, ACLs have always been part of the platform. Access controls apply the most finely grained rule and then if none apply, it gets more vague rules until it finds one that applies. If none apply, access is denied. You can have ACLs on many different things: Table level…

SkyGiraffe and the Rise of Mobile-First Work: A Builder’s Reflection

This is part of a series I’m writing to inspire myself and other builders by shining a light on companies that ServiceNow has acquired. If you’re dreaming of building something yourself, these stories aren’t just history, they’re playbooks with lessons we can learn. Today, we look at SkyGiraffe , a company that took on a challenge nearly every enterprise faces, and did it with clarity, conviction,…

ServiceNow’s Acquisition of Qlue

The Spark in the Conversation: What We Can Learn from ServiceNow’s Acquisition of Qlue By a Builder, For Builders – A Series on What Past ServiceNow Acquisitions Teach Us About Innovation In the spring of 2017, ServiceNow quietly made a move that would later become foundational to its journey into AI-powered service experiences: it acquired a small startup called Qlue for $6.6 million. To many,…

Predicting the Future: The DxContinuum Story

This is part of a series I’m writing to inspire myself and other builders by shining a light on companies that ServiceNow has acquired. If you’re dreaming of building something yourself, these stories aren’t just history, they’re playbooks with lessons we can learn. A Glimpse into DxContinuum Founded in the heart of Silicon Valley, DxContinuum set out to make machine learning practical for…

BrightPoint Security: Automating Trust for the Enterprise

This is part of a series I’m writing to help remind myself (and anyone else building) that it’s possible. These aren’t just stories about companies ServiceNow bought. They’re reminders that someone out there built something worth acquiring. The Origin of BrightPoint Security BrightPoint Security started out in the early 2010s under the name Vorstack. Back then, enterprise security teams were…

Calling Server Side Script includes from UIB Client Scripts

This could be improved a lot. Let’s first talk about how this is working for me. Everything I read to do this either says make a rest call or use the “new transform data resource”. When trying the data resource it never seemed to run the script include. So I went with rest. I’m sure I missed something I’ll be asking Tomas about this. My working steps. Find or Create a Script Include Create a REST…

Neebula - Startup to Acquisition

The Story of Neebula: From Startup to Strategic Acquisition This week, I’ve been looking into the story of Neebula Systems , a company founded by Yuval Cohen , Ariel Gordon , and Shai Mohaban . Their central idea was simple but powerful: what if infrastructure wasn’t viewed in terms of servers and applications, but rather by the business services those systems actually deliver? They called their…

The 9-Year Overnight Success: Mirror42s Path to Enterprise Mastery

The Midnight Distraction It’s 1:33 AM. I should be fixing a bug, but here I am writing this post again. I got sidetracked reading an old ServiceNow press release from 2013. “ ServiceNow acquires Mirror42 to power Performance Analytics. ” I remember Mirror42, kind of. But I never really knew the story behind it. Turns out, it wasn’t just some BI tool that got scooped up and forgotten. Karel van der…

From Startup to ServiceNow: The Story of ITapp

This is part of a series I’m writing to inspire myself and other builders by shining a light on companies that ServiceNow has acquired. If you’re dreaming of building something yourself, these stories aren’t just history, they’re playbooks with lessons we can learn. What Was ITapp? Founded in 2012 and based in San Jose, ITapp set out to make managing cloud infrastructure easier for businesses.…

From Consultant to Catalyst - Intreis and the GRC Shift at ServiceNow

Back in 2012, I spent many evenings and weekends on the ServiceNow Community, answering forum posts, helping people troubleshoot tricky platform issues, and doing whatever I could to level up. (Shoutout to October 2013 - Member of the Month was a proud moment!) While I was busy solving problems post by post, something bigger was brewing behind the scenes: a small group of consultants saw an…

Rails, sqlite, Hetzner, Kamal2

You’ll need a few things to get started here. A docker registry (I’m using hub.docker.com ) with an access token A SSH Key A server (I’m using Hetzner ) with a SSH Key A folder on the server where we’ll store our sqlite and other storage stuff. dovenvx to allow us to set up the secrets and environment variables easily.is a work in progress and isn’t complete. Table of Contents 1. Getting Started…

Hiding follow on tables in ServiceNow

To remove the “Follow” button, you can do this by disabling the live_feed in the dictionary of the collection record. Goto the sys_dictionary table and look for the table where the type is collection. Add live_feed=false, if there’s already something there put a comma before this. Thanks Ankur for posting this .

Mobile Development on ServiceNow is different

I was looking at the mobile setup for ServiceNow today because I was asked by someone how to get this to work. And it turned into a scavenger hunt, even with these notes here. Turns out you need a lot more than just what I thought we needed. Plugins needed Mobile Studio ( com.glide.sg.studio ) Geolocation ( com.snc.geolocation ) Service Management Geolocation (…

Reading flows encrypted and compressed values

The other day, I was on the community slack, and a question popped up about reading the values for flows (flow designer, subflows, etc). I was under the impression that the data was all still in the giant sys_variable_value table. This has changed. Now it’s in the sys_hub_action_instance_v2 table. The baffling part about this table is the data on it is compressed and in base 64. Anders Figenschow…

The approval field and why it works the way it does

There’s the told approval engine that I believe evaluates the sysrule_approvals and process_guide records. There’s a number of approval rules against sc_request Depending on how the approval_engines.do page is configured controls how the legacy approvals work. Lets look at the three tables in question; Catalog Task is set to use Process Guides Requested Item using approval engine when it’s…

2024 VPS host pricing

Virtual Private Servers… There’s a little bit to know here. I was trying to find a good comparison site. Didn’t see one so thought I’d toss my notes up here. These prices were as of December, 2024. Not all hosts are the same. Shared vCPU = Allowing multiple customers to compete for the same vCPU Dedicated vCPU = No one else can have it vCPU = # processors ✖️ ( # cores ✖️ # of threads ). E.g. my…

Quirks of db_image, db_video, and db_audio in ServiceNow

The db_image , db_video , and db_audio tables in ServiceNow do something interesting: they completely ignore access controls (ACLs). That means any file stored here is publicly accessible. While this is great for assets like images in public-facing knowledge base (KB) articles, it does come with some caveats. For example, files from these tables are served straight from the root domain (e.g.,…

App Administration VS Delegated Development

I’m building a solution and as part of this, I’m trying to make a easy to show interactive environment. One of the things I was thinking about was setting up Delegated development on my Personal Developer Instance. It became apparent to me that I didn’t understand Application Administration compared to Delegated Development, at least not how the docs say. If you’re coming across this and want to…

How to change the MOTD on Ubuntu

The Message of the day on linux is helpful, but its long and… a little hard for things to stand out. I had a few questions about the MOTD. Where is it stored? How is it set up? Can I change it? If I can, how can I test it? Where is the MOTD stored? The message of the day on Ubuntu is stored in the /etc/update-motd.d/ folder as a number of scripts. You can view these scripts by running ls -la…

Table Cleaners - Troubleshooting

Sometimes you need to answer questions like “Why does this do this?” or “How does this work?” This is a set of notes on these kinds of question regarding table cleaners. Properties property default value description glide.db.tablecleaner.days_before_slow_rule_reattempt 2 When a table cleaner rule has a query that takes longer than 30 seconds to complete, the entire table cleaner job is stopped. By…

Run a Trigger as System from a script

How to excute a script as system - Support and Troubleshooting (servicenow.com) //get the gr of whatever record you want current to be on the script var gr = new GlideRecord ( "sc_req_item" ) ; gr . get ( "aeed229047801200e0ef563dbb9a71c2" ) ; //execute one second after running this script var gdt = new GlideDateTime ( ) ; gdt . addSeconds ( 1 ) gs . info ( gdt ) ; //define the script you want to…

Developer Guidelines (have ai rewrite each line in my voice)

Update sets If an update is identified to be in the incorrect update set (or should not be in an update set), go to `sys_update_xml` table and change the update set field to reflect the correct update set (Default in the appropriate scope if removing). The Description field on each Update set can include a brief description of the change being made for future reference. You can copy and paste the…

Batching Updates (GlideRecord and GlideMultipleUpdate)

Update Many does not need .query() Update Many does not work with .chooseWindow() or .setLimit() Glass’ Putan Post Updating Multiple Entries | Glass 'putan with Service-Now (wordpress.com) This does not work for inherited tables. For example if you inherit from task (incident, change) and try to use a field on task in your query clause, you will end up updating every record How to do it: Normally…

Approval field and why it works the way it does

There’s the told approval engine that I believe evaluates the sysrule_approvals and process_guide records. There’s a number of approval rules against sc_request Depending on how the approval_engines.do page is configured controls how the legacy approvals work. Lets look at the three tables in question; Catalog Task is set to use Process Guides Requested Item using approval engine when it’s…

Do you need new JavaScript to work in ServiceNow?

Sometimes you need new code converted to things ServiceNow understands. Arrow functions now work in ServiceNow in some places but not others. let , const same thing. Here’s a way to take any new script and make it work. This is called transpiling. It’s complicated. The way I understand it is, you give it new code, and it makes it work with and older set of JavaScript features that were available a…

Tools I am tracking

Tools I’m tracking Look, in the circles I run we all use ServiceNow, but sometimes, you want a solution that doesnt have that same enterprise price. This is my note on what tools I’ve been dabbling with. Tool Custom Forms Automation Whose Database Pricing for 100 users Difference ServiceNow Yes Yes Theirs Quote only ToolJet Yes Yes Yours $0-24/user/mo Can be selfhosted for cost at your cost.…

Getting the RSS Feed from a Youtube Page

Getting the RSS feed from Youtube Channels is harder and harder every year. I wrote this up after looking for a few hours. This will if ran on a video page land you on the user’s “featured” page and from that page you can get the RSS Feed. Just paste this in your browsers console (hit f12 on your keyboard). If it doesn’t land you on the rss feed, run it a second time and it should. ( function ( )…

Comparing 9 Email as a Service Providers

I spent weeks comparing 9 email as a service providers. Here’s what I found. A few years ago I was set on building a tool called Tskr, I still am. This post isn’t about Tskr though. You can read more on that at tskr.io . This post is about the journey I took to find the best email as a service provider for Tskr. I spent weeks comparing 9 email as a service providers. Here’s what I found. These…

Portal Widget On Catalog Items have access to the default value

on a `item_option_new` if you use the sp_widget, you can access the “default_value” in `c.options` so if you have a default value of `{“mode”:“jace_was_here”}` you can read it by ``