News, Updates, & Musings from Sully

The Mandelblog

If you find a particular blog post helpful or satisfying, please share it with a friend.

Hey everyone.

I finally did it. I rebuilt mandelbrotllc.com from scratch and got off WordPress. The old site was a pandemic-era WordPress install that I'd been meaning to replace for years. It worked, technically, but it had all the hallmarks of a site that someone set up quickly and then kept alive through sheer inertia: a theme I didn't totally control, plugins I didn't fully trust, a web server that needed patching every few months, and a general feeling of mild embarrassment every time someone asked me for the URL.

The new site is pure HTML and JavaScript. No frameworks. No build tools. No npm. No WordPress. I wrote it with a little help from Claude, which honestly made the whole thing go a lot faster than it would have otherwise. AI's killer app really is writing webpages.

The other big change is where it lives. The old site ran on Bluehost, which was costing about $200 a year, and came with the weekly joy of "some plugin on your website has been updated" notifications. The new one is hosted on Amazon S3 as a static website, served through CloudFront. The total cost is under a dollar a month, the site is much faster, it has no server to babysit, and I can update it by pushing a file to S3. Minimal attack surface achieved.

The thing I keep coming back to is how much I don't miss WordPress. No plugin updates. No security patches. No "your PHP version is end of life" warnings. No mystery slowdowns. Just files. If you're running a small business website and you're still on WordPress, it's worth asking whether you actually need it. Chances are you don't.

If you're curious about how the hosting side works, I wrote a bit more about it on the Web Development page.

-Sully

At the beginning of this week I realized that I had billed enough for the month. Usually I'd just keep going but I decided to take a week off to rest and think about the future. I had a lot to think about, and I'm glad I did.

Earlier this month, Todd Geist, Angelo Luchi and Kyle Duval from Proof were kind enough to guest for us at CAFDA. As prep for the meeting, I caught up on the four newest previous "The Context Podcast" episodes from Ernest Koe and Todd Geist. If you haven't heard them, you need to go back to the beginning of 2026 and listen to them all. If you can only listen to one, the episode you want is named "AI Blastoff." And, if you don't even have time for that, here's the gist. Brace yourself, because you might not like it.

The days of coding FileMaker by hand are about to come to an end. Agentic AI coding tools are coming to FileMaker. For those of us who understand what's coming, we're going to be busier than ever and in new and different ways. Some of us might not like our new roles, and will yearn for the days of mindlessly coding along. Those days aren't gone. It's more like someone hits the afterburners and you get pressed deep into your seat while your jet comes up to top speed. Once you stop accelerating, those days of mindless coding and the zen that comes along with it do indeed return. However, the learning curve to get there may leave some casualties.

Right now the Claris Partner business community skews heavily toward small shops. As I'm writing this, there are 965 Claris Partner shops in the world. About 85% of them have five or fewer staff. About 80% of all shops have either one or zero certified FileMaker developers. The US figures aren't much different. Most of those shops charge by the hour. So what should your shop charge if your work takes half as much time? Logically, you should double your rates, right? Or maybe switch to value pricing? Well, a lot of those small shops aren't going to be that disciplined. Those are the shops I worry about the most.

Whether you're disciplined about what you're charging or not, many developers are going to do what I've done for the past few months: try to write everything I ever wanted to, but couldn't. Once FileMaker has the coming agentic toolkit we've been promised, those same developers are going to fire up AI agents to do all the backlogged projects that were too expensive to do without AI. Some will burn through their backlogs slower than others, but at some point they're all going to have to think about how to generate new FileMaker customers.

Yes, agentic coding is going to make us much faster and much better. The problem is that our customers won't be able to keep up with us. It's something I'm already feeling in my own FileMaker-adjacent, very webby/javascripty/webhooky practice. The only problems I'm actually spending a significant amount of time solving are either A) problems where I can't use AI (read: inside FileMaker) or B) problems that require layered or complex thinking, design, and/or domain expertise. Everything else feels fairly trivial and can be handed off to agents that I can manage a few at a time.

In May, a report was released by the NBER that boils down to this: we can write literally 17x as much code and commit about 3x as much code with the best AI tools we have now. All that code has nowhere to go. The fastest our customers can change their work habits to match is about 30% faster than they were already changing before AI. There's only so fast you can train your people on how to use new tools. And, even if they could snap their fingers and adopt every new feature instantly, the tools need time to work to move the bottom line. Again, if you're charging the right amount, that's great. You have time to wait for the next feature request. But if you're not careful, you'll run out of work to do.

I started thinking about all of this as I began rebuilding my website. I've been putting off a scratch rebuild of mandelbrotllc.com for years. I wanted to get away from WordPress, but I didn't have time because paying work was always getting in the way. Well, here I was with a week to spare, so I started rewriting my homepage agentically. You tell the agent what you want, it churns for a while, then it spits out some code and checks its work. Eventually it declares that it's done and you go check for yourself. Then you move on to the next idea. It's a completely different rhythm than typing in actual code, testing it yourself, and then debugging it. It leaves down time between cycles while the agents do their thing.

During one of those cycles I had an idea for how to find more customers. I was really enjoying watching my new website come together and started thinking about offering my services to others in the community. To save time, I could even build a web scraper that could read all the Claris Partner websites, then analyze them for "signs of distress." Old HTML, broken links, outdated design patterns that indicated that their shop didn't have a web guy. Then I could call and talk to them about FileMaker. So I fired up another agent to start writing the scraper code while I kept the other agent going on building my website.

A few hours later, I took a break and went out on my patio. I live up on the 41st floor of Marina City, right in the heart of downtown Chicago. I'm basically 400ish feet above the Chicago River in the corncob looking building on the left. The view from my patio is glorious. On a clear day you can see really, really far. It's a Friday afternoon and there's a ton of people cruising on the river in their boats or out on the riverwalk enjoying the day. And I let my mind wander a little bit.

