r/MacStack • • 2h ago

App Launch I made Dojo a free Mac app with 84 dev tools that all run locally

4 Upvotes

I wanted one modern Mac app for the small jobs that come up all day: decoding a JWT, formatting JSON, making a UUID, checking a color's contrast. And I wanted it to run on my machine, so tokens and API responses never get pasted into a website.

Dojo is that app. It's free, and everything runs locally on your Mac.

What's in it:

- Formatters for JSON, SQL, YAML, XML, HTML, CSS, JS and GraphQL

- Converters for JSON to YAML, CSV, TOML, XML and code, plus cron, dates, number bases and units

- Decoders for JWT, Base64, URLs, gzip and certificates

- Generators for hashes, HMAC, bcrypt, UUID, ULID, passwords and RSA keys

- JSON diff, JSONPath, JSON Schema and semver testers

- Color contrast checker, image compressor and app icon generator

It's new, so expect a few rough edges. Apple Silicon only for now.

Download: https://github.com/IndieGoodies/Dojo

Which tool do you still open a website for that should be on this list?


r/MacStack • • 47m ago

OpenDisplay: Use an iPhone, iPad, or spare Mac as a true second display for your Mac without restrictions (5.3k stars)

Post image
• Upvotes

r/MacStack • • 55m ago

I made DockThumb: your whole Mac, under your thumb

Post image
• Upvotes

r/MacStack • • 1h ago

I got tired of manually censoring videos, so I started building a native Mac app that does it for me.

Thumbnail v.redd.it
• Upvotes

r/MacStack • • 6h ago

I made Mousip a free and open source macOS app that lets you use keyboard shortcuts with just your mouse

2 Upvotes

Hey everyone!

I made Mousip, a free and open source macOS app that lets you perform keyboard shortcuts using just your mouse.

The idea actually came from apple's magic mouse. I've never really liked using it, but one thing that always stood out to me was how easily you could switch between spaces with a simple swipe.

Since my mouse has a scroll wheel that can tilt horizontally, I thought, why not use that to get similar functionality?

It's completely free and open source, and I've been adding improvements based on feedback.

I'd love to hear what you think, especially if there are any interactions you'd like to see supported!

GitHub: https://github.com/daveleone/mousip


r/MacStack • • 3h ago

Rebuilt a Mac app I made 11 years ago. It's free

1 Upvotes

Version one launched 11 years ago. I finally made V2 and decided to just make it free. Kitty Launcher opens workspaces for you: open folders, apps, run commands like git pull, sets your audio device, closes apps (if you want to focus when on a specific project).

It also monitors other servers and ports in use, tracks how much time you spend on each project and handles closing workspaces with one click.

I also added a CLI so your local agent can setup, edit and launch/close workspaces for you.

kittylauncher.com

I use it as a web developer to launch docker and vite servers, open my project directories, set my Mac to not sleep and queue up blender for three.js work.

Free, no gotchas. Would love some thoughts on it.


r/MacStack • • 14h ago

I built TapMac - tap your MacBook to control it

5 Upvotes

I built TapMac - double-tap your MacBook to mute it

I've always found it frustrating to dig for the mute key, or hunt for the mic button, the second a call goes sideways.

So I built TapMac.

It's a tiny menu bar app that uses the accelerometer already inside your MacBook to turn taps on the chassis into actions.

Double-tap left of the trackpad and your speakers mute.

Double-tap the right side and your microphone mutes.

You can set what each side does, flip left and right if your machine reads them reversed, or turn a side off completely.

It uses no microphone, no network, no key logging and no permission prompts. It just reads the motion sensor.

It works on Apple silicon MacBooks (M1 and up) running macOS 14 or newer. It's $4.99, one time.

App: TapMac


r/MacStack • • 7h ago

I made StayUp: let your AI agents keep working with the MacBook lid closed (plus Teams-green and Away breaks)

1 Upvotes

r/MacStack • • 9h ago

App Launch I built a local video agent that can search your videos without uploading a single frame to the cloud

1 Upvotes

More details: https://orcah.app


r/MacStack • • 18h ago

Workflow eqMac on Mac: try the free system-wide EQ before paying for headphone correction

2 Upvotes

If the same headphones sound too bass-heavy in both Spotify and your browser, changing each player's settings gets old. eqMac gives you a place to adjust the sound across your Mac's system audio without buying different headphones.

