Show HN: DevUtils.app – Developer Utilities for macOS
This is a project I've been working on since the start of Covid-19. I built an app so that I don't have to put data into online tools like JWT debugger, JSON formatter, URL decoder, etc...
The app works entirely offline and is open-source. I'm selling the pre-built version of the app to earn some revenue for my time. If you want to try the app but can't afford the price or don't have XCode to build the app, drop me an email (my profile), I'll be happy to provide you a free build.
I would love to hear all the feedback/suggestions. Thanks!
107 comments
[ 2.4 ms ] story [ 171 ms ] threadYour profile doesn't contain have an email.
And thanks for the feedback! I'll consider ways to let people try the app first.
The other features are not currently as useful, but I’m happy to support them as well.
I hate to say it, but doing this on the App Store with IAP to cover the upgrade from the demo version to the full version would be a viable way to distribute your app and handle the back-end payments.
I'm interesting to know because I built this app with the thought that it would eliminate the time you paste the strings to online websites (to validate/format/convert it), and usually people don't paste gigabyte strings file... So maybe this is something from your workflow that I don't know?
Thanks!
I sometimes use jq/ya ... The sqlite json extension (written in C) .... It's great when "input size" never matters in ones' tools and the tools can run in any environment (sqlite is Everywhere)...
So, alternative JSON parsing/validation programs are most welcome.
This is my first time selling apps, a lot of things I still need to learn.
Especially with Apple's eco-system. Most potential buyers would have an Apple account with valid payment. Reducing filling credit card.
The other benefits on both ends is app updates and the ability to have the app accessible for you even if the app website drops or anything.
Having said that, that's one opinion and I'm pretty sure that other people would be happy from your current workflow that cuts less on your revenue.
> If it's on App Store and also open-source, would you still buy it?
There are plenty of such apps. The first one comes into my head is Cyberduck. https://cyberduck.io/ (Though they seemed to reduce the number of mentions about it being open sourced)
One wonder though, Since your app is very scoped. It can easily be universal and benefit from the entire apple eco system.
I didn't know it's possible to sell the app from App Store and directly from website at the same time. I always thought Apple wouldn't approve that, but as shown here Cyberduck is doing it.
I may also do it in the future too.
Much less hassle to buy and keep updated than to have to track the github repo and build my own CI/CD workflow around whenever you decide to release a new version, etc....
And also less hassle than just downloading whatever your latest binary is, if you’ve compiled it for me. Thanks to the way notarization works now, that’s a pain that I am happy to outsource to someone else for a reasonable fee.
Sorry for digging this up. Just in case you are still following this thread, I just want to let you know that the app is now available on the App Store: https://apps.apple.com/us/app/id1533756032
(this doesn't mean I'm asking your to buy, just FYI, cheers!)
But then I suppose I'm not your target user anyway, since I don't want a GUI for this.
It includes a subcommand for YAML, JSON, and XML validation:
https://github.com/skx/sysbox
I've not considered a pretty-printer, but it isn't a bad idea to add such a thing.
[1] https://json.pizza/
Moreover — and this may just be me living out here in the boondocks with my chickens and my cows — I have literally never encountered a JSON or YAML file that was 1GB or larger.
Would you happen to have an example or a link to either one of these things?
https://twitter.com/Rapchik/status/1310843502578880513
1. UUID generator (v1/v4, etc...)
2. Text diff checker (two sets of text, show the differences).
3. JSON diff. Show differences between two large-ish json object.
4. CSV to JSON converter.
I would definitely appreciate apps for the other usecases.
between this and Nova.app, it feels like we are finally starting to crawl our way out of this miasma of non-native apps. Gonna buy right after my morning coffee!
I find Meld to be one of the best diff tools out there, with the 3 way, random text, file or complete folder diffing.
`brew cask install meld`
There's plenty of room for utilities like this. I purchased Boop, and it's not bad, but I'm not a fan of the UX. DevUtils looks interesting to me and I'll give it a shot.
Even if there was 100% feature parity between these apps, the different approach to UX alone is enough to justify its existence, an existence which doesn't really need to be justified to begin with.
Honest feedback, no ill will.
I certainly agree that "how is this different" is not dismissive by itself. But the whole of the comment came across as very dismissive.
It's possible that I overreacted, but that's how I interpreted it.
A much better way to phrase this question would be something like:
> On the surface this looks like it solves similar problems to Boop, an app I use to do similar things. Have you heard of Boop? If so, how do you think this compares?
Having to guess command names however isn't great in Boop.
As I can see, DevUtils provide convenience features like global hotkey, smart detect, context menu, etc... this is something I have spent a lot of time on, and it worked well for me at least :)
I did research on online tools and open-source projects like CyberChef [1], but none of them were providing the convenience I was looking for.
[1] https://github.com/gchq/CyberChef
I tried to use the Chrome Dev Tools as much as I can (e.g. btoa/atob function to work with base64), but it takes too many unnecessary steps.
Now I just use the app and add any missing tools I found in my workflow.
[1] https://gchq.github.io/CyberChef
[2] https://github.com/gchq/CyberChef
I'll have to put more thoughts into this, a few people suggested this already.
Thanks for the feedback!
0 - https://gchq.github.io/CyberChef/
For example when I have an unformatted JSON string in my clipboard, I just need to press my global hotkey and that's all it needed to see the formatted string. I can also use the context menu (using System Service [1]) if I don't want to modify my current clipboard.
There wasn't any app that provide this level of convenience. Beside, I love native macOS apps :)
[1] https://developer.apple.com/design/human-interface-guideline...
1. https://developer.apple.com/design/human-interface-guideline...
A new item "Inspect with DevUtils.app" will be added after you install the app.
- Unix time converter: (unixtime) => new Date(unixtime)
- Unix time converter reverse: (date) => ~~(date.getTime() / 1000)
- JSON prettifier: (jsonString) => JSON.stringify(JSON.parse(jsonString), null, 2)
- JWT debugger: doesn't exist in browsers i suppose
- Base64 encode: btoa
- Base64 decode: atob
- Query string parser: (queryString) => new Map(new URLSearchParams(queryString).entries())
- HTML entity encode/decode: idk why u need this, should not be escaping html manually in webpages just use .innerText
- Backslash escape: not sure what specifically this is doing in the app but sounds like it's easy enough to do it with a regex
I feel like if u want a UI u should make one that can save scripts and turn them into forms so that users can add arbitrary functions themselves without having to wait for the application to add more functionality
Custom scripts is in my roadmap too, I just need to figure out the UI, add some "smartness" into it, workout the auto-detect priority and other small details. Hopefully I can push out an update with that soon!
My suggestion is a TOML validator, and conversion from TOML to JSON and back. I'd actually use that a lot. Others have already mentioned YAML, and I'd second that, but it's a real beast, TOML would be an easier bite to chew.
Just to save others a bit of googling time: I tried to build the project using Xcode 14 and ran into a problem with the Highlightr framework being compiled in Swift 5.1
error message: "Module compiled with Swift 5.1 cannot be imported by the Swift 5.3 compiler: /Users/TheAdmin/Downloads/DevUtils-app-master/Carthage/Build/Mac/Highlightr.framework/Modules/Highlightr.swiftmodule/x86_64-apple-macos.swiftmodule"
The fix was to set the flag "Build libraries for distribution" in DevUtils>build Settings>build options to yes. If you've already tried building and failed, you may have to clean build folder, go to the derived data folder (~/Library/Developer/Xcode/DerivedData), delete the derived data for the project, and restart xcode before you build again
Kudos for creating a useful tool mate.
Seems like a lot of these can be replaced by a line of python (or javascript or gnu util).
- backslash escapes: `print(text)`
- b64 decode: `base64.b64decode('text')`
- html escape: `html.escape('<h1>hello</h1>')`
...
And you have that in terminal for piping, output redirection and all of that unix goodness. GUI for this seems like a very peculiar option here, especially when it integrates with the rest of the environment only through clipboard.
Other than that big fan of the business model though you don't have a license specified in your github repo.
In Python 2.7, encoding to Base64 in a pipe used to be a mouthful:
Now it's even worse: As an aside, the base64 module is a good example of how rough the Python standard library is, and it seems like no one is being a gatekeeper of new changes. Almost no one wants base64.decode, but base64.b64decode. Or maybe base64.standard_b64encode? Or base64.encodebytes? Not to mention the majority of functions in the module are _not_ related to Base64 but other encodings.I don't want to open up Terminal, remember some (Python) code to JSON format some string that I've just copy/pasted and hope that I've remembered it correctly and it works.
Oh! But I don't remember the code! So I have to look it up, probably on StackOverflow b/c I'm lazy (not really, I just want to format the text I've just copied to clipboard not remember the correct lib that python uses for formatting), but how do I do that? I've already copied the text I want to format to clipboard and if I copy the code to format the code that I have in my clipboard to the clipboard it will erase the text that I want to format! xD
So, yeah, little Util GUI Apps like these are useful.
This looks great. As another commenter mentioned, even if you are the above things, not having to remember pieces of obscure domain knowledge to complete tasks is useful (say, you're not a Python or JS dev).
Why write a line of Python when I can Ctrl+C/Ctrl+V (especially if the task originates from outside of the terminal)?
Don’t take this wrong way, I’m trying to phrase this as nice as I can, because I’m truly super curious where people who ask these questions are coming from, but isn’t that obvious? Are you not aware how much more memorization, typing, and room for error your solutions have? Or do you just not value those difference? And if it’s the last one, why isn’t it obvious that this is simply for people who do value those differences more? (Again, sorry if this sounds rude, but I see comments like this a lot, and I want to understand the psychology behind them.)
You create a bin script or an alias the first time you do it. i.e. typing `escape-html "<h1>hello</h1>"` in your terminal is infinitely more efficient and easier than firing up some app and navigating some menus. This also supports of all of unix actions like piping and output redirection.
I honestly quite shocked how many developers on MacOs are not familiar with the terminal and are weirdly afraid of it!
Also... sending HTML as a parameter in your shell? Have you actually tried this? That's going to be a nightmare to escape for anything even a little bit complicated.
[1]: https://github.com/robenkleene/Dotfiles/blob/master/zsh/alia...
[2]: https://github.com/robenkleene/Dotfiles/blob/master/zsh/abbr...
Looks great though - can’t wait to try it out.
I've also built a "tool of tools" a few years ago which I (and only I) use regularly. It's a command line tool and may need some more love these days (it's very slow due to a slow dependency injection framework). Maybe I will pick that project up, seeing your project made me inspired to pick my own project up again :)
On a tooling note, how much work would it be to add a hex editor? It's also one of those "need to do infrequently, always a hassle" that fits quite nicely in a tool belt utility like this.
There's also the old HexEdit, but I'm not sure that it works anymore. http://hexedit.sf.net
I haven't worked with hex editors much. From what I see a hex editor needs to have quite a lot of features to make it useful. Do you have any specific features of a hex editor that you use a lot? I'll see if it's make sense/easy to add to the app. Thanks!