I start thinking about how for the vast majority of the thousands of tourists I see, this will probably be the only time in my life I will ever see them. They won't even know that I ever looked at them. Most of them won't look up, and it's even less likely that they'll ever know I was looking down. Then I started to think about who they were. How each of them had their own backstory. How they all have a job, or a family, or their own set of problems they are trying to solve.

And that's when it hits me.

It's not just FileMaker developer websites I should be scraping.

It's everyone else who DOESN'T have FileMaker.

So, I started a new project then and there. I call it Project Triage. It's still a bit top secret, but what I can tell you is this: I'm going to build a way to listen for the companies that are crying out for FileMaker, but don't even know it exists. Then I'm going to go and give it to them. Once I know it works and I'm too busy to keep up with those customers, I'll productize Triage and give it to all of those partner shops with five or fewer developers. And it will be glorious.

Watch this space!

-Sully

Hey everyone.

I was a guest on Claris Community Live last week alongside Ben Fletcher from DataTherapy. The topic was email. Specifically, how to stop using FileMaker's built-in Send Mail script step for everything and start connecting to real email APIs like SendGrid and Amazon SES.

Send Mail works. It's fine. But it's plain text only, which means no formatted emails, no tracking, no delivery monitoring. The moment someone asks you why their invoice email went to spam or whether the client even opened it, you're going to wish you had something better.

The good news is that connecting FileMaker to a service like Amazon SES with Insert from URL is not as scary as it sounds. Ben showed SendGrid, I showed SES, and between the two of us we covered most of what you'd need to know to get started. We also got into OAuth for Gmail and Office 365, which is now basically required if you want Microsoft or Google to deliver your mail consistently.

A few things I'd highlight from our conversation:

  • Centralize your outbound emails into a queue table from day one. You'll thank yourself the first time you need to swap providers.
  • DKIM is not optional anymore. Set it up when you set up the service, not after someone complains about bounced mail.
  • LLMs are genuinely useful for generating HTML email templates. Give Claude your brand colors and a sample and you'll have something solid in minutes.

My Pennywire demo file (the Amazon SES one) is available to test at pennywire.informingdesigns.com. Ben's SendGrid demo is over at datatherapy.com.

If you missed the live session, you can watch the recording on YouTube. Level is intermediate. If you've used Insert from URL before, you'll be fine.

-Sully

Hey everyone.

We've been heads-down since August on a pretty involved integration project and I wanted to write up what we've been working on.

The short version: a customer needed FileMaker to talk to Spectrum by Trimble. Spectrum is a construction ERP that supports a SOAP API. SOAP is an older protocol, XML-based, predates REST by a good decade or so. It's not the fun modern kind of API where you just throw some JSON at an endpoint and call it a day. It has its own envelope format, its own namespaces, its own way of being annoying. Most modern tools have moved on from it, which is exactly the problem.

Spectrum does offer a REST API, but the licensing for it costs real money. Enough money that it made more sense to build something than to pay for it. That's the kind of math I like.

The architecture we landed on uses AWS Lambda as a middleware layer. FileMaker doesn't speak SOAP natively, but it can talk to a Lambda function just fine over HTTP. So that's what we built: FileMaker calls Lambda, Lambda translates the request into SOAP, sends it to Spectrum, gets the XML response back, parses it, and returns something clean to FileMaker. Lambda handles all the protocol ugliness so FileMaker never has to.

The result is that the customer is entering data in one place instead of two. No more duplicate entry between systems, no more manual reconciliation, no more fat-finger errors copying between screens. The integration runs in the background and the two systems just stay in sync.

Lambda costs nothing for the first million executions per month, and the next 5 million executions cost a dollar. It's basically free. Compared to the REST API licensing they would have needed otherwise, the savings are unbelievable.

We're wrapping up the last of the edge cases now and the customer is happy. SOAP is old but it's not dead, and if you've got a system that speaks it, we can make FileMaker talk to it.

-Sully

Hello friends.

I've set up a CAFDA discussion forum and it's live at forum.chifm.dev. It's a place where you can talk about upcoming meetings, get zoom links, and post FileMaker-y stuff. The forum runs on AWS with a forum platform called Discourse. Not Discord, Discourse. I was expecting it to take a full day to set up. It took about an hour.

The forum is invite-only and free to join. You don't have to be from Chicago, you just have to be a FileMaker person. Reach out to me or Jeff London for an invite.

-Sully

Hey everyone!

Some of you may already know this, but I've taken over as the organizer of the Chicago Area FileMaker Developers Association (CAFDA) monthly meetings. The handoff happened on April 2nd, 2025, when the legendary Phil Yaffe passed the torch after a very long and very successful run as the person keeping this whole thing going. Phil, if you're reading this: thank you. Genuinely. You kept this community alive and meeting consistently for years and that's no small thing.

Phil isn't going anywhere. He'll still be with us in the room, he just doesn't want to be the one wrangling presenters and booking rooms anymore. Honestly, fair enough. I've got the energy for it right now and I'm excited to do it.

Here's what stays the same:

  • First Friday of the month, 10am to noon
  • No meetings in January or July

Here's what's new:

  • In person meetings will be held at the historic Marina City building's East tower meeting room. Come hang out in one of the coolest buildings in Chicago.

I've got a lot of ideas for guests and topics, but honestly the best meetings are the ones where the community drives the conversation. If you've got someone you want to hear from, a topic you want to dig into, or just general feedback about the format, send me a note. I'm all ears.

See you on the first Friday.

-Sully

Egressing Claris FileMaker container data to the Cloud.

If you're just looking for a way to get your FileMaker container data to the cloud, check out s3.fm.

Hey y'all!

Sully speaking at Claris Engage 2024