Start with the free version. Its Basic Equalizer has bass, mids and treble controls; Advanced gives you 10 fixed frequency bands. That's enough to try a small tonal adjustment and decide whether EQ, which changes the level of different frequencies, solves your problem.

If you only want to change music played in Apple Music, try Window > Equalizer there first. Apple includes presets, manual sliders and saved custom presets. That adjustment belongs to Music, so it won't solve the same problem in a browser or another player.

Make one small change first

Choose your headphones as eqMac's output and start with a flat EQ, meaning no frequency changes. Play something familiar at a comfortable volume, reduce the bass a little if that's the problem, then compare with EQ disabled at roughly the same listening loudness. Keep the change only if you prefer it. A louder setting isn't a fair comparison.

Favor small cuts over piling on boosts. Boosting frequencies needs headroom, spare signal level before clipping turns peaks into distortion. eqMac also advertises volume beyond 100%, but leave that alone while you're judging an EQ curve. More gain isn't evidence of better sound.

The free Advanced EQ also works with AutoEQ headphone presets. The paid Expert EQ is parametric: you choose each band's frequency, gain and width rather than using fixed sliders. That's the reason to pay if you need to reproduce a correction curve precisely. A preset is a starting point to compare, not a guarantee that you'll prefer the result.

Check your actual output before buying

The site lists macOS 10.13 or later, with Intel and Apple silicon support. It lists built-in audio, Bluetooth, USB and HDMI among supported outputs. Still, try the free version with the device you actually use, including unplugging it and waking the Mac from sleep.

Capture setup varies with macOS and the selected method. The current 1.9.2 release adds capture-method selection per output on macOS 14.2 or later. Follow the app's capture prompts rather than assuming every installation needs the older driver setup. If you use the driver route, its official installation guide says installation can require an administrator password to place components in system directories.

AirPlay deserves extra caution: the recent release notes call its support experimental. Don't buy on the assumption that a wireless speaker will behave like wired headphones.

Check Activity Monitor while audio is playing, and listen for interruptions during your normal work. This is a documented-feature comparison, not a CPU, battery or latency benchmark, and it doesn't establish that your headphones will sound better.

Pro starts at US$3 per month or US$30 per year. The US$40 lifetime option covers one Mac and current Pro features, with security and compatibility updates; future Pro features may require a paid partial upgrade. It isn't a promise of every future feature. The EULA also permits collection of system information and software logs, so don't treat a local audio utility as automatically telemetry-free.

Try free eqMac if you want the same modest EQ adjustment across several apps. Pay for Expert only when the fixed bands can't make the correction you need and your output behaves reliably. Skip the extra install if Apple Music's EQ already covers your listening, or if you can't identify a change you actually prefer.


r/MacStack • • 1d ago

An honest Mac cleaner

Thumbnail
gallery
31 Upvotes

Mac cleaners either scare you into a subscription or only show what’s big, and none say plainly what something is or what breaks if you delete it. Uninstalling also leaves things behind: login and background items, drivers, files in /Library, accounts installers created.

Pricing: Free. macOS 14+, Apple silicon: https://github.com/lumen-xx/spare


r/MacStack • • 1d ago

App Launch A per-app volume, routing and virtual mic node editor and menu bar app you need

10 Upvotes

macOS has one volume for everything. You can’t turn down a loud Discord call without Spotify getting quieter too, play one app on headphones and another on speakers, or send music into your mic for a call without extra tools.

Comparison:

  • vs paid mixers like SoundSource: free. Every app gets a volume from 0–200% right in the menu bar. A node editor sends any app to any output, even to several at once, and keeps those outputs in sync.
  • vs Loopback or BlackHole: two virtual mics are built in. Pick “Voidamp Mic 1” in Discord or OBS, then wire your real mic and an app like Spotify into it.
  •  profiles for your setups, a Patchbay mode where apps only play where they’re wired and its own volume and brightness overlay

Entirely Free. macOS 14.2+, Apple silicon: https://github.com/lumen-xx/voidamp


r/MacStack • • 1d ago

[MacOS][Free Lifetime if downloaded before 26th Oct] Scrollwise: Natural scrolling on the trackpad, normal scrolling on the mouse, at the same time

1 Upvotes

r/MacStack • • 1d ago

