Sign in

Murat Çorlu

@social.muratcorlu.com.ap.brid.gy
4 followers 0 following 97 posts

Software engineer and entrepreneur based in The Netherlands. Founder of synapsmedia.com, a Managed Hosting for Ghost CMS 🌉 bridged from ⁂ muratcorlu.com, follow @ap.brid.gy to interact

PostsRepliesMedia
Murat Çorlu @social.muratcorlu.com.ap.brid.gy · 29/09/2026
Synaps Media ve girişimcilik üzerine Ender'le çok keyifli bir sohbet ettik. Synaps Media'nın hikayesini bir podcast'te ilk kez Türkçe olarak anlatmak benim için de özel oldu. Umarım siz de dinlerken keyif alırsınız […]
muratcorlu.com
Original post on muratcorlu.com
010
Murat Çorlu @social.muratcorlu.com.ap.brid.gy · 28/09/2026
I started to track birds around home with BirdNet-Go. It's so much fun to see the birds living around us, we were hearing but had no idea about their species.
BirdNet-Go dashboard showing occurrences of bird species during a day
000
Murat Çorlu @social.muratcorlu.com.ap.brid.gy · 09/09/2026
Free Safari extension to open Twitter(X) links as popups, without visiting X andadinosaur.com/launch-litterbox via @gruber@mastodon.social
andadinosaur.com
Launch: Litterbox
Let me get you up to speed: Elon Musk took over Twitter and renamed it X and X became a shitty place and Nitter was an alternative X frontend that let you...
000
Murat Çorlu @social.muratcorlu.com.ap.brid.gy · 05/09/2026
I’m at the Indiecon Hamburg. Let’s chat if you are around. 🙂 www.indiecon-festival.com
000
Murat Çorlu @social.muratcorlu.com.ap.brid.gy · 02/09/2026
Did you know that every mac has a built-in remote desktop support tool? With built-in "Screen Sharing" app, you can connect to any mac around the world with its Apple Account (of course with their approval). Very practical for quick support.
macOS Screen Sharing app screenshot
000
Reposted by Murat Çorlu
John O'Nolan @index.john.onolan.org.ap.brid.gy · 19/08/2026
Couple people noticed that Ghost was just displaying sensitive content in feeds without any warning. Fixed now, and added a global setting! (This is just a screenshot of the new UI)
066
Murat Çorlu @social.muratcorlu.com.ap.brid.gy · 18/08/2026
I hope everything fine on mastodon.social
Notification list showing many randomly named mastodon.social accounts started following my account
000
Murat Çorlu @social.muratcorlu.com.ap.brid.gy · 13/08/2026
Soon we'll start to see labels on every site about AI involvement in them, as a legal requirement. www.smashingmagazine.com/2026/08/eu…
smashingmagazine.com
New EU Guidelines For AI Labelling — Smashing Magazine
New EU guidelines, why AI sparkles aren’t enough, when AI labels are required, and what the rules mean for AI-powered features and products. Brought to you by Design Patterns For AI Interfaces, **friendly video courses on UX** and design patterns by Vitaly.
020
Murat Çorlu @social.muratcorlu.com.ap.brid.gy · 08/07/2026
My experience of hosting 250+ Ghost sites shows that, the biggest frustration point of Ghost publishers are about setting up the themes. We need more easy to setup Ghost themes. And theme developers should look at the setup effort from a non-technical publisher perspective, instead of tech savvy […]
muratcorlu.com
Original post on muratcorlu.com
000
Murat Çorlu @social.muratcorlu.com.ap.brid.gy · 07/07/2026
Human beings are like water: once you put up a barrier in one place, they flow from the other side. You can change their route, but you cannot stop them from flowing. www.dutchnews.nl/2026/07/top-us-sci…
dutchnews.nl
000
Murat Çorlu @social.muratcorlu.com.ap.brid.gy · 02/07/2026
Inline partials is an underrated feature of Handlebars
muratcorlu.com
Using inline partials in Ghost Themes
Another thing I learned while working on Synaps Media landing page. First let me tell the need: My designer delivered me some reusable section UIs. When you have repeating components, it's a well known practice to use parametric Handlebars partials, and reuse them in multiple places with different values. Testimonials bubbles in our landing page is a good example. <figure class="testimonial-wrap"> <div class="testimonial-bubble"> <blockquote>{{quote}}</blockquote> </div> <figcaption class="testimonial-profile"> {{#if avatar}} <img src="{{ img_url avatar size="avatar" }}" srcset="{{ img_url avatar size="avatar2x" }} 2x" alt="{{name}}" width="40" height="40" loading="lazy"> {{/if}} <div class="testimonial-profile-info"> <strong>{{name}}</strong> <p>{{handle}}</p> </div> </figcaption> </figure> And in a place that I want to show a testimonial bubble, I use it like below: {{> "testimonial" quote="Some comments" avatar="https://...." name="John Doe" handle="john.doe" }} This is nice for simple use cases. But I had a section with a slider that I'll highlight some features. And in some cases you might want to pass large HTML content for some targets. To achieve this, in our partials we need to use "inline partials". <section class="feature-slider-section"> <div class="feature-slider-head"> <div> <h2 id="feature-slider-heading">{{#> heading}}Change title{{/heading}}</h2> <p>{{#> description}}Change description{{/description}}</p> </div> <div class="feature-slider-nav" aria-hidden="true"> <button type="button" data-dir="-1" aria-label="Previous"> {{> "icons/arrow"}} </button> <button type="button" data-dir="1" aria-label="Next"> {{> "icons/arrow"}} </button> </div> </div> <ul class="feature-slider-track" role="list" tabindex="0" aria-label="Features"> {{#> features}} <li class="feature-slider-card"> <div class="feature-slider-card-visual"></div> <h3>Feature title</h3> <p>Feature description</p> </li> {{/features}} </ul> </section> `{{#> features}}` part, create an inline partial with a default value inside. And here how we use it: {{#> "section-feature-slide"}} {{#*inline "heading"}}Built for modern publishers{{/inline}} {{#*inline "description"}}Slide through the features that make Synaps Media the privacy-first analytics platform you actually enjoy using.{{/inline}} {{#*inline "features"}} <li class="feature-slider-card"> <div class="feature-slider-card-visual"></div> <h3>Real-time analytics</h3> <p>Watch visits land as they happen, with zero cookies and no consent banners.</p> </li> <li class="feature-slider-card"> <div class="feature-slider-card-visual"></div> <h3>Invisible traffic</h3> <p>Bots, RSS readers and email clients that client-side tracking always misses.</p> </li> .... {{/inline}} {{/ "section-feature-slide"}} Similar to regular partials, with `{{#> "section-feature-slide"}}` syntax, we say "I want this partial here". But this time we are able to give partial block contents inside. `{{#*inline "features"}}` says "put this content inside "features" block in our partial. That's very handy. Very similar to how "slots" work on web components. Even though syntax is not very intuitive, it does the job.
000
Murat Çorlu @social.muratcorlu.com.ap.brid.gy · 02/07/2026
Did you ever want to put a section in a partial to a far place in an inherited template? I turned out that it's possible.
muratcorlu.com
Using contentFor helper in Ghost Themes
While working on new landing page of Synaps Media, I used a lot of inline CSS code. My intention was keeping section partials self-contained, like a component. So a basic section partial was something like: <style> .category-section { --card-padding: 24px; } </style> <section class="category-section"> ... </section> This worked well. At the end I had the only styles that is really needed inside the document. With Smart Optimization built-in to Synaps Media, these styles were also minified automatically, so not worried about waste of resource. I know ideally it's better to keep styles in external CSS files, but because of the network latency, I didn't want to fined by Page Speed for this. But another side effect was having many `style` tags inside `body`. Practically this is not a big issue as well. But I saw some warnings about this in HTML validators. If you care standards, `style` tag is not allowed inside `body` even though all modern browsers render it very well. I wanted to take my chance to pass this rule. But if I move all styles to `head` (or a separate file), then I would lose that some of my current achievements: I'll serve some unneeded styles for current page and I'll lose those self-contained handlebars templates. I used to use Django Framework in the past. Django templates (jinja) also uses inheritance and you were able to inherit multiple levels of templates and fill blocks on upper level templates in extended templates. Would it be possible to have the similar in Handlebars? I’ve learned that, at the point I’ve reached, this is possible with the help of contentFor. In my `default.hbs` file, I created a `head` block: <head> ... {{{block "head"}}} </head> <body> {{{body}}} </body> </html> And in my section partial file I used `contentFor` to place my styles in to page's head section: {{#contentFor "head"}} <style> .category-section { --card-padding: 24px; } </style> {{/contentFor}} <section class="category-section"> ... </section> The good part is, `contentFor` works even if the block is not defined in the parent of current template. In my case, my partials are included in `home.hbs` file, which extends `default.hbs`. And surprisingly `contentFor` worked well. Now I still have style definitions of sections inside the partial template, but result HTML has styles in head section. All items are checked! Hope you will find this information helpful!
010
Murat Çorlu @social.muratcorlu.com.ap.brid.gy · 02/07/2026
Ah, finally! 🥳 (Ghost v6.50)
System appearance mode setting on Ghost
000
Murat Çorlu @social.muratcorlu.com.ap.brid.gy · 27/06/2026
Bonus: Synaps Media customers will find a generous discount code for Haunt app on our panel! Thank you Mert! 😊
000
Murat Çorlu @social.muratcorlu.com.ap.brid.gy · 27/06/2026
It's so fancy and practical to track Ghost blog stats on my mac desktop with the Haunt app by @mert@mertbulan.com I strongly suggest to all Ghost publishers who use iPhone to give it a try. apps.apple.com/us/app/haunt-for-gho…
macOS widgets of Haunt iOS app showing stats of muratcorlu.com website
010
Reposted by Murat Çorlu
Synaps Media @hello.synapsmedia.com.ap.brid.gy · 26/06/2026
A reminder for people considering to start a new publication soon: Don't miss the launch discount!
synapsmedia.com
Last Days for 15% Launch Discount
Earlier this month, we introduced a major update to Synaps Media, including new pricing plans, a refreshed brand identity, and several new features such as built-in email inboxes. To celebrate the launch, we’ve been offering 15% off the first payment on all plans. This launch offer will end on June 30. If you’ve been considering starting a Ghost website, newsletter, or migrating from a self-hosted setup, now is the best time to join. ## Why upgrade now? • 15% off your first payment • Available on monthly, annual, 2-year, and 3-year plans • Additional savings on longer-term subscriptions • Offer ends June 30 If you are on a trial or considering to start a new site, don't miss the date for upgrading to a paid plan. After June 30, all plans will return to their regular pricing.
111
Murat Çorlu @social.muratcorlu.com.ap.brid.gy · 25/06/2026
For the "emdash = AI slop" crowd wil.to/posts/llemdashes
wil.to
Mat “Wilto” Marquis
000
Murat Çorlu @social.muratcorlu.com.ap.brid.gy · 25/06/2026
I officially turned 44 as an entrepreneur. Let me briefly walk you through what happened and how it got here.
muratcorlu.com
44
Today I turned 44. And I have never been this close to making a living from my own business, something I had been dreaming about and trying to build since my university years. My Synaps Media adventure, which I started two years ago, has turned into a success story thanks to 20 years of prior experience and a number of other factors that came together at the right time. Along the way, I have learned a great deal, and I keep learning new things and tackling new challenges every day. But something is different now: every obstacle I get through adds to my knowledge. Instead of the same recurring problems I faced in my previous jobs, I now have fresh and new ones. Recurring problems wear down your motivation. But a problem you are facing for the first time actually gives you a boost of confidence when you solve it. As a new entrepreneur who has reached a certain level of success, I want to write about a few things I have learned. ## Time. Just a little more time. Successful startup stories on the internet almost always tell us about big achievements reached in a very short time. "I hit $10K MRR in 3 months," "I surpassed my salary in 6 months" — stories like these give us the message that reaching a sustainable income is only possible through scenarios like these. Until I left Trendyol and started trying to build my own business, I used to say the same things. "If I just had a year without needing a salary, I would definitely be earning this much from one of my projects." I also used to say, "Any project that hasn't matched my salary within a year has already failed." I no longer think that way. Of course, sometimes it is possible to reach very high income within a year. But from what I have seen, that is the exception, not the rule. And on top of being rare, the real cost behind those stories is rarely shown. Is it realistic for you to do the following in order to reach a very high income goal in a very short time? * Working 18 hours a day for months, spending less time with family and friends, not being there when they need you * "Fake it till you make it" — putting fake reviews and made-up numbers on your product page * Using psychological tricks to turn even people who don't need your product into customers * Building meaningless or even harmful products just because they have high market potential * Finding an idea that is "easy to sell," making long-term promises to customers, and then selling the business at the first attractive offer six months later I know — these are the building blocks of today's marketing industry. Refusing to do them might seem naive. But I believe that when the goal is making money, ethics should not be treated as a minor detail. If life has a purpose, it should not be to earn as much as possible, but to create as much as possible — to create things that are useful for people. And to do that, you need time. If you are building something genuinely good, you need to give it time to reach people and earn their trust. Especially today, with so much information noise, scattered attention, heavy news cycles, financial worries, and a crisis of trust — even a great project can take a very long time to reach its potential customers. As someone who is 44 years old and has tried to build close to a hundred projects, I can say this: to know whether a project should be abandoned or continued, you need to give it at least 2 to 3 years and put in the real work during that time. This is often true even for large, well-funded projects. Between 2009 and 2015, I worked at Sahibinden.com, which was Turkey's leading classifieds site. I was surprised to learn that the site, which launched in 2000, did not become profitable until seven years later. But that determination eventually gave them hundreds of employees and a value of hundreds of millions of dollars. The founders had both money and time. If they had given up after a year of not seeing expected results — like many people do today — Turkey's biggest classifieds site would belong to someone else. ## Building a project while working a day job For people who did not inherit wealth, the biggest challenge of running your own business is simply paying the bills. Working 40 hours a week at a job and then trying to develop a product in your remaining time is genuinely exhausting. Doing this while being married and having kids, without sacrificing something, feels almost impossible. Until I left Trendyol in 2024, I had been working continuously for nearly 20 years. And for almost all of those 20 years, I had side projects running alongside my main job. There were times I even took time off work to focus on a project. But running a project this way is not sustainable. Something you could finish in two or three months working full time ends up taking a year. That drains your energy and motivation, and it delays the early feedback and small wins that would otherwise keep you going. I was able to break out of this cycle thanks to a more stable life in the Netherlands, some savings I had built up, and my wife's support. Without those things, Synaps Media would have taken years longer to reach where it is now — if it had gotten here at all. My advice to you: if you don't have enough savings to go without a salary for a while, work toward building that cushion first. Or consider working part-time, or getting support from people close to you — so you can invest in your project in a sustainable and meaningful way. One important but often overlooked factor is your spending. When I decided to keep going on a limited budget, being much more careful with my expenses gave me a significantly longer runway. Avoiding spending that wouldn't improve my work output and would only shorten how far I could go made a real, visible difference. That is worth thinking about. Of course, finding an investor is another option that comes up a lot. Honestly, when I looked into the world of startup investment, I realized it wasn't for me. With a few exceptions, when you take investor money, you and your project become just one asset in their portfolio. They are not interested in what you're building, how you're building it, or whether your customers are happy. The only thing they care about is how much their money will grow in one or two years. So when you build with investor funding, you end up in a frantic race that never stops. Even if your project earns enough to sustain you and your team, even if your customers love what you've built, if you can't deliver 2x or 3x returns to your investor next year, your project is doomed. We often see great, useful, well-loved projects go in strange directions — or shut down entirely — simply because they couldn't satisfy their investors. A successful exit can still be a great outcome for people building these projects. But if, like me, you want to earn a living while also creating something genuinely useful, an investor can become your biggest obstacle over time. ## Touching people's lives The greatest satisfaction my work has given me is reaching people all around the world through the software I build, and helping them create value in their own lives. Even when I worked at Sahibinden.com, I used to feel a real sense of pride hearing strangers on public transit talking about how great the site was. And I was just one of hundreds of people working there. At Synaps Media, that motivation is at its highest. I host more than 250 websites belonging to nearly 200 people from over 40 countries. I have had conversations with almost all of them. Through those conversations, I have encountered very different worlds and very different perspectives. But there was one thing they all had in common: human emotions. I take genuine pleasure in the fact that what I do feels less like a robotic service and more like a neighborhood shop — professional, yes, but with a personal touch. I try never to forget that I am a human being and that the person on the other side is also an individual living their own busy life. I do my best for them with that in mind. This seems to be noticed, because I now regularly read wonderful comments on social media about both the service and about me personally. Very few things make me happier than that. If you also find joy in creating useful things, then build things around that. Don't let a small market size discourage you. Of course, evaluating whether the return is worth the effort is a basic requirement for any business. But jumping into projects that have no real value for you or for anyone else — just because a lot of people are throwing money at that space right now — does not seem like a sustainable business model to me. ## What's next I don't want anyone reading this to get the impression that I have completely figured it all out. There is still a lot of ground to cover at Synaps Media. My current goal is for the project's income to reach a level by the end of the year where I no longer need to take on extra work on the side, and to be in a position to bring on a team member to share the load and reduce the risk. The way things are going suggests this is a realistic target. I will keep doing the best I can, and we will see where things go.
000
Murat Çorlu @social.muratcorlu.com.ap.brid.gy · 25/06/2026
[TR] Bugün 44 oldum. Bu yıl hayatımda Synaps Media yılı. O yüzden sizlerle bu hikayemi paylaşmak istedim. muratcorlu.com/tr/44
muratcorlu.com
44
44 yaşıma artık resmi olarak girişimci olarak girdim. Ne oldu, nasıl oldu, gelin kısaca bir değinelim.
000
Murat Çorlu @social.muratcorlu.com.ap.brid.gy · 24/06/2026
Do you use "please" when you ask AI? Please do. Because whatever you do a lot becomes a habit in time. Talk to AI like a human, so you do not talk to humans like AI later.
010
Murat Çorlu @social.muratcorlu.com.ap.brid.gy · 23/06/2026
After 1,5 years, it still surprises me to see that much accounts using Proton Mail, in Synaps Media. Either Proton Mail is the most popular email service, or Proton Mail users love Synaps Media. Or maybe both, not sure 😊
000
Murat Çorlu @social.muratcorlu.com.ap.brid.gy · 23/06/2026
Yes, one of the key things is not loading apps when they are not needed (like cards, comments on homepage, lazy load portal when possible). Also default apps are not cached on browser at all (10 minutes). I serve them over custom domain with specific latest versions with very long browser cache […]
muratcorlu.com
Original post on muratcorlu.com
010
Murat Çorlu @social.muratcorlu.com.ap.brid.gy · 23/06/2026
We've put serious work into the infrastructure layer so every Synaps Media publication starts with a strong performance foundation, no technical setup required by the publisher. Here's the PageSpeed report for our homepage, which runs on the same Ghost […] [Original post on muratcorlu.com]
Pagepeed report screenshot for synapsmedia.com showing 100 points score on performance on mobile test
011
Reposted by Murat Çorlu
Spectral Web Services @cathy.spectralwebservices.com.ap.brid.gy · 22/06/2026
Another Spectral Web Services tool
spectralwebservices.com
How to connect your Ghost site to Apple News
Newly out in alpha over on the Spectral Web Services Tools for Ghost page: 🎉An Apple News integration! This one was a bear to build, because Apple News Format is its own thing, and although it sort of looks like HTML, it isn't. So I needed to translate every single Ghost card (and every single variant) into an Apple News component. You know how it always seems like it'd be nice to have just a few more cards built into the editor? There was a lot of swearing and not really feeling that. (I'm better now, and back to thinking it'd be super nice to have another half-dozen or so cards to give us more publishing options.) OK, enough whining, what's it do? ## Features * Triggered on post published event in Ghost, or manually. * Go straight to published, or save drafts for review later. * Configuration options for how it handles paywalled content, including publishing or protecting your members-only content. (Yes, it understands the preview line, too.) * Layout configuration options * Publish everything, or use tags to control what syndicates * Compatible with all Ghost cards (er... except HTML and Codepen) ### Caveats * It's in alpha. There might be bugs. 🐛 * The toggle card doesn't toggle - it starts open and stays there. (Apple News just can't do that.) Of course, it doesn't toggle in email, either! * Getting approved for Apple News distribution is a hurdle. I can get your content from Ghost to Apple News, but I can't promise they'll surface it once it gets there. That appears to be the hardest and slowest part, at this point. ## How to get an Apple News account ### Make your account 1. Read this first - if you aren't publishing news, stop here, go do something else. 2. Sign up for an account at icloud.com, if you don't already have one. Make sure 2FA is on. 3. Follow these instructions to get your channel id, key, and secret: https://support.apple.com/en-jo/guide/news-publisher/apd88c8447e6/1.0/icloud/1.0 4. Head over to the Apple News Integration page at https://tools.spectralwebservices.com/ . (Log in and set up your site if you haven't already.) In the Install tab, copy and paste in those values from step 3. 5. Publish something on Ghost! Or... head over to the Activity tab and manually publish some things. (Note, you need an Admin API key set up for your site before any of this will work.) 6. Your content should show up on the Tools > Apple News Integration > Activity tab within a minute or so, and then within your site's Apple news publisher page (accessible through iCloud.com) a minute or two after that. The activity tab gives you a direct link to the article which you can use on an Apple device to view the article directly. 7. Check out your articles using the direct link to each, or use the channel link (available in Apple News Publisher) to link directly to your channel. 8. Once you've got multiple articles published and looking great, you can request to have your site available to the public. Strangely, it appears that this form is the current mechanism for doing so. (Another option is having a contact at Apple News, being invited to apply, etc.) ## Help wanted! I would really appreciate hearing from you on whether this integration does what you need it to do, or if not, which knobs and settings are missing.
011
Reposted by Murat Çorlu
Spectral Web Services @cathy.spectralwebservices.com.ap.brid.gy · 17/06/2026
No, I'm not offering one. Here's why.
spectralwebservices.com
Contact forms?
A couple years ago, I got quite a long way into building a contact form builder. I got asked for contact forms regularly (and still do), and I thought building a builder was the way to go. I've changed my mind. ## Why I'm not offering a contact form builder * There are a lot of them already. The market is pretty flooded. * What's out there is already pretty good. I could roll out a basic one today (been there, done that for my own site a while back), but what's out there typically includes branching logic and such. Sure, I could build that, but it doesn't seem like a high-value activity. * Spam prevention is hard. Contact forms are vulnerable to all sorts of spammy submissions, bogus entries, and such. I'd rather let someone else deal with it! ## What I recommend: The TL;DR. * If you're already using another paid service that includes forms (Hubspot, Notion, Asana, AirTable, Moxie), those are worth investigating. If it gets submission data directly into your workflow, that's worth something, for sure! * I was pretty excited to get Form Robin at $19/once. I used that for a while, but I don't love the branding (and orange really doesn't go with my brand purple). And it's just not quite configurable enough. Maybe I don't want your form title in my embed, hmm? * My current go-to recommendation is Tally. Their free tier is enormous, their builder is nice, and although some customizations are locked behind their Pro tier, you can do a lot with what's in free. (I just wish they had the Arial font on their list.) Here's an affiliate link that will get you 50% off for three months, in the event that you decide you need their paid plan. 👉 Tally.so 👈 ## Let's see some forms in action, hmm? ⚠️ I've said it before, but here it goes again: JavaScript (including contact form javascript) doesn't work in email, nor in ActivityPub, so if you're reading on email or on Ghost's ActivityPub reader, you're going to need to hit the "read in browser" link at the top of the page to see what I'm talking about below. And... it's been 300-something days since Ghost 6.0 launched, with no way to control the visibility of content on ActivityPub specifically. [OK, ok, so technically I could hide this card on non-ActivityPub web by injecting some styles for normal web viewers, if I worked out which card this is on a page that might contain multiple cards. Apparently I'd rather point out the problem repeatedly.] Right. Sorry... on to some example forms! ### Moxie (Included with my $25/month plan, and not the reason I signed up.) Moxie is my current client portal/task tracker/time manager platform. Here's an example embed. Note that to make it look like this, I needed to add some css override to the layout: .v-application .pa-6 {padding: 0!important} .v-application .px-2 {padding-left: 0!important} I appreciate being able to inject my own css into the embed. But the problem I'm solving here is the obnoxious tendency of every form provider out there to include horizontal margins on their embedded form. No guys, I actually want my form aligned with the content around it. And I don't love overriding .px-2. It doesn't appear to break anything, but it looks general enough that I worry I've missed something. * * * ### Form Robin (Purchased for $19/once on App Sumo) I wanted to love it, since it was buy once and use forever. But, I don't? I used it for a while anyway. My biggest complaint is that I can't remove the title, which makes it much more obviously an embed, instead of part of the host page. Then there's the goofy margins. Out of the box, it uses 102px of combined margin and padding. I can override that like this: <style>iframe {margin-left: -102px;}</style> But then it's broken on mobile, so instead I'd need to sort out what their breakpoints and set margins for each, I guess? I looked. It was complicated. No thanks. There's also no control over the big whitespace below it and their branding is _not_ subtle. (Might be fine as the last element on the page, but it's annoying me here. The one thing I really like about Form Robin is the small notes below each form label. Those are nice. I tried to replicate them in Tally, but I don't have size control for them, at least not on the free plan. * * * ### Tally.so (Affiliate link, but you don't need a paid plan.) I'm able to turn off the title (yay!), and the padding is _almost_ right when I choose to left align the content, and the padding situation is consistent on all screens so that I can just add some negative margin: <style> iframe[data-tally-src] {margin-left: -8px!important;} </style> I don't love the branding, but I don't hate it to the tune of $29/month, either. * * * And there you have it. Today's thoughts on contact forms. Additional contact form provider recommendations are welcome in the comments, but spammy nonsense will be removed. If you're going to recommend something, please include cost and submission limits for that cost. Thanks!
000
Reposted by Murat Çorlu
Synaps Media @hello.synapsmedia.com.ap.brid.gy · 15/06/2026
Synaps Media now automatically optimizes your HTML, CSS, and JavaScript files before they reach your visitors. No build tools, no extra steps, no added cost.
synapsmedia.com
Introducing Smart Optimization
Managing a website should be about your content and design, not managing build tools. Ghost recently introduced a built-in Theme Editor in Ghost Admin, letting publishers edit theme files directly without uploading new theme archives for every change. It's a great step toward making theme customization more accessible. However, most modern themes come with prebuilt CSS and JavaScript files. Theme developers write their code in multiple, readable source files, then run a build process that combines and minifies them into smaller files optimized for delivery to visitors. This keeps the codebase organized during development while keeping the final website fast. This works fine in a typical development workflow, but the new Theme Editor has no build step of its own. If your theme depends on these prebuilt files, editing them directly in Ghost Admin means working with unreadable, minified code, with no way to regenerate the optimized versions afterward. Smart Optimization removes this problem at the source. ## Your files, optimized automatically Smart Optimization is a new Synaps Media feature that automatically optimizes your HTML, CSS, JavaScript, and SVG files before they reach your visitors — no build step required on your end. This means you can include plain, readable source files in your theme and edit them freely in Ghost's Theme Editor. Synaps Media handles the optimization transparently, in the background, on every request. Smaller pages. Faster loads. No extra work. ## Code Injection gets optimized too Ghost's Code Injection is one of its most powerful features — a quick way to add custom styles or scripts without touching theme files. But those snippets are normally delivered exactly as you write them, comments and all. With Smart Optimization, inline CSS and JavaScript from Code Injection is optimized as well, so your site stays lean even as you layer in customizations. ## Available on all plans, at no extra cost Smart Optimization is enabled by default for every Synaps Media website, across all plans. There's nothing to activate and nothing to pay — it just works. If you ever need to adjust it, you can find the controls under **Advanced Settings → Smart Optimization** , where you can toggle optimization individually for HTML, CSS, JavaScript, and SVG. For a full guide on getting the most out of this feature, including theme development tips and implementation details, visit the documentation. ## Fast websites, by default Smart Optimization is part of a broader commitment at Synaps Media: every site we host should be fast out of the box, without putting the technical burden on publishers. Performance shouldn't be a privilege reserved for those who know their way around a build pipeline. We'll continue building infrastructure-level improvements that work quietly behind the scenes, so you can stay focused on what matters — your content.
011
Reposted by Murat Çorlu
Spectral Web Services @cathy.spectralwebservices.com.ap.brid.gy · 11/06/2026
Having so much fun building out tools.spectralwebservices.com. Today, I did a couple Algolia advanced search integrations, and clocked the time to set one up at EIGHT MINUTES. (The indexer might have still been running at the 8 minute mark for one of the two, that had a LOT of posts.) I […]
spectralwebservices.com
Original post on spectralwebservices.com
012
Reposted by Murat Çorlu
Spectral Web Services @cathy.spectralwebservices.com.ap.brid.gy · 12/06/2026
In 14 minutes. Faster if you don't talk as much as I do.
spectralwebservices.com
How to set up the Spectral Web Services search integration
I'm having a ton of fun setting up https://tools.spectralwebservices.com , where I'm collecting all my useful Ghost tools. Today, a video walkthrough (one take with minor splicing, please forgive me the rough spots) showing how to go from zero to advanced search for your site, all in less than 15 minutes. And that's it! Check it out and please let me know how it's working for you! Tip: Entirely optional, but if you'd like to skip the native search loading, a one line theme edit below will slightly speed up your site load. This is totally optional, though, so don't let it slow you down on getting started by following the video above. Find this code (probably in default.hbs): {{ghost_head}} Replace it with: {{ghost_head exclude="search"}}
022
Murat Çorlu @social.muratcorlu.com.ap.brid.gy · 08/06/2026
I'm upset to learn that my 3 years old Apple Watch Ultra will not get the next OS update. This can be the shortest lifetime of software updates for an Apple device. :/
Apple announcement screenshot mentions watchOS 27 compatible devices: Apple Watch SE3, 10 - 11, Ultra 2-3
000
Murat Çorlu @social.muratcorlu.com.ap.brid.gy · 07/06/2026
Always love when great tech is being built right in your backyard. Met Chris today, he’s building Vellumine, a search service for Ghost that really stands out. Glad we connected. Check his great work www.vellumine.com
011
Murat Çorlu @social.muratcorlu.com.ap.brid.gy · 07/06/2026
If you truly value and respect your Ghost subscribers, please do not migrate them to proprietary platforms such as Substack without first obtaining their consent. People subscribe because of you; they may not wish to disclose their reading and subscription preferences to a company that monetizes […]
muratcorlu.com
Original post on muratcorlu.com
011
Murat Çorlu @social.muratcorlu.com.ap.brid.gy · 04/06/2026
It's sometime very confusing for the people new to Ghost to understand the difference between Ghost software and Ghost(Pro) service. I also get many questions regarding to this in Synaps Media. Jannis from Magic Pages explains the details well […]
muratcorlu.com
Original post on muratcorlu.com
001
Reposted by Murat Çorlu
Synaps Media @hello.synapsmedia.com.ap.brid.gy · 03/06/2026
We are on ProductHunt today! Thank you for your support! www.producthunt.com/products/synaps…
021
Reposted by Murat Çorlu
Synaps Media @hello.synapsmedia.com.ap.brid.gy · 01/06/2026
Today is a big milestone for Synaps Media. After months of work, we are now ready to take off.
synapsmedia.com
A New Chapter for Synaps Media
A little over a year ago, I launched Synaps Media with a simple idea: creating a Ghost publication should be as easy as signing up for a social media account. No servers to configure, no deployments to manage, no DNS records to figure out. Just your site, ready to go. I wasn't sure what to expect. But I'm very happy with where things stand today. Today, Synaps Media powers around 250 sites for almost 200 customers across 40 countries, serving over a million requests every single day. What started as a bet on a simple idea has grown into something I'm genuinely proud of. Real publishers, real businesses, real sites, running reliably every day. Thank you. Seriously. Every customer who trusted Synaps Media in its early days made today possible. And today, I want to tell you about what comes next. ## A fresh look The first thing you'll notice is that Synaps Media looks different. I worked with designer Enes Ates on a complete rebrand. New logo, new visual identity, new website. The goal was to bring the outside in line with where the product actually is: more mature, more polished, more confident. The early look served its purpose, but Synaps Media has grown up, and the branding needed to catch up. A look at to new Synaps Media Panel In addition to our website, Synaps Media Panel is also renewed. With new features and needs, it has now a fresh look aligned with moden design language. New panel UI will be base for many upcoming features. I'm very happy with how it turned out. I hope you like it. ## New plans, built for the long run Different publications have different needs. As Synaps Media strives to provide more and more features, it would not be nice to increase prices for all, who will not need all those features. To keep feature/pricing parity reasonable for everyone, Synaps Media now offers two plans: **Basic** and **Premium.** **Basic Plan** is for providing the best price for a managed hosting while including all the essentials, including **Custom Themes** , **Worldwide CDN** , daily backups and includes **6,000 email newsletters every month** that you can send up to **3,000 members**! **Premium Plan** is our full-package. **Unlimited Members** , included **12,000 monthly newsletters** , **Custom Sending Domain, Premium CDN, Custom Integrations** and more exclusive features (check below). Both plans are available from monthly up to **3-year billing periods**. The longer you commit, the more you save, up to **45% off** compared to monthly pricing. I designed it this way because long-term subscribers deserve a real reward, not just a token discount. Base pricing starts from €9/mo for the Basic plan, with long-term plans bringing that down to €5.50/mo. Full pricing for all billing periods with your local currencies is on the pricing page. Prices vary on local currencies. Please check pricing page for actual prices. Limited Time Launch Offer To celebrate the launch, prices will be ****15% OFF**** on all plans during June! Don't miss this! Speaking of currencies: Synaps Media now supports local payments in over ten currencies, powered by Stripe Managed Payments. This means you can pay in your local currency using local payment methods, including UPI for customers in India. Fewer conversion fees, more familiar checkout options, wherever you are in the world. ## E-mail inboxes for your domain One of the most common things I hear from customers is that setting up email for their custom domain is a headache. You get your site running, then you need to figure out Google Workspace, or Zoho, or some other service, just to receive emails at your own domain. Premium subscribers no longer have to do that. With the Premium plan, Synaps Media provides email inboxes and email forwarding for your custom domain, managed directly from your dashboard. It's one less service to set up, one less bill to track, and one less reason to leave the platform to get things done. ### Coming in Q3: Advanced Web Analytics I want to give you an early look at something I've been building quietly in the background. Later this year, Synaps Media will introduce Advanced Web Analytics for Premium subscribers. This is something I haven't seen any other managed Ghost hosting provider offer, and I think it changes what publishers can actually know about their audience. Most analytics tools work by running JavaScript in your reader's browser. That means they miss a lot. RSS readers, email clients, bots, scrapers, hotlink traffic, bandwidth usage, none of that shows up in a standard analytics dashboard. Advanced Web Analytics is built on server-side traffic data. That means you'll be able to see your real traffic picture: bot traffic vs. human traffic, which RSS clients are reading your feed, how your content is being consumed via email newsletters, traffic for static content, and more. For publishers who care about understanding their audience deeply, this is a fundamentally different kind of data. This feature will be available to Premium subscribers in Q3. I'll share more details as we get closer. ## More things to come This launch made the bases for many improvements as well. By the help of all those enablers in our platform, some long-waiting additions will come soon: * A self-serve migration wizard to move your websites to Synaps Media easier and faster (we are always ready to help you to migrate) * A referral program to thank your effort for spreading the word * Improvements on Domain Manager for common tasks (like setting up external email provider) * More tools and services for your sites to remove frictions. ## What I've learned, and where this is going Running Synaps Media for the past year has taught me a lot. I've learned what publishers actually need, what causes friction, and where the real value of a managed hosting service lives. It's not just uptime. It's the ability to focus entirely on your content and your audience, trust that everything else is handled, and being able to reach for help whenever you need. That's what I'm building toward. The new plans, the email inboxes, the analytics, the local currency support, these aren't isolated features. They're pieces of a platform that I want to be genuinely indispensable for independent publishers and small businesses. A place where you don't have to think about the infrastructure, because it just works. Synaps Media is a small, dedicated team. I run it full-time, with two part-time collaborators who help build and maintain parts of the platform. Every subscription directly funds what gets built next, and knowing that real people rely on this every day is what keeps the work meaningful. If Synaps Media sounds like the right home for your site, I'd love to have you. Explore plans and pricing And if you're already a customer: thank you, genuinely. A huge part of what got Synaps Media to this point came from your feedback, your kind words, and the times you recommended it to someone else. That kind of support means more than any marketing campaign ever could. If you believe in what we're building, the best thing you can do is share this with someone who might need it. A fellow writer, a small business owner, anyone who's been putting off starting their site because the technical side felt too daunting. Send them this post, mention us on social media, or just point them to synapsmedia.com. It makes a real difference. Thank you for being part of this chapter. — Murat Çorlu Synaps Media
003
Reposted by Murat Çorlu
John O'Nolan @index.john.onolan.org.ap.brid.gy · 29/05/2026
Shipped and live now: Inbound MOVE handling for ActivityPub in Ghost So if an account you're following moves somewhere new, Ghost will automatically drop the old account handle and follow the new one. This is pt2 of adding migration support. Pt1 was migrating external socialweb profiles into […]
john.onolan.org
Original post on john.onolan.org
169
Reposted by Murat Çorlu
Synaps Media @hello.synapsmedia.com.ap.brid.gy · 27/05/2026
Managing your Ghost site shouldn't require a sysadmin degree. We're making it even simpler. Email inboxes for your domain. Advanced Analytics. Multi-site management. Local payments. Full announcement June 1st.
011
Reposted by Murat Çorlu
Synaps Media @hello.synapsmedia.com.ap.brid.gy · 25/05/2026
Something new is coming to Synaps Media. We've been working with Enes Ates on a completely renewed look. Cleaner, more confident, more us. Reveal on June 1st.
New Synaps Media Logo
011
Reposted by Murat Çorlu
John O'Nolan @index.john.onolan.org.ap.brid.gy · 21/05/2026
This is now live! If you have an old social web profile with followers that you want to move over to Ghost, that now works. Find it under Network → Preferences → Account Migration Set up an account alias pointing to your old handle, then initiate an account move on your old profile.
149
Murat Çorlu @social.muratcorlu.com.ap.brid.gy · 14/05/2026
Thanks for making this part of Ghost core. I think this will help many publishers.
020
Reposted by Murat Çorlu
John O'Nolan @index.john.onolan.org.ap.brid.gy · 14/05/2026
Fun ship this week: No more downloading and uploading zips — now you can make quick Ghost theme edits directly in your browser, thanks to contributions by @murat@muratcorlu.com ghost.org/changelog/theme-editor
064
Murat Çorlu @social.muratcorlu.com.ap.brid.gy · 12/05/2026
Looks great! Is this a client only experiment by using current API endpoints, or did you add new ones for storage operations?
000
Reposted by Murat Çorlu
John O'Nolan @index.john.onolan.org.ap.brid.gy · 11/05/2026
experimenting with a media library for Ghost
172
Murat Çorlu @social.muratcorlu.com.ap.brid.gy · 12/05/2026
Did you know getting live updates was from user profiles was a thing even before the internet?
muratcorlu.com
Socialize like it's 70s!
Today I was reading this awesome article: The Boring InternetThe internet you grew up on isn’t dying. A commercial veneer glued on top of it is. A visual essay about what actually persists.Terry GodierTerry Godier When I reached to the point he talks about finger protocol, I directly wanted to try if that would work with ActivityPub handles. Unfortunately it didn't work. I made a quick research and learned some details about how `finger` protocol works, differences between WebFinger which ActivityPub uses. Then started looking for options to make ActivityPub handles work with this old friend, `finger`. With the help of Claude, it didn't take long to write a finger to ActivityPub proxy server and make it live with a fancy landing page. And here it is: finger.fedi.pub — Socialize like it’s 70sConnect to ActivityPub actors via plain TCP port 79. No JavaScript. No tracking. Just text. It's a few hundreds like of Python code listening 79 port, and responds with nice text based informations about the ActivityPub handles you query. Here an example response: ➜ ~ finger murat@muratcorlu.com@finger.fedi.pub [finger.fedi.pub] ════════════════════════════════════════════════════════════════════════ Murat Çorlu (@murat@muratcorlu.com) ──────────────────────────────────────────────────────────────────────── Type : Person Profile : https://muratcorlu.com/ ──────────────────────────────────────────────────────────────────────── Bio: Software engineer and entrepreneur based in The Netherlands. Founder of synapsmedia.com, a Managed Hosting for Ghost CMS ──────────────────────────────────────────────────────────────────────── Recent posts (5 shown): [1] 2026-04-12 07:00 UTC Article Ghost Theme Editor → https://muratcorlu.com/ghost-theme-editor/ [2] 2026-04-12 00:07 UTC Note Ah, what a night! → https://muratcorlu.com/.ghost/activitypub/note/af0f41f5-a2f9-478f-9412-b8352671434e [3] 2026-03-30 13:54 UTC Note I'm listed as one of the 10 Most Influential People Shaping the Future of Business in 2026! ...Well, if I'm ok to pay $1000 for this. :( → https://muratcorlu.com/.ghost/activitypub/note/568b9211-0835-4eb5-8e64-eba1748242b1 [4] 2026-03-20 11:28 UTC Note I'm glad to start this with ThemeX. I love Trong's works, and now Synaps Media hosts demos of those awesome themes! https://www.synapsmedia.com/changelog/launching-free-ghost- theme-demo-hosting-starting-with-themex-studio/ → https://muratcorlu.com/.ghost/activitypub/note/374196db-021f-4b7b-b8f1-7c229dc1983a [5] 2026-03-18 14:07 UTC Note Anyone would like to have a menu bar app for Ghost? I needed this to check my social web timeline and quickly post notes. Would you have other use cases? → https://muratcorlu.com/.ghost/activitypub/note/8facef98-5e18-40a4-ac37-d346c45cc8e4 ════════════════════════════════════════════════════════════════════════ It's dynamically fetching requested handle from its WebFinger endpoints, parses them and generate text based responses. `finger` command is already built-in on unix based systems like Linux and macOS. If you use one of them, just open a terminal and write: finger murat@muratcorlu.com@finger.fedi.pub Or any ActivityPub handles from any other Ghost sites, Mastodon accounts, Wordpress sites enabled ActivityPub. It's definitely not something you will rely on daily, but to me, it's fascinating to see we can still make useful things with the protocols created 50+ years ago. This is the great side of open protocols, over company backed systems. They last forever, they are independent, and easy to rely on. Let's don't miss this and be aware of the importance of using decentralized protocols.
000
Reposted by Murat Çorlu
Spectral Web Services @cathy.spectralwebservices.com.ap.brid.gy · 25/04/2026
And you might need to roll your keys, too.
spectralwebservices.com
If you are on less than Ghost 6.19.1, it's way past time to upgrade
Hey self-hosting folks, **REMINDER: I don’t work for Ghost. The content below is my own opinion, not that of the Ghost Foundation, blah blah blah. Might be wrong, and possibly worth only what you paid for it (nothing).** In case you’ve missed it, Ghost had a baaad security vulnerability back in February, disclosed here: SQL injection in Content API### Impact A SQL injection vulnerability existed in Ghost’s Content API that allowed unauthenticated attackers to read arbitrary data from the database. ### Vulnerable Versions This vulne…GitHubTryGhost That’s a bad one. Specifically, it allows an attacker to read your whole site, include admin api keys, and once they’ve got the admin api key, there’s a lot that can go wrong. 💡 If you are in managed hosting (at least Ghost Pro, Synaps, Magic Pages), you got patched as soon as 6.19.1 was released. You can probably give a sigh of relief and stop reading. This post is mostly for self-hosters who haven't upgraded, or who wanted a while before upgrading. So, if you’re self hosting, you should IMMEDIATELY upgrade. Do not pass go, do not collect $200, just upgrade. (The vulnerability is there all the way back to 3.x, so older sites are not safe.) If you updated right when 6.19.1 was released, it might be ok to assume that your site wasn’t compromised before you updated, since the vulnerability probably wasn’t widely known… maybe. If you’re still at < 6.19.1 NOW, you need to seriously consider the possibility that attackers might already have your admin api key, and that upgrading will remove the ability to get a key, but not fix any existing key leakage. My possibly over-cautious thought is that y _ou should probably roll all your keys, including staff tokens_. I’m not sure if this is overly alarmist, but better safe than sorry? My thinking here is that **NOTE: If you have services connected through these keys, you WILL break them by doing this. You’ll need to revisit each service and provide the newly regenerated key/token. Yes, that sounds like a pain.** Staff tokens can be regenerated from the individual staff profile (only for the logged in user). Scroll down and click ‘regenerate’. Suspend any admin or enhanced editor users you can’t get to regenerate their own tokens. (Editors with the enhanced editor role can read the members list.) Your Admin API keys in custom integrations can be regenerated from /ghost > settings > custom - click into each integration and regenerate. You also need to regenerate your Zapier token - in /ghost > settings > integrations, click ‘configure’ next to zapier and regenerate the token. I’ve seen two reports of sites being compromised via Zapier token, specifically. I’m not _sure_ it’s from this vulnerability instead of a Zapier vulnerability/leak, but I’m suspicious. * * * That’s all I know. Wanted to get it out there in case it helps someone. Even if key rolling sounds like too much to do today, please please please do yourself a favor and update to >= 6.19.1. (This is a crosspost with the Ghost forum: https://forum.ghost.org/t/if-you-are-on-ghost-6-19-1-you-really-need-to-update/62706 ) * * * Hey, before you go... If your finances allow you to keep this tea-drinking ghost and the freelancer behind her supplied with our hot beverage of choice, we'd both appreciate it! Buy me a tea ☕️
000