It was my great honor to speak at the national FileMaker convention (aka Claris Engage) this year at the Apple campus in Austin, Texas. This year's event was the first national event that Claris has produced since 2019. The pandemic REALLY messed up our community's plans for a few years! It was quite a different experience than what we've done in the past with previous FileMaker DevCons and Engages. The target audience was much more the core of the professional development community. Instead of having close to 200 breakout sessions and 1,400 attendees, the conference focused on around 50 breakouts and 600 attendees. It was quite a thrill for me to be able to snag one of the coveted presenter's slots. There's even an APPLE EVENTS PAGE with my face on it.

The content of my presentation was about getting your FileMaker container data out out of FileMaker itself and into cloud object storage. If you haven't thought about this before, here's the gist: FileMaker container data can bloat your system. It can make backups and user experiences difficult, especially when you scale up. The best way to avoid this is to let someone else's computer act as the storage for your container data. That "someone else" is probably going to be a cloud object storage provider like Amazon S3. Click here to learn all of the why, who, what, where, when and how by watching the presentation.

I'd like to send a special thanks to Ronnie Higgins for reminding me of the story of the dot. Back on April 2nd, 2020, Ronnie posted a new thread on Claris Community. He quickly realized that he wanted to delete that thread, but there was no way to delete the thread. Instead, he edited the thread to a single dot, hoping he wouldn't receive any automated response emails from the community. I didn't know Ronnie at the time, but like most FileMaker developers in late March and early April of 2020, I was in a holding pattern while the whole world was dealing with the first wave of COVID lockdowns. A lot of us were on the Claris Community that day, just looking to help each other. And, when I saw Ronnie's post with just a dot, I decided the best thing I could do to help his dot was to add my own underneath. Ronnie's dot looked lonely, and now it had a friend. A few minutes later, Josh Ormond put his dot under mine, and then another, and another, and so on until the flood of dots had made Ronnie's thread trend at number one. It was getting more attention than the "Cris Ippolite – ask anything" thread at the top of the community. By the end of the day, Ronnie had received about 200 emails and the Claris Community moderators had locked the thread. It was a "cultural moment" for our community – one that reminds us that no matter how frustrated we are, that we're all in this together. It doesn't necessarily matter what the problem actually is – even if it's just that your local store is out of toilet paper because of COVID – we're all here to support each other. If you've only got 5 minutes, watch this bootleg clip of "the tale of the dot" first.

I'd also like to thank the legendary Jonn Howell (DataExperience) for helping me prepare for my presentation. Jonn is a very accomplished speaker in the FileMaker community, having presented dozens of times on a variety of topics over several decades of FileMaker DevCons, regional conventions and local meetups. Even though I have some experience speaking in front of groups and have always wanted to speak at the national convention, I still felt a lot of anxiety to get this one thing right for everyone. Jonn's mentorship helped me ease that anxiety, as well as adding a whole lot of polish and style that really made my presentation come off well. If you're thinking about applying to speak at a future Claris event or you want a well qualified pair of eyes to look over your presentation, ask Jonn for help. You'll be glad you did.

Lastly, if you've never been to a Claris event, especially Engage or PauseOnError, please come and join us next time. Even if you only go once, you'll come home with a far better idea of what is possible in FileMaker and who to talk to when you hit a wall. The coolest part of our community is that we help each other and share ideas at these conferences. The first time you go is a guaranteed game changer.

See you all soon!

-Sully

Tie-dye PAUSE shirts hanging at PauseOnError

A lot of people have asked me about my experience tent camping at PauseOnError. Overall, I'd rate the tent camping experience higher than the hotel experiences I have had at Pause. I slept better, felt more refreshed, more connected to the community and more at peace. It's a 100% recommendation from Sully: if you have the chance, you should camp at Pause.

Camping at PauseOnError

Here are a few benefits of camping at PoE.

The price is right. I've stayed in the hotel twice and it's quite nice. Cabins are cool if you have a big group that wants to share. Still, I'd rather spend my money on reusable stuff. I don't ever camp, so I had to buy all the gear listed below, but it was still cheaper than a hotel room. And, I can now camp anywhere for the cost of a checked bag.

  • a 2 or 4-person tent
  • a tarp to put underneath my tent
  • a full sized air mattress
  • a fist-sized, battery operated pump for the air mattress
  • a light sleeping bag
  • a two pack of LED lanterns
  • a wheeled duffel bag to transport all of the above.

The camping locations are waaaay closer to the action. Pause is on the side of a mountain and it's very spread out. The hotel rooms are approximately 120 feet higher than where people gather during the event. Last year, I saw that I still had 10 beers left in my hotel minifridge at the end of Pause. Those leftover brews were a strong indicator that I was spending all my time away from the hotel. I really liked being so very close this year, as I got to spend even more time with everyone. I also avoided lugging a heavy pack around because I didn't want to climb the hill. Instead, I left my tent with only the items I needed, then returned at my leisure to switch out gear throughout the day.

There's no outlets in your tent. If you're trying to unplug from the daily grind, that can be a huge benefit. If you can't fully unplug, you'll need to bring a spare battery and have a plan for charging. I prefer to go as low-tech as possible for the week so I don't have to think about where my stuff is. I only had to charge my cell twice and during the times it was charging somewhere else, I was truly free.

There is a sense of adventure that comes with sleeping outdoors. I live in a concrete jungle 361 days a year. So, the first night when I was alone in my tent and it was time to sleep? I actually remember thinking, "ZOMG, I'M REALLY DOING THIS!" I know I'm a dork, but I had to calm myself down even though I was tired. What fun.

There is a bond between those of us who chose to camp in tents for a few days, and I'm glad I was a part of that. I knew that no matter how prepared I was, I wouldn't make it without relying on the community in some small ways. That made the experience that much more special. Shout out to my camping friends: Corn, Ben, Anthony, Travis and Micah. I hope you all return in 2024.

Every year, Pause runs out (or very nearly runs out) of hotel rooms. Every camper is an extra person who doesn't occupy one of those rooms. If more people camped, more people could come to Pause. I'm all for more people at Pause, so I camp to make room for others who need the hotel.

Camping at PauseOnError