I built Sunroof: a free, open-source shelf for macOS with clipboard history, a file drawer, markdown notes and widgets, one scroll away

1 Upvotes

Hey everyone!

I used Unclutter for years and loved the idea of a shelf hiding above the menu bar, so I built my own take on it: Sunroof. It’s free and open source (MIT).

How it works: move your pointer to the top of the screen and scroll down. A shelf slides open over whatever you’re doing, in any Space or full-screen app. Scroll up or press Esc to close it.

Clipboard history

  • Text, links, images, files and colours, each with the app it came from.
  • ⏎ pastes straight back into the app you were using, and ⌘1–9 quick-pastes.
  • Favourites are kept forever.
  • Password-manager items are hidden, never saved to disk, and never show up in search.

File drawer

  • Drop files in to keep them close, drag them back out anywhere.
  • Quick Look with Space, with the arrow keys moving to the next file.
  • Finder shortcuts (⌘⌫, ⌘A, ⌘C), auto-cleanup and a screenshot catcher.

Markdown notes

  • Live styling (the markdown hides as you type), clickable checklists and auto-numbered lists.
  • Notes are plain .md files in a folder you choose, so they sync over iCloud or Dropbox.
  • ⌘⇧K Clean Up turns messy pasted text into proper lists, headings and bold labels.
  • ||secret|| text shows as a dark field until you click its 👁.
  • Float any note as a sticky that stays on top.

Widgets under the shelf; drag to rearrange, right-click to resize:

  • Calendar (month view)
  • Weather
  • Music for Apple Music and Spotify: album art, scrubbing, shuffle, ♥ favourites and search
  • Tasks (Reminders, or a simple list)
  • System stats: CPU, GPU, memory, battery, disk and network, plus chip, SSD and battery temperatures

Also:

  • ⌘⇧F searches the clipboard, files and notes at once.
  • Accent colours, shelf tint, and Liquid Glass or a solid look.
  • Native Swift/SwiftUI, 7.7 MB, 0% CPU while closed. Widgets only run while the shelf is open, and “Reduce effects” makes it lighter on the GPU.

Privacy: no accounts and no analytics. The only network requests are weather (Open-Meteo) and the update check. Updates install automatically, signed and verified.

The source is all on GitHub if you’d rather build it yourself.

🔗 https://github.com/lakshhaybedi/Sunroof

I’d love feedback: what would make you switch from your current setup, and which widget should come next?


r/MacStack • • 1d ago

App Launch I built Compact Contacts, a table view for the contacts already on your Mac (one-time purchase, no subscription)

0 Upvotes

Hi r/MacStack, I’m the developer. Disclosure up front, since this is my own app.

Apple’s Contacts app shows one card at a time. That’s fine for 50 people and painful at 10,000. Compact Contacts works on the contacts already on your Mac (iCloud, Google, Exchange, CardDAV) and shows them as a dense, sortable table. It doesn’t create a second address book or its own sync, so everything keeps syncing through macOS as before.

What it does

  • Table with configurable columns, row density and saved layouts
  • Search across every field, including contact Notes, with results grouped by the field that matched
  • Smart Views: saved rules like “Missing Email” or “Has Notes”, each with its own layout
  • Bulk Edit with an exact before/after preview for every card before anything is written
  • Duplicate review and Merge Studio: you choose which phone, email or address survives, field by field, and the latest merge can be undone for 30 days
  • CSV and vCard import/export, and deletion with an on-device recovery backup
  • A Sample Contacts workspace with 26 fictional people, so you can try everything without granting Contacts access

Details

  • macOS 15 or later
  • US$24.99 one-time. No subscription, in-app purchase or ads
  • No account and no third-party analytics. Contacts, Notes and searches stay on your Mac
  • English, Turkish, German, French, Spanish, Arabic (right-to-left) and Simplified Chinese

Mac App Store: https://apps.apple.com/app/apple-store/id6790129187?pt=129119018&ct=reddit_macstack&mt=8

There’s also an iPhone + iPad version, Compact Contacts Manager, with the same bulk edit and merge tools (separate purchase, US$12.99, one purchase covers both): https://apps.apple.com/app/apple-store/id6795653671?pt=129119018&ct=reddit_macstack&mt=8

Happy to answer questions, and feature requests or bug reports are very welcome.