Here are a few things you should know if you're considering camping at Pause in 2024.

Yes, you can pack enough gear in a single checked bag to fly and then camp at Pause. The camp is a Jewish summer camp for kids who sleep in cabins and tents. They've done this all before. Frankly, if the airline lost your bag you could show up without so much as an extra pair of underwear and you'd still have a great time. You just don't really need much gear to camp at Pause. Most of the 2023 campers drove themselves to the event with their own vehicles and had far more extensive gear than I did. Next year, I'm hoping that will be different and that more people will fly and camp. Everything I needed was already at camp, except for a shelter to sleep in. I was able to hitch a ride from ATL with the crew from Informing Designs. With a little planning, you can absolutely fly and camp at Pause.

If you're planning on driving your own car anyway, bring extra gear. You won't need food, but it's pretty rad when you can cook stuff next to your tent. If you have space, bring a few extra camping chairs and/or cups for sharing bourbon. The people who fly in will appreciate it. Plan ahead on the official Slack channel. Coordinate what you will actually need, who is bringing what, etc.

It doesn't really get that cold at night as long as you're prepared. I bought the lightest sleeping bag I could find on Amazon and I was fine sleeping in a pair of shorts and a hoodie. If I was cold, I would have put on a pair of pants and another hoodie. Check the forecast for Clayton a week ahead and plan on using layers.

Think carefully about how you'll deal with runoff. No matter what's forecasted, it's almost always going to rain a little. Even if it doesn't rain, you'll get dew. Pick a spot for your tent that has a slight slope to it so that water doesn't pool under you. I brought a tarp to put under my tent so I would reduce the chance of puncturing my tent or air mattress if I was on a sharp rock. On the sage advice of a much more veteran camper, I bought a tarp that was slightly smaller than the footprint of my tent — this was so the rain/dew wouldn't run off the sides of the tent, onto the tarp, then pool under my tent. I also made sure that if there was any tarp sticking out, it was downhill of my tent. As a result, the inside of my tent stayed dry, and any lingering moisture on my gear dried quickly when I got it home.

It's a long walk (300+ feet) if nature calls in the middle of the night. The nearest bathroom with a sink and toilet is on the stage next to the basketball court. Some campers may choose to drink hard alcohol instead of beer to reduce the number of moonlit trips to the privy. Many campers (me included) will choose to simply water a nearby shrub instead. If you are the shrub-watering type, consider these tips when placing your tent:

  • You want to angle your tent so the exit points directly at your shrub. This will reduce confusion as to which shrub you are targeting, as well as which tent you are trying to get back into.
  • You may also want to be very close to your shrub. Think 2–4 feet from the door of your tent to your target. It's unlikely that anyone is going to see you when nature calls, as it will likely be very dark. Still, you might enjoy the tiny bit of additional privacy and windbreak afforded by your tent being close behind you.
  • If your aim is true and you are close enough to your shrub, you may not even have to step out of your tent to do your business. This can be a big positive if it is cold, your shoes are wet, or it is raining.
  • Whatever you do, do not choose a shrub that is uphill from your tent, or any other tents. Water flows downhill. You want to water the earth, not your campsite.
Camping at PauseOnError

Some gear must be brought, but some of the bulkier items are best scrounged from other Pause guests. I thought about stuffing an old pillow in my suitcase but realized it was a waste of valuable space. Instead, I borrowed a towel and a couple of pillows from some hotel guests. They were left with (gasp!) only seven pillows and three towels. Trust in the kindness of others and ask for help when you need it. You might even make a few friends along the way.

Leave your electronics at home. I know, we all have important customers with really fancy code that runs critical systems that would just plain explode without us touching them all the time. But how will your customers really know how valuable you are unless you make yourself mildly unavailable once in a while? You have to be able to let go once in a while and just be free. The only device I brought with me this year was an iPhone 12. None of my customers truly melted down while I was camping. If it really hit the fan, I would have just borrowed a laptop from someone. And yes, I found several outlets where I could charge my phone when needed.

Camping at PauseOnError

Here are a few things I wish I thought about or did before camping at Pause.

Do a test run on any new gear before you bring it with you. For example: I used Amazon to buy a sleeping bag for camp but did not try it on for size. The sleeping bag was comically small. I could zip it all the way up, but only if I stuck my arms out of the top. My shoulders barely fit inside the hood. It was fine, but it was a dumb mistake on my part. I would have sent it back to Amazon if I had checked its size. Now I have a used $30 child-sized sleeping bag for sale and a funny story.

If you wear contacts/glasses, make sure you know where they are before it gets dark. The first night I waited until it was too dark to find my glasses before taking out my contacts. That made it extra challenging, especially when nature called at 5AM. The glasses were exactly where I put them — in the bottom of my carry-on backpack, stuffed all the way in the back of my shower bag. I just couldn't see them in the dark, and I was a bit buzzed. I found them a couple days later, but only after stumbling around in the dark looking for an adequate shrub on the first couple nights.

I'd pick different footwear. I only brought a pair of white crocs and a pair of flip flops. Neither one was ideal. The crocs were too bulky to pack, so I had to wear them on the plane. The flip flops were too floppy, so they didn't perform well on gravel. Maybe for 2024 I'd do something in a waterproof slip-on boot.

They do open a nearby cabin's bathroom so you can take showers, but there's a few details you should know first. That cabin is a 5–10 minute walk up a gravel road, which is kind of far if you're hung over and/or wearing shower shoes. It pays to get out of your tent early and trudge up that hill in real boots. The water in the showers takes a few minutes to get hot, but it does eventually get hot. The cabin also did not have shampoo, soap or towels. I had travel shampoo but forgot soap. Next year I'll probably just take the little bar of soap from the hotel in Atlanta.

If it fits, a small folding stool would have been great. I'm nuts about keeping the mud out of my tent, so I leave my shoes outside no matter what. Getting a pair of muddy outdoor shoes on without getting mud in your tent can make for quite a gymnastic challenge. I'll probably add a folding stool to my gear for 2024, and I'll likely keep that stool inside the tent so it stays dry.

How NOT to automate the last mile of a supply chain


I ordered a nice Toshiba 75″ 4k LED for about $700 on Amazon Prime Day. Amazon has allowed 3rd party vendors to sell items on its site for years as long as they meet some basic policy requirements (domestic return address, free shipping on returns, etc). Usually, the 3rd party vendor is a warehouse without a storefront, but strangely enough, this time it was Best Buy, the big box retailer. I didn't realize that a big store like that could sell on Amazon, but I needed a TV and it was marked down considerably for Amazon Prime Day so I ordered it anyway.

I immediately started getting emails about scheduling a delivery via Best Buy's web app. I went to the URL in the email and looked at their delivery scheduling app. When I saw that Best Buy's delivery policy said that someone over the age of 18 needed to be here to sign for the TV, I thought it made sense — I wouldn't want my TV delivered to a child or left unattended outside. That's why my building has a staffed receiving room. The room sits at ground floor outside of security, waiting for packages to arrive. The receiving staff signs for packages, keeping everything securely organized. That means I don't have to actually be there when things are delivered, which is much more convenient. The only negative of using the receiving room is that you have to work within their hours. On a weekday, that's 11am to 7pm, or weekends are 9am to 5pm.

Anyways, Best Buy's web app showed a calendar with a few possible delivery date and times. That's when I first began to doubt the delivery would be handled smoothly. The first delivery window available was 9 days away on a Thursday between 7am and noon. Well, we can't do that. The receiving room isn't open until 11am on weekdays. The next two delivery windows were 10 days away on Friday, with one window from 7am to noon and the other from noon to 6pm. So I picked the Friday afternoon window. I was a little bummed that I would have to wait 10 days for my TV to arrive, but no worries. Maybe they were just overloaded with Prime Day deliveries, right?

Well, today is delivery day, folks. It's 9:35pm and I still don't have my TV. So what happened?

This morning around 9am I got a robocall from 1-888-BEST-BUY. The call informed me that my TV would be delivered tomorrow, July 23rd, between noon and 4:30pm. There was no option to reschedule or talk to a human being available on the robocall, just a brief explanation of their COVID policy and a goodbye. I was pretty bummed they were going to be a day late as I had rescheduled another appointment so I wouldn't have to leave the office. I did appreciate the heads up, though; now I could turn the ringer on my phone back off and get some work done.

This is where the teachable moments about automation start to come at us hard and fast.

Teachable Moment #1
Don't place a call when a text message will do.

Nobody leaves their phone's ringer on anymore — there's just too many scammers and robocallers out there. What they do respond to, however, is text messages. Calls get a response rate below 30%, where text messages get read within a few minutes better than 90% of the time. You can still call if you want to, but if you're not texting your customers then you're wasting your time.

It's also much easier to read text than it is to understand speech, especially on a voicemail when you can't ask someone to repeat themselves. Text leaves a nice, timestamped trail too. It's easy to see what was said and when.

3:00pm: Around 3pm, I noticed this voicemail on my phone from 1-888-BEST-BUY. In very slurred English that both my iPhone and I had trouble translating, someone mumbled that I had 15 minutes to come meet him downstairs to sign for the TV or they would reschedule the delivery. I looked at the timestamp of the recording. It was from 1:51pm. Because I was unable to answer that call, the delivery driver had no idea where to leave the TV or who would sign for it. I checked on Amazon's website. The order was marked as "delivery attempted at 2:16pm." The truck with my TV is long gone.

Mr. Mumbles Leaves a Voicemail
Teachable Moment #2
Don't call me from a number I can't call you back on.

If I'm trying to return a call, I should be connected directly by dialing the number that was left in a voicemail or on my caller ID. Displaying the number for an IVR or transferring me to a call center on the other side of the world is wasteful, frustrating and unhelpful. You might as well block the caller ID for outbound calls.

If you don't want to buy everyone a phone or give up your employee's personal phone numbers, you don't have to. Your phone system should have its own log of outbound calls. You also have my phone number as soon as I call you. You should be able to tell who I'm trying to call back by matching my number against the outbound log. When I call back, your software should see that I'm returning a call. So, the first option in your menu should always be "if you are returning a call from this number, press 1." If your phone system's not that smart, I will build you one that is.

3:10pm: I called 1-888-BEST-BUY back. Instead of connecting me to the local delivery driver, it connected me to the main IVR for all of Best Buy's retail and online services. First, the robot asked me to state in natural language what I wanted. I said "where's my TV" and the robot didn't understand. Then I said "where's my delivery?" The robot understood that. Then it asked for an order number starting with "BBY-". All I had were Amazon order numbers, which all started with "111". So, I said "I don't know."

I then waited on hold for 15 minutes. When I finally spoke to the first human being, he asked for my Best Buy account details. The first operator didn't understand when I told him I had no Best Buy account, had ordered a TV from Amazon and they were the 3rd party seller. I told him I had an order number, but he refused to talk to me unless I signed up for a Best Buy account. After about 90 seconds of incredulous silence, I told him that was unacceptable and repeated that I have an order number. He demanded I sign up for an account and I just hung up.

Teachable Moment #3
Automation cannot completely replace human beings.

If I'm calling for customer service, it's because I have a problem. Some problems are easy to solve with automation, but the ones that aren't should be handled by humans. If I have a difficult problem that needs a human response, I'm going to be even more upset if I find a dead end in your automated system that means I have to start over.

Whenever possible, leave the option to press ZERO to get a person. If you can't afford to have a human being triage all your inbound calls, you still have to leave a way to get a human on the phone after I navigate through your automated menus. If I make 5 or 6 selections in your automated menu system and I still haven't got the answers I need, then my problem is too difficult for a robot. Just put me on the phone with an operator.