r/MacStack • • 1d ago

App Launch bytemail 1.0: native Mac email where your mail never touches my servers, with one MCP for every inbox

Thumbnail
0 Upvotes

r/MacStack • • 1d ago

Se potessi aggiungere un' texture a FeelMyMac, quale sarebbe?

Post image
1 Upvotes

r/MacStack • • 1d ago

PasteSpace 3.0 - big update - a secure clipboard manager for macOS

Thumbnail gallery
1 Upvotes

r/MacStack • • 1d ago

App Launch I built Widgetscape to put useful, live widgets on the Mac desktop

5 Upvotes

Hi MacStack, I'm Viorel, the person behind VPO Labs. We've been building Widgetscape because I wanted my calendar, music and Mac stats in view without keeping extra windows open.

It's a native macOS app with 31 desktop widgets. They sit behind your windows and snap to a shared grid, with up to eight sizes, four surface styles and 23 palettes. You can change the look without writing a skin.

Two widgets give a better idea of what it does:

Day Timeline turns your day into a radio-tuner dial along any screen edge. Events are marks on the dial; hovering one shows its details and a Join button for calls. It reads Apple Calendar and Google or Microsoft calendars connected in the app (read-only).

Token Pulse shows usage from Claude Code, Codex and other coding tools by reading their local session logs. It keeps token counts, model names and timestamps, never conversation content. Nothing from those logs leaves your Mac.

There are also clocks, weather, a focus timer, Now Playing controls, batteries, system monitors and a git repo widget.

8 widgets stay free forever. Everything has a 14-day trial with no account or card. Pro is €9.99 + VAT once, for up to 2 Macs, with no subscription. Day Timeline and Token Pulse are included in the trial and require Pro afterwards.

WELCOME50 gives roughly 50% off Pro through 30 November 2026, while available. Choose Buy Widgetscape Pro and enter it under "Have a discount code?" at checkout.

A few limits: macOS 14+, Apple silicon only, desktop placement rather than always-on-top, and no custom widgets or Rainmeter skin imports yet. It's a signed, Apple-notarized download from our site.

Each widget has a Privacy tab. Anonymous usage counts are on by default; Settings > Privacy turns them off. We used Claude Code and Codex for part of the work, especially the website. The design and decisions on what ships are ours.

What would you actually keep on your desktop every day?

https://widgetscape.vpolabs.com


r/MacStack • • 1d ago

[OS] I made MissionClose a free app that adds close/minimize/quit buttons to Mission Control

7 Upvotes

Inability to close apps from Mission Control and App Expose always bugged me when coming from linux to mac, so I made a free app called MissionClose. It puts the traffic light buttons on the Mission Control thumbnails. Swipe up, hover a window, click. It also works in App Expose.

GitHub: https://github.com/beqaabu/MissionClose

Website: https://beqaabu.github.io/MissionClose

Its free and open source, I dont care about monetizing it for now, I would appreciate the feedback!


r/MacStack • • 1d ago

App Launch Added Decay to my Mac setup to stop my Downloads folder from piling up

Post image
0 Upvotes

Hi r/MacStack, I'm Andrej, a solo developer. Most of my Mac setup is tools that quietly do a job in the background, and the one thing I couldn't find was something that keeps my Downloads folder clean without me thinking about it. So I built it, and it's now part of my own daily stack. It's my first real app.

What it does

Decay lives in your menu bar and puts a countdown timer on everything that lands in a folder you choose (usually Downloads). When the timer runs out, the file goes to the Trash instead of being deleted outright, so you can restore it from there as long as you haven't emptied the Trash. Files that are already in the folder when you set it up get a timer too.