3:30pm: I tried Amazon's customer service number next. It required me to log into my account to verify that I was actually me before I was even allowed to talk to the robot. That didn't go well. The link they texted me required me to enter a password that I never saved to my iPhone. I tried 4 or 5 times, then gave up. The robot on the other end asked me permission to send me the verification, so I called back and told it no, it couldn't send me a link to verify that I'm me.

I then was directed to a set of unhelpful menus that didn't answer anything I called about. I couldn't even get Amazon's robot to admit that I had purchased a TV from them. The robot was stuck on a different item I ordered the same day (a connector for some track lighting I've been working on). Pressing zero did nothing but repeat the same information about the wrong order. Amazon's customer service phone robot was just far too automated.

I went back online and tried to do web-based chat with Amazon. They directed me to a "contact the seller" page, which is really just a way to send an email to Best Buy. So I sent an email to Best Buy via Amazon. Unfortunately, the response from Amazon is "expect a response from the seller within 48 hours." This was not getting me any closer to talking to my delivery driver, who is driving around in a truck with my TV right now.

Teachable Moment #4
Don't tell me you're going to call me back (because you won't).

If you can't fix the problem right now, set a meeting and exchange direct phone numbers. The better solution is to text the customer a direct phone number to call at a specific date and time. Then text a reminder with a reference number an hour before that time. If the customer calls from the number that got the text, they should talk to a person right away. If the customer doesn't call, call and at least leave a voicemail.

3:45pm: I tried calling 1-888-BEST-BUY again. This time I got an operator who was willing to look up my order based solely on the Amazon order number. I explained the situation and she transferred me to a third operator. The third operator put me on hold for a few minutes while she talked to the local delivery team. Then she told me I would receive a call back within the hour. That call never came.

Teachable Moment #5
Amazon Prime Day isn't always a sale.

You should always be careful to check other retailers' websites when you're shopping on Amazon.com. Even on Prime Day. Even if Jean Baptiste sings a catchy song about buying camping supplies during every other commercial break on FreeVee. Always. Amazon.com is not always the best deal, especially when 3rd party sellers are involved.

6:00pm: I called 1-888-BEST-BUY and waited on hold three more times to get an operator who would talk to me without registering for an account. After five and a half hours and six different Best Buy customer service operators, I gave up and asked, "can we just switch to in-store pickup?" Brief hold. No. "What if we just cancel the order?" Response: You can't do that through Best Buy, you have to do it through Amazon. So, I go back to the Amazon order and it says I can't cancel until at least 3 days after the delivery was expected.

Feeling defeated, I sigh deeply and click the TV to look at its Amazon.com product page (longingly). I then notice that the Amazon Prime Day price is the same as the price it is now, even though Prime Day was over a week ago. Then I go on BestBuy.com and look up the same exact TV. Best Buy's site lists the TV with a free Echo Dot, 3 months of Apple TV+, and it's available for in-store pickup. ALL AT THE SAME PRICE. All I have to do is tie it to the roof of my car and drive 1.7 miles from Best Buy's South Loop store.

If you are interested in making your customer service systems better, send me a note and we'll get you set up. —Sully

For those of you who don't already know, I moved my office to the West Tower of the landmark Marina City buildings right in the heart of downtown Chicago. Set up an appointment and I'll take you out somewhere in River North — we've got some of the best restaurants in Chicago right at our feet, the theater district is right on the other side of the bridge and you can walk down the riverwalk to the lakefront in about 20 minutes. Best decision ever!

The new Mandelbrot LLC office is located on the 45th floor of the West Tower of Marina City.
The new Mandelbrot LLC office — 45th floor, West Tower, Marina City.
The Chicago skyline at night from the Mandelbrot LLC office.
The skyline looks pretty nice at night, right?

Hey everyone!

I've got something new to show you. It's a new subscription API service called s3.fm.

s3.fm is a service that allows you to easily move your FileMaker container data to your own private AWS S3 bucket. It uses the FileMaker Data API to pull the data out of FileMaker and upload it directly to S3. No plugins, no fuss, just two lines of scripting: "Set Variable" and an "Insert From URL". It even comes with an fmp12 based API explorer to help you get the cURL pixel perfect.

I started off this process as a challenge for myself: build a real, low-touch subscription product that would offset my AWS account costs. Not just an fmp12 you buy and download once and own, but one you subscribe to with a credit card billed monthly. A real API, real recurring billing, real infrastructure. I debuted it today at CAFDA, and will be bringing a live demo to PauseOnError Summer Camp next month in Clayton, GA.

I chose to build an Amazon S3 connector because I solved that problem much differently than others have in the past. Most S3 connectors are built on a "push" style upload. That requires calculating an Amazon Signature v4, which is a 200 line script. It's really quite complex, and completely unnecessary if you know how to use S3, IAM, Lambda and the FileMaker Data API.

I also thought it would be a nice way to show off my skills. Building this required a bunch of stuff that most FileMaker developers need, but don't typically have: web design, website hosting, Amazon S3, Lambda, EC2, Lightsail, PayPal integration, and building and maintaining a paid subscription API. I'm proud of how it came together.

Video of today's CAFDA demo will go up on the s3.fm website as soon as Phil edits it.

Plans start at $10/month. Go check it out.

-Sully

Someone really called me up and said this.

"Sully, there's a lot of things I miss about the pre-pandemic times, but I never thought I would say this. I finally miss my desk phone."

I was a little confused at first, so I pressed him for an explanation. He told me it wasn't his clients that had bothered him, it was actually his family. This time, my guy had spent 90 (unplanned) minutes of his workday on the phone with his grandmother-in-law. He was expecting a call from a new client when she called him from a number that was only a couple digits off. It seems Grammy had hijacked his day.

So, after I had stopped laughing at his pain, I registered him a SIP phone for his home office. I sent it to him in the mail, he plugged it into his router and is now back to happily separating personal calls during business hours.

I enjoyed the process so much that I figured you might want to get a taste of the vibe, so I spent an afternoon creating a watered down version for Pause on Error's Suitcase Protocol that I call the "SIPcase Phone."

SIPcase packed for travel
Packed for travel. Feel free to rearrange or add items to the foam.
Disassembled: Phone, PoE injector and stand
Disassembled: Phone, PoE injector and stand.
The PoE injector
The PoE injector. The red cable goes to your internet. The yellow cable goes to the phone. The power goes to your power strip.
Plug the yellow cable into the phone
Plug the yellow cable into the leftmost RJ45 (ethernet) port on the back of the phone as shown.
Plug the red cable into your router
Plug the red cable into an open ethernet port on your internet router (or switch). This should connect the phone to the internet.
Plug the power cable into a power strip
Plug the power cable into a power strip and the phone should power up.
Display showing checkmark when connected
If everything is connected correctly, the display of the phone will show a checkmark near the phone icon. If it is an X, start over.
The stand for the back of the phone
This is the stand for the back of the phone.
Slide the stand into the back of the phone
Slide the stand into the back of the phone so the phone will sit up on your desk.

What to do once it's plugged in:

  • The phone is preprogrammed and ready for use. Plug it into your router according to the photos above.
  • The phone's number is +1.708.576.4545. Calling this number rings the SIPcase Phone as long as the phone is plugged in. Save the number in your cell in case you want to call the phone after you pass it on.
  • The phone has inbound caller ID but not voicemail.
  • Dialing any number into the phone's physical keypad will call MJM's KGB handler in Moscow. The KGB is pretty busy these days, but if you wait patiently through the hold music, MJM's handler will (eventually) respond.

While you have the phone, dial up the KGB and make a new friend. After you pass it on, watch suitcaseprotocol.com for updates on who has the suitcase so you know when to call. Or, don't wait for someone you know to have the phone: just call it and make new friends!

Enjoy!

— Sully

Ready to expand your concept of what is possible with telephones and FileMaker? If you can dream it, we can build it together.

We've all been there- there's something you want to write in FileMaker but you just can't figure out how to make it work. So you go on the community, you go on google, you read tons of documentation and HOPEFULLY, you get the help you need to solve your problem. It's how coding is learned.

Then, one day, you realize you're on the other side of the coin. You start hearing the kind of questions to which you have the answers. Sometimes you even hear half-cocked answers to those questions and you know a much faster, simpler, or cleaner way to do. That's when it's time to give back.

I had such a moment a couple days ago when a customer asked me to give him the simplest form of an outbound SMS script. So, in a couple hours, I created and sent him a branded demo file that is the fastest, easiest way to get outbound SMS up and running with Twilio. It doesn't require Claris Connect; just a Twilio account with enough cash in it to support the messages and a Twilio phone number.

It's a demo file, so it's completely unlocked. Feel free to tear it apart, adapt it into your own code and share it. I'm just happy to send something back into the community that has given me so much these past 2 years. Download it for free here. Happy Birthday, Mandelbrot!

Two Fridays ago, our friend Patrick Cranston over at CranstonIT gave us a call. His team has been providing FileMaker development and hosting services to an outpatient drug rehabilitation clinic. The clinic gives its patients prescriptions to help reduce their chemical dependencies. Those prescriptions have a high potential of abuse or resale, so a desire for monitoring was expressed to the team developing their FileMaker solution.

The solution they arrived at was actually quite simple: patients would receive a text message at a random time requesting a photo of the remaining doses of their prescription. The patient would then take a photo of their remaining medication and send it back to the same number. The photos would then automatically attach to the patient's record in FileMaker.

Now, the development team over at CranstonIT is really sharp. We have no doubt they could have created a way of doing this from scratch. Instead of spending weeks writing their own MMS connector to do just that, they took a much faster, much cheaper shortcut: they asked us if we could do it with Mandelbrot SMS.

At the time, the answer was "almost." Mandelbrot SMS was already 80% of what they needed: real-time, familiar, conversational messaging that bolts on easily to any FileMaker solution in a few minutes. The only item that was really missing was MMS – text messages with pictures as well as text.

Here at Mandelbrot HQ, we had already begun a version of Mandelbrot MMS. The project was shelved in March due to an unexpected surge in demand for other Mandelbrot services, much of it due to the COVID-19 pandemic. With Patrick's recent interest, we renewed our effort into MMS and completed the first publicly available edition. Mandelbrot MMS has just been submitted to the Claris Marketplace and is available now from the Mandelbrot LLC store.

Here's another customer's review.

The most amazing part of the new MMS system is the pictures. Our customers used to email pictures to us, which is not nearly as easy for them as a text message. Now we text the customer from our MMS number, they text us back their photos and the photos automatically attach to their FileMaker records. The text conversation is right there too. Our whole team understands the situation without having to talk. It's fantastic. We've stopped losing information and we repeat ourselves a whole lot less. It's also nice not having to use our own personal cell phones for texting customers. We can finally leave them on after work again.

Ben Schultz, Illinois Energy Windows and Siding, inc

There's a million reasons to host your own FileMaker server on AWS EC2. Maybe your solution needs more (or less) CPU, RAM or storage than the off-the-shelf versions of FileMaker Cloud 2. Maybe you need your server to be compatible with earlier versions of FileMaker Pro Advanced. Maybe your solution needs to be hosted somewhere closer than is currently available. Maybe you can't justify the cost of your current hosting solution and you're looking for a cheaper alternative. Maybe you need something more flexible with command line access. Or maybe you just want to learn what all the fuss is about.

Whatever your reasoning is, I wrote this document for you.

It's getting really real out there. Everything, including a large portion of business, is cancelled for the foreseeable future. If your FileMaker shop is like ours, your customers have asked you to take their on-prem solutions to the cloud for the duration of their local shelter-in-place order. To help ease the fears of the community, Mandelbrot is offering special COVID-19 relief pricing for AWS provisioning services. Contact us for details.

Pause on Error has an attendee list that reads like the FileMaker hall of fame. It's two days of the community's best and brightest jammed together in order to let new ideas and techniques flow freely in an open, collaborative environment.

We're proud to announce that our fearless leader, Mandelbrot founder Dave Sullivan (Sully) has been confirmed as a session presenter at this year's conference in St. Louis. Sully, of course, is thrilled.

"I've been doing a ton of work that's aimed at helping businesses survive in a world where nobody answers their phones. I'm so beyond stoked to help everyone!"

His topic will, of course, be "How to use Twilio without being evil." Sign up to attend Pause on Error here.

Hey Mandel(br)o(t)rians! Check out my new YouTube series, 60 Second Proof Of Concepts With Sully. The series is meant to highlight some of the technology we've added to other customer's solutions. Start with episode 1 and watch them all: you might find something useful for your own solution! -Sully

I just wrote this as a freebie for a webinar series I'm working on. Enjoy.

Check this out. Mandelbrot PBX should be available on the FileMaker Marketplace before the end of Q1, 2020.

With the dust starting to settle and our move from Lisle, IL firmly in the rear view, we've had some time to reflect on 2019 and the road ahead. Here's a few items on the road map for 2020.

  • Reaching out to every FBA member in the US and Canada.
  • Mandelbrot PBX, our new product for 2020.
  • Webinars, whitepapers and training on the topic of Twilio integrations.
  • A push toward a philanthropy.

We also just pulled down some interesting reports about the value of multichannel marketing and custom apps. Have a look.

Visit the product page here.

If you're interested in setting up a FileMaker Server on AWS EC2, you may find this document is a useful place to start. It's not perfect but it will definitely get you closer to where you want to be than just going for it on your own. If you have any comments, suggestions or would like Mandelbrot LLC to help you set up an EC2 based FileMaker Server, please contact us here.

LISLE, IL – It is with great pride that we announce that after years of planning and forethought, Mandelbrot LLC has joined the FileMaker Business Alliance.

Mandelbrot LLC President David "Sully" Sullivan joins the FBA after 18 celebrated years, 8 promotions, 7 departments, half a million prefilled squirt guns and millions in net revenue generated as an in-house FileMaker developer at Illinois Energy Windows and Siding. Sully's departure to the FBA came shortly after the exit of Illinois Energy founder Dave Sonner after 28 years of service to the suburban Chicagoland community.

Less than two weeks after Sully's exit, Illinois Energy president Brian Campbell contracted Mandelbrot LLC to manage, maintain and enhance their FileMaker solutions. It is with the utmost respect and gratitude that all of us here at Mandelbrot LLC thank Illinois Energy for their faith, friendship, dedication and years of continued support.

With new freedom to operate in a virtually unlimited number of industries, Mandelbrot LLC is poised to create big waves in the FileMaker world. Watch this space – there's going to be a LOT of new products, services, blog posts and whitepapers before the end of 2019.

If you're looking for a tour of a recently developed FileMaker App, check out the one below. Still needs testing, debugging and a few last features, but you'll get the gist. If you'd like a free copy of the demo file, you can request one here.

We're headed for FileMaker DevCon and hopefully, you are too! If you're not headed to Orlando next week, watch this:

If you'd like to know more about how we can help integrate phone and text support into your FileMaker solution, drop us a line HERE.

A client of ours recently asked us to integrate Twilio's inbound and outbound texting into his Filemaker Cloud solution. No problem for us Mandelbros. Just a few short weeks later we finished developing a custom .fmp12 file and an AWS Lambda function that are handling the task quite nicely.

We love using AWS Lambda for this use case because there are no monthly fees and unless you receive hundreds of thousands of text messages in a month, you'll probably never exceed the free tier. Twilio is also really an amazing company, offering tons of really, really cool microservices. They currently charge $0.0075 per inbound or outbound text, so you can really send quite a lot of messages for a very, very low cost.

If you would like to integrate inbound and outbound texting into your FileMaker Cloud solution, click here and let us know – we've already done the hard work of integrating the Twilio, FileMaker and AWS's systems together for other customers, which means we could have you up and running in a matter of hours, not weeks.

Great news!

You heard it here first: TelePath integrations will be available to the public soon. This groundbreaking app will give a lot of small and medium sized companies the ability to really turn up the heat on their competition.

TelePath is a call center solution that integrates the power of FileMaker, AWS and Twilio to turn your telesales/marketing reps into superstars. TelePath allows a single agent to email, call and text multiple phones at once from anywhere with a WiFi connection. Then, each call is recorded and run through a transcription and AI service that guides your agents to success without the embarrassment or tedium of listening to thousands of recordings. TelePath uses the data to profile both your agents and customers based upon how they interact, giving you the ability to automatically match the customer's needs to the correct agent's strengths.

Contact us as soon as you can if you're interested – we're only taking one company per vertical.

Greetings, Programs! Just finished a quick proof of concept for a prospective client. They are a company that liquidates hotels that have closed. The application makes it possible to use an iPhone to take a photo, assign a barcode, category and price to each item to be liquidated. The price and photo are immediately published on their website's store, allowing customers to check inventory and buy items online. Contact us if you'd like a demo.

Hello Mandel-Bros! Just published the code for a set of radar plots for Illinois Energy's canvassing and telemarketing teams. The challenge for these folks was not being able to understand the rise and fall of the quality of their team's performance without pouring over dozens of data tables. Spider Plots helped them visualize several metrics at once for each teammate in a single, easily read graph.

The code is based on the chart.js javascript library. Chart.js is actually quite nice for visualizing complex data. I chose to hard code the whole library into their FileMaker solution rather than link it in case the library is deprecated at some point in the future. You never can tell when some part of the internet is going to disappear and a dead link takes a critical chart with it. Hard coding the whole library makes it possible to work with the charts offline as well. Click HERE for a peek at what their solution looks like.

-Sully