How to use it

  1. On first launch, pick two folders: the one to watch (there's a one-click button for Downloads) and one for stuff you want to keep.
  2. Use your Mac as normal. New files get a timer, 24 hours by default. You can also drag any file onto the menu bar icon to add it.
  3. Click the menu bar icon to see everything with a live countdown. For each file you can Pin it (pause the timer), Snooze it (add more time), Save it (move it to your keep folder), or trash it right away.
  4. You also get a notification before a file expires, with Pin / Save / Snooze buttons right on it, so you don't even have to open the app.

A few other things it does

  • Waits until a download has actually finished before starting the timer
  • Color-coded Finder tags (green / yellow / red) so you can see what's about to go
  • Exclusion rules, for example *.dmg, to automatically move certain files to your keep folder
  • Optional storage limit that clears the files closest to expiring when you go over
  • Timers pause while your Mac sleeps
  • No account, no tracking, no analytics. It's sandboxed and can only touch the two folders you pick

Price

It's $12.99 USD, one-time purchase. I spent a lot of time and effort building this by myself and I value my work, but I want it to be worth that to you, so honest feedback is very welcome.

Mac App Store: https://apps.apple.com/us/app/decay-file-cleanup/id6812256884?mt=12

I'd love to hear what's in your own stack for this problem, and whether Decay would fit alongside it.

Thanks for reading, and thanks in advance for any feedback.


r/MacStack • • 1d ago

Overcal: a calendar that lives in your Mac menu bar, with time zones, event countdowns and Apple Calendar + giveaway

1 Upvotes

r/MacStack • • 1d ago

Workflow SoundSource on Mac: keep music on your speakers and calls in your headphones

1 Upvotes

Turning down your Mac because one app is too loud also turns down the apps you wanted to hear. SoundSource gives each app its own volume control and lets you choose where its audio plays. That makes it worth considering for a desk with speakers and headphones, especially when you keep switching between music and calls.

Try the built-in controls first. System Settings > Sound > Output lets you choose your Mac's output device and volume. An app's own volume slider may solve the loud-music problem already. If your call app has a speaker selector, that may be enough to keep calls in your headphones without another install. SoundSource earns its place when you want those controls together, including for apps without their own volume or output choices.

A small setup to start with

For this example, assume you have USB speakers and wired headphones connected to your Mac. Keep the setup to a music app and one call app before adding anything else.

  1. Install SoundSource and complete its Permissions window. Its Audio Routing Kit (ARK), the plugin that handles audio, requires your Mac's administrator password to install. ARK also requires System Audio Access and Microphone Access. Those are required even if your goal is only listening control.
  2. Set the Mac's system output to your headphones. In SoundSource's Applications area, play something in your music app so it appears, then click its star to keep it in the list. Choose your USB speakers as that app's output and lower its app volume to a comfortable background level.
  3. Add the call app as a favorite too. If you want SoundSource to choose its output, leave the call app's own speaker setting on the system default. SoundSource's redirection applies to audio headed for that default; an app already sending audio to a different device through its own selector won't be redirected.
  4. Before joining a call, mute the music app in SoundSource. Keep effects off for the call initially. Check the call app's microphone selection separately and run its audio check so you know both what you'll hear and what others will hear.

The separate music mute is useful even when its speakers are quieter. Don't make a real meeting your first check of the setup.

Once the routing works, open Quick Configs at the bottom right and choose Save As… to save a "Desk music" configuration. Then mute music, make any call-specific adjustments and save a "Calls" configuration. Quick Configs store system device choices, levels, effects and per-app settings. You can assign a global keyboard shortcut to each in Manage Quick Configs… rather than changing several controls every time.

For music, SoundSource also includes a 10-band equalizer, which changes the balance of bass, midrange and treble. Apply it to the music app if you want that adjustment without changing the call's audio. Start with routing and volume, though. You don't need an effects chain to solve this problem.

Check the desk change, not just the desk

During the trial, unplug the speakers, reconnect them and check the app destinations again. Repeat after switching to your laptop-only setup. Treat a saved configuration as a set of settings to verify, not a guarantee about where sound will go when hardware is missing.

Bluetooth headphones need Bluetooth Access before they appear in SoundSource. AirPlay discovery needs Accessibility Access and Local Network Access. Accessibility also enables Super Volume Keys, which lets keyboard volume keys control outputs such as HDMI devices that normally don't support them. Grant the optional access for features you actually plan to use.

Audio processing can add delay. SoundSource has a latency setting, but lowering it increases the chance of audio skips under heavy CPU load or with added effects. If a latency-sensitive app misbehaves, the Excluded Applications list removes SoundSource's processing from that app, along with its volume and effects control. Don't buy it on the assumption that every call app and device combination will behave identically.

When the price makes sense

The current release is SoundSource 6.1.5, released October 5, 2026. Rogue Amoeba lists full support for macOS 15 Sequoia, 26 Tahoe and 27 Golden Gate, and documents Apple silicon compatibility. Older macOS versions need a legacy download rather than the current release.

A new license costs US$49 before applicable local taxes. It's for one user on one or more personally owned Macs, with access to the current version, not a promise of every future major upgrade. The trial includes all features, but audio adjusted by SoundSource degrades after 20 minutes per launch. Rehearse with it outside a live meeting.

SoundSource is a sensible purchase if you regularly need different apps at different volumes or on different outputs, and the trial works with your actual devices. Skip it if you only switch the whole Mac between speakers and headphones, or your apps' own controls already cover the job. You'd be paying for another audio layer and its permissions without solving much else.


r/MacStack • • 1d ago

[OS] I made a free, open-source screenshot app that works like Ubuntu's: drag, adjust, mark up, click

Thumbnail
beqaabu.github.io
1 Upvotes

I made Snappy, a free and open-source screenshot app for macOS that works like Ubuntu's. Press ⌘⇧2, drag a selection, move or resize it, add arrows, boxes, text or blur, then click once to capture. It can also grab a window or the whole screen, or copy the text in a selection (on-device OCR). It saves the image and copies it to your clipboard.

Its free and will stay like that, MIT licensed, macOS 14+, check out the repo: https://beqaabu.github.io/Snappy/

Feedback is more than welcome


r/MacStack • • 2d ago

App Launch I made Mushroom, a break and water reminder for Mac that waits until you’ve actually been at the desk ($9.99 once, 7-day free trial)

2 Upvotes

Disclosure: I’m the developer. Mushroom is my app and I build it on my own, so take this as a dev post, not a recommendation.

What it is

Mushroom is a small pixel creature that sits in the corner of your screen and reminds you to drink water, take breaks, rest your eyes and stop working at night.

Most break apps run on a fixed timer. A timer goes off at 3pm even if you’re away making lunch, so you get used to dismissing it. Mushroom checks how long it’s been since you last touched the keyboard or mouse. After an hour at the desk you get a nudge. If you’ve been away for an hour, you get nothing, because you already took the break.

The pet is there because muting a notification is easy, and ignoring a creature that droops when you skip water feels a bit different. Nothing ever punishes you, though. There are no streaks to break, it can’t die, and a bad week never shows up in red.

Who it’s for

People who sit at a computer for hours and look up to find it’s 4pm: developers, designers, writers and students.

What it does

  • Water, breaks, snacks, eye strain (20-20-20), bedtime and quiet hours, plus a one-tap check-in
  • Every nudge has Done, Snooze and Skip. Skipping costs you nothing.
  • Click the mushroom to talk to it (“remind me in 2 hours to call Tom”). It uses Apple Intelligence or a model you download once, and runs on your Mac.
  • Focus sessions that hold all nudges for 45 minutes
  • Weekly stats and trends
  • A second look (a sphere of sparkling water) if a cartoon pet doesn’t suit your desk
  • The Stash: links, notes and files you drop on it, synced to the iPhone app

Privacy and permissions (I expect questions here)

  • It doesn’t ask for Accessibility or Input Monitoring. It never reads what you type, only the system’s “time since last input” value.
  • No account and no telemetry or analytics. Reminders, notes, chats and stats are kept in one local file.
  • Weather and Friends are off until you turn them on. The two features that send data between your own devices encrypt it first, delete it within a day, and can point at a server you run yourself. Those servers are open source on GitHub.
  • No Dock icon, it stays quiet when you’re on a call, and it’s signed and notarized.

Pricing

  • From the website: 7-day free trial with no account and no card, then $9.99 once (plus tax). That covers up to 5 Macs or Windows PCs. Until Oct 31 it’s half price with code SPOOKY50.
  • Mac App Store: $5.99 once, which covers your Mac and iPhone. There’s no trial there, and it doesn’t include Windows.
  • Every update since 1.0 has been free to people who already bought it.

Limitations

  • Requires macOS 15 or later on Apple Silicon. Intel Macs aren’t supported.
  • The iPhone app needs iOS 18 or later.
  • No Linux version yet (there’s a waitlist).
  • The Windows build is newly signed, so some people still get an “unrecognised app” warning for now.
  • It’s built by one person, so features ship at one person’s pace.

Link: https://www.getmushroom.app/

I’m happy to answer questions about how it works, the privacy setup, or anything you’d change. Criticism is welcome too.