Hacker News new | past | comments | ask | show | jobs | submit login
Show HN: My first Mac app, Foreman, free and on Github. Would love feedback (flyingmachinestudios.com)
153 points by nonrecursive on Sept 7, 2012 | hide | past | web | favorite | 86 comments

EDIT: Just to be clear, because I missed it, the app doesn't HIDE other applications it aggressively CLOSES other apps. Including some background processes, system preferences etc. Luckily it doesn't shutdown dropbox and backblaze. If you want that functionality (and can live with bug below) this might be useful to you but I'm no longer interested.

So, the app crashed while I was configuring it. It shutdown ever app I had added to Foreman, unsafely, and a few others I hadn't yet added (like Terminal! WTF?).

DO NOT USE. It's a nice concept but not ready for prime time.

I'm sorry that happened to you, Ensorceled, and I hope you didn't lose any work.

The way it's supposed to work is, if you click on a horizontal row then it opens all the apps in that row (if they're not already open) and closes any apps that aren't in that row. So, for example, Terminal was closed because it sounds like it wasn't in your app group.

About "unsafely" - it should behave just as if you had hit command+q in the app. So if you have unsaved documents, the application should prompt you to save them.

Sorry again for the frustration it caused you!

The terminal close didn't work this way, normally it won't quit if there are processes in the windows. With Foreman it just closed up.

I was kind of surprised at the behaviour, mostly because of the superlatives ... fast app switching doesn't imply opening and closing to me since some apps are VERY slow to start up (excel, numbers, xcode, eclipse, )

You should make sure you are very clear about it CLOSING apps.

Also, the first time you should not close apps but instead ask the user if closing all the non-listed apps is ok. So the first time they run it the are not surprised by everything going away. Especially losing all my Chrome tabs :-(

You need a "stop list" so that apps in the list are not shutdown.

This is all very helpful feedback, and I really appreciate it. I've put your suggestions in my todo list. Thank you!

Might I suggest different utilizing desktop management? A mode where application aren't closed as aggressively just opened in a fresh new desktop? This allows the user to abstract away the other programs and focus on those in the new desktop window.

Other suggestions include - hotkeys - spotlight / alfred integration - Adding macros to launch when click a new set of apps

For the record, I totally got what is supposed to happen. I wonder if you should have a list of apps that can be configured to be ignored. For instance, I always have emacs open and would never want it closed (even for gaming configurations). I would rather say that once than for every configuration I have.

This is the next item on my todo list :)

One thing that might help is to have an option for Foreman to only manage the apps that are in at least one app group.

In other words, if I don't put terminal into an app group, it doesn't get closed, etc.

I'd be nice if you could just _hide_ apps not in the group, not kill them... But I guess that would mean they still show up in command-tab.

It sounds like you're forcefully killing processes - can you at least kill them more gracefully? Basically "kill" vs "kill -9".

I wonder if there is a way to programmatically hide apps from the cmd-tab switcher? I know some apps (e.g. apps that have a system-wide menu) let you hide its open status from the dock (which in turn hides it from the app switcher); Can you show app icons in the dock and not in the cmd-tab switcher? I'd like to be able to access certain apps through the dock but don't want them cluttering up my precious cmd-tab.

Here's the method being called: https://developer.apple.com/library/mac/#documentation/AppKi...

From the docs, "attempts to quit the receiver normally." I'm not sure why ensorcled's terminal was closed while a process was running, but I get prompted to confirm closing terminal when a process is running.

Nah, some of it's my fault for not reading closer. I didn't lose data, only time.

If you read the website it does say it closes the apps. An easy solution to your problem would be to add a "whitelist" where you can specify apps that Foreman will NEVER close.

I would like to see people be a bit more supportive when someone announces their first app and asks for feedback.

I understand you have provided feedback, but perhaps put yourself in the shoes of the developer and consider the way you put the message across.

It would be great if every piece of software was perfect and awesome on first release, but really iterative development is what gets us there. I hope the developer and also other potential users aren't discouraged by your "DO NOT USE".

I've been in those shoes many times. I was actually not addressing the developer, I was addressing possible users.

After all, the app did crash about 30 seconds after I started it up and closed EVERY app I was running at the time even though I hadn't started actually using it yet. I could have lost data and I certainly did lose time.

People need to know that. Imagine if this happened to numerous people but nobody mentioned it because they were all being supportive?

Can you post some more information for the author to address / fix this? OS version? Hardware?

10.7.4, MacBook Pro, 2.2 Intel Core i7

    Sep  7 10:29:14 wwd2-robert Foreman[3030]: 15.000000Sep  7 10:29:20 wwd2-robert Foreman[3030]: Exception detected while handling key input.
    Sep  7 10:29:20 wwd2-robert Foreman[3030]: -[__NSCFDictionary setObject:forKey:]: mutating method sent to immutable object
    Sep  7 10:29:20 wwd2-robert Foreman[3030]: (
        0   CoreFoundation                      0x00007fff8dd9df56 __exceptionPreprocess + 198 
        1   libobjc.A.dylib                     0x00007fff94046d5e objc_exception_throw + 43
        2   CoreFoundation                      0x00007fff8dd9dd8a +[NSException raise:format:arguments:] + 106
        3   CoreFoundation                      0x00007fff8dd9dd14 +[NSException raise:format:] + 116
        4   CoreFoundation                      0x00007fff8dd5abd0 -[__NSCFDictionary setObject:forKey:] + 96 
        5   Foreman                             0x0000000100002bf2 -[AppGroupController saveName] + 103
        6   Foreman                             0x0000000100002c5f -[AppGroupController control:textShouldEndEditing:] + 17
        7   AppKit                              0x00007fff8e83d5ff -[NSTextField textShouldEndEditing:] + 236
        8   AppKit                              0x00007fff8e89f0ca -[NSTextView(NSSharing) resignFirstResponder] + 426
        9   AppKit                              0x00007fff8e38a429 -[NSWindow makeFirstResponder:] + 429
        10  Foreman                             0x0000000100002cb2 -[AppGroupController control:textView:doCommandBySelector:] + 76
        11  AppKit                              0x00007fff8e83c7ac -[NSTextField textView:doCommandBySelector:] + 105
        12  AppKit                              0x00007fff8e86db48 -[NSTextView doCommandBySelector:] + 160
        13  AppKit                              0x00007fff8e6c6c93 -[NSKeyBindingManager(NSKeyBindingManager_MultiClients) interpretEventAsCommand:forClient:] + 1799
        14  AppKit                              0x00007fff8ea1b6ca -[NSTextInputContext handleEvent:] + 747 
        15  AppKit                              0x00007fff8e8e5298 -[NSView interpretKeyEvents:] + 248        16  AppKit                              0x00007fff8e85dec5 -[NSTextView keyDown:] + 691
        17  AppKit                              0x00007fff8e33b7ac -[NSWindow sendEvent:] + 7430
        18  AppKit                              0x00007fff8e2d4a55 -[NSApplication sendEvent:] + 5593
        19  AppKit                              0x00007fff8e26b0c6 -[NSApplication run] + 555 
        20  AppKit                              0x00007fff8e4e7244 NSApplicationMain + 867
        21  Foreman                             0x0000000100000fe0 start + 52
The syslog also contains a list of all the apps that are running and the list of apps to close, the apps to close include things I didn't add to Foreman and other things like /Applications/Xcode.app/Contents/Library/LoginItems/backgroundinstruments.app which I'm not even running. When it catches an exception it seems to shutdown everything in the "to close" list.

Thank you, this is useful.

Another suggestion, don't close any apps when exceptions are raised :-)

Man, yeah, that shouldn't happen :)

I've fixed the bug and updated the download. It would occur when you created a new app group and then changed the app group name. Thanks again for your detailed feedback, it helped me fix this bug.

In the interest of fairness I've tried a couple of times.

On Lion, this is crashing consistently and automatically closing all the apps added to Foreman and some random apps besides.

Is this a troll or trojan? Why is it closing other random apps that it shouldn't even know about?

I think you misunderstand how the app works. It closes all apps except those that you have defined in the app group.

You're right, I missed that it CLOSES apps, not hides. And it closes things very aggressively, including system apps.

Definitely not the app for me.

I like the idea and congratulations on your first app. My only criticism about the landing page are some of the superlatives put me off slightly (e.g. Foreman Switches Your Apps Quickly _and It's Amazing_) -- I wonder if other people got the same feeling?

Perhaps I don't have a sense of humour when I'm at work.

Yeah, that was all meant to be over-the-top. Because... well it's a very simple little app. Like, "This is why Steve Jobs invented computers" doesn't even make sense. Maybe I should make it more ridiculous? Or maybe I should just get to the point, ha. I'd love to know if other people had the same impression.

And thank you for your congratulations :)

Yes...that "This is why Steve Jobs invented computers" made me chuckle.

I would leave it for now - but brace for blow back, because some people (especially here) are gonna hate it.

But, conversely, others are going to love it.

I don't mind the self-deprecating humor, but it may put off others. Keeping the landing page professional and straight to the point may be to your benefit if you plan on selling your product in the future. If you plan on keeping it free and open sourced, it probably doesn't matter and may even help with donations.

Also, just because an idea is simple doesn't mean it's not a great idea.

I could tell you were being tongue-in-cheek so it didn't put me off. The Steve Jobs part actually got a chuckle out of me.

Don't let a few bores discourage you; the open source world needs more tastefully done over-the-top humor. Most of the times I've seen someone try to be funny in a landing page or a pull request, it's either obnoxious, cringeworthy, or lame. This page made me smile enough to read the whole thing, and I don't even own a Mac.

Thanks, ANTSANTS! It makes me happy to see that you and others appreciated the humor.

I think your copy should be as crazy as you want it to be. That's part of the fun of give-away side projects: no one to approve your copy or coding style or whatever- it's a break from work-work (at least to me).

A word of caution however, I made an announce page for a toy project that was so silly no one even looked at it, even in a highly targeted demographic of users (reddit users; specifically those who post facebook screenshots) http://sequoia.github.com/afonigizer/ So no one looked at it, no one uses it etc.. But on the other hand, "whatever!" I had fun making the tool and the silly announce page and as the Odonians says: "the means are the end." :)

I liked the text – I agree, it's a simple idea and there isn't that much too say. On the other hand, I read the whole page – a first I think for a linked app on here.

Cool. If you are going to head towards a CLI version, consider a name change though. Foreman is also the name of a very popular CLI based web development tool (https://github.com/ddollar/foreman)

Seconded - it's also the name of an automation framework that uses Puppet (http://theforeman.org/).

I got really excited for a minute upon seeing the headline thinking this was a Mac native interface or somesuch.

Yeah, the cli tool will probably be called "macforeman"

Might want to work on your website's copy. "What a pain in the ass!" and "Holy smokes!!!!!" doesn't instill much confidence, to be frank.

This comment is part of an annoying trend on HN lately, of people looking at announcements for new companies or products and then picking nits with the copy, the layout, the formatting, the SSL configuration, and screenshots, and what- have- you to talk about the "lack of confidence" they have in the announcement.

What makes this such a great example of that trend and how silly it is is that you are here discussing the confidence you have... in a free app switcher.

It doesn't happen often, but I disagree with you on this, Thomas.

OP said, "Would love feedback" and king_magic gave it to him.

When someone posts their app here for feedback, we should be ruthless. Nothing, not even the smallest nit, should be safe from scrutiny. Let OP decide how important that feedback is to him, but we should not be holding back how we really feel.

This reminds me of a phenomenon from my fraternity days, when we voted on prospective members. It worked like this: 1. Positive comments. 2. Negative comments. 3. Secret vote. Prospects were often blackballed even though there were no negative comments, and people bitched about that. So what happened as soon as someone made a negative comment? 1. Everyone jumped all over him. 2. Someone would inevitably say, "That's why there are never any negative comments."

If someone asks for feedback, we should fire away. Better they hear it from us than their prospects out there in the real world.

This applies to all apps, even free ones. Remember, it's not "Practice makes perfect," but "Perfect practice makes perfect". king_magic may have done OP a much bigger favor than any of us can see right now.

I definitely appreciate the honest feedback provided, even if I don't act on it. Plain, honest feedback of your own experience is very valuable.

I actually disagree at this point. Maybe when he has more traction and can be considered a larger and more well known app he can update it to sound more professional. But at the moment his copy makes it sound like this is an app he created because he wanted it and thought it was cool. It's like he's talking directly to the reader in a VERY casual way. Maybe too casual for long-term, but at the moment, I think it works.

I agree. The copy comes off as authentic and in a way is refreshing to see. It's just a dude who made an app and is having some fun with it. Good on him.

It's a pet project that he's giving away for free... I say let him have his fun. Do you think the aim is to inspire confidence in the user (or do you think it should be)? Remeber: he's not asking anyone to open their wallets; frankly I think fewer guarantees are better (see the "no guarantee this software will do anything" disclaimers on many FOSS projects). If people want more sober language and "professionalism," let them go pay for it- might be better that they look elsewhere. :)

Sort of disagree here. I was kind of cringing at the verbiage myself, but at the same time it was so frenetic and different from the dry, 'value-added' language that you see other sites barfing up, that I was kind of smiling at the same time.

Then you realize it's just a useful little niche tool, and he's giving it away for free.

After checking it out, I asked myself "Do I want to download this app more than if it was presented to me in a more dry, professional, predicable way?"

Yeah, actually.

I especially love how he concludes by broadcasting how the app is not perfect, while giving a little dev road map.

Well done imho.

I definitely agree that the copy is a bit too casual, and not only because of the vocabulary, but also because of the punctuation just like in "Holy smokes!!!!!". It is actually "incorrect" to use multiple question marks and/or exclamation points. It's like misspelling a word. I would recommend removing the extraneous punctuation and maybe change a tiny bit of wording ("pain in the ass" is a really ugly expression).

On the good side:

- GREAT idea

- Simple, clear and easy design

Keep on the good work!

It definitely is polarizing, but I can see people liking it. At first it kinda jarred me too...but the more I read it, it actually grew on me pretty quickly.

I think it's a great idea! It definitely has issues, but keep at it because it's a great start. Here's another feature idea: when I'm using xcode, i don't want other distraction to come in; so maybe find a way to make it harder for me to open browsers and other distraction (i see you, hn & reddit).

"when I'm using xcode, i don't want other distraction to come in; so maybe find a way to make it harder for me to open browsers and other distraction"

How is that related to his application? Your idea would probably make more sense as a separate application.

I agree with rodly that this feels like a different app. If someone does make it, I hope s/he calls it "No Touching!" after the recurring joke in Arrested Development, where every time a family member tries to touch imprisoned George Bluth, Senior, a prison guard yells "No Touching!"

I think you should spend a paragraph giving a more clear explanation about what it does. The superlatives should be separate from a clear explanation.

I tried using it on OSX 10.8.1 but I can't seem to get it to work. It doesn't let me drop anything into the box where it says "Drag Apps Here To Create New Group"? It just does the typical "delete from dock" poof animation.

Thank you for the feedback - this is exactly the kind of thing I'm looking for. You have to drag the icons from finder, not from the dock. Does that work?

Yeah, that worked! Could you see if you could get it to work with dragging from the dock? Also, when you switch groups, I didn't realize it "exits" all of your other apps. It may be a good idea to just hide the other apps. Thoughts?

I think dragging from the dock always just removes the apps from the dock. At least that's the default behavior, and I have not found a way around it.


Lots of people are also suggesting hiding the other apps. I might try to implement this as an option, but what I'm going for is de-cluttering the command-tab app switcher, and I don't think hiding the apps will achieve that. However, this feedback is inspiring me to see if it's possible to hack the task list, or whatever it's called.

I really like this app. My current way of doing this is keeping everything inside Launchpad folders and opening them individually. Foreman seems to solve this daily issue.

My only real suggestion is that you change the text on the right side:

  Click on an app group and Foreman closes all apps not in that group and opens the apps in the group.
To something simpler, like:

  One click to Launch all Grouped Apps & Close everything else!

Thanks! I'm totally going to steal your suggestion. I was trying to come up with something simpler but couldn't, so thanks again.

Another way to save app-switching sanity: Get 9 or 10 work spaces. Set up command+number keyboard shortcuts to switch to that number. Use a single app on every workspace. Scales well to 10 or so apps open simultaneously.

Basically, I configured OSX to imitate XMonad to some extent. It's not as good, but it works and is a lot better than using the mouse or command-tab.

I did the same thing with KDE and have been very productive with it.

Looks like fun, and I'll have a play in a while.

A couple of things from the top of my head; Alfred integration would be cool, currently I keep nothing in my dock (other than finder and trash) and launch everything via Alfred, being able to launch a group by name in Alfred might be cool.

On switching groups, when it's choosing what to close, does it only close app's that are explicitly listed in other groups? How does it cope with tray apps like dropbox? When I (infrequently) fire up Steam/games I tend to manually kill off a few of the background servicey apps like dropbox I'd otherwise leave running all day.

It will close any open app not listed in the app group that you just clicked on. So, for example, if I don't have Excel in any of my app groups and I click on an app group that has Emacs and Terminal, then Excel will be closed.

It only closes apps that appear in the dock. It won't close dropbox or alfred or any background processes.

edit: And I also want Alfred integration :) I was thinking it could create .foreman files which you could then open with Alfred. Foreman would then handle it the way it handles clicking on an app group now.

Ah that makes sense, and it's probably the way the majority of people using it would want it to happen.

I'm not sure how widely used this would be, but would it be possible to have it launch bash scripts as well as apps? That way I could manually deal with anything 'special'. (just tried it before I asked and it didn't seem to let me drag them into a group)

It does close background processes, not all or even most of them but quite a few.

Very cool, looking forward to trying it out.

I would start versioning your releases—even if you start at something like 0.1.0. Then add a changelog to the site and drop tags in git corresponding to each release.

Wow, great idea!

I haven't tried the app yet, but if it immediately shuts off other applications when switching to a group, I think that needs to change, or at least provide a setting to just keep all the apps running but hide them from the tab switching menu some how (i know it could be a memory killer, but for my own personal use, which usually doesn't require a lot of apps running, i think it would be perfect).

Other than that, it's a great little app, put it on the AppStore for some cash :) (and add a screencast)

Thanks! I wish I could add it to the AppStore but unfortunately I can't sandbox it, so it would never get accepted.

One nice thing about Mountain Lion (not sure if it's true for Lion) is that if you quit an app it's usually kept running anyway, so when you reopen it it should start quickly.

The concept is really awesome and I'm excited about what the app could turn into. My suggestions would be to fix the force closing issues, and to turn this into a taskbar style app which stays opened all the time, instead of having to open/close every time you want to switch to a different environment. Also, a more polished ui/ux would be apreciated, I don't like the way you add apps to the group. But for starters, good freaking job.

Love the idea. Congrats on launching.

I've tried a number of apps to manage OSX's clunky alt+tab, but none have worked out long term.

The only thing that keeps me from trying Foreman is the "closing" of other apps. Like many other users here, just because I want apps out of the way, doesn't mean I want them closed. Is there no way to filter them from the task list instead?

You do make it clear on the site that Foreman closes apps, but I did come back to HN to confirm via the comments.

Thank you :)

As far as I know, any app that's active on the dock will show up in the task list. You might want to try out Witch - I'm not 100% sure that it does what you want, but it might. Good luck!

I've been looking for a way to solve that exact problem for a long time. I'm not 100% sure this is going to improve my current workflow though. Will try...

Eventually I'm going to release a command line utility that does the same thing. You'll do something like define a .foreman file with

design "Photoshop CS5" "Google Chrome"

and then do "macforeman design" and it will act just like the gui app.

I've always wanted to write a Ruby app launcher, like QuickSilver but the language the end user uses is Ruby. So you could define sets of apps like web_dev = [:macvim, :chrome, :iterm], and then web_dev.launch to launch them.

This app tackles that aspect of my launcher, and makes me wonder if my launcher idea is even necessary. Maybe this app is enough. I'm looking forward to it maturing some more (based on other comments)

This is great. I'm excited for the CL version so I can integrate it with Alfred.

By the way, I knew exactly what this app did 2 seconds after page load.


One big mistake, you show a screenshot without any real information. Wow! Awesome!.... What the fuck is it good for?

Thanks. I do have a description further down, but I've also added a description in the screenshot caption.

Great, I have actually found the description - tried to point out there were no apparent benefits at first glance, which should be the main focus on sites, trying to sell something.

Very nice app. I would add the possibility to drag from the dock and a group for never closing apps (such as mail or browser).

Many thanks for sharing on github. BTW, would you consider using a well known license (e.g. GPL or MIT)?

Thanks, and thanks for the suggestion. I'm not sure how to get it to work when dragging from the doc but I'd like to. A "never close" group is next on my todo list :) And it does in fact use the MIT license: https://github.com/flyingmachine/foreman/blob/master/LICENSE

I'd add some good use-cases for this. They're outlined in the screenshot and the blurb next to it, but a couple paragraphs below the fold going over your workflow would provide a more illustrative example.

Can you please sign the app with a developer certificate?

I've updated the app so that you can now define a list of apps that won't ever be closed.

i guess i'm doing it wrong, but dragging any app from dock or /applications does not work. icons just zip back to where i dragged them from. snow leopard 10.6.8. :/

it crashed Outlook. Also, it would be nice if it stayed open in the menu bar up top.

Get rid of the text as much as you seem to love it. The screenshot already explains everything.

All you need is one screenshot. One download button. One donate button. One mention that it's free.

I can only imagine that if it was JUST a screenshot, I would see this exact same comment but saying to add text because a screenshot doesn't explain everything. But that's more of irony on HN comments. Haha

However, this seems like a nice/simple app and I'm excited to try it out!

EDIT: My 1st joking point is perfectly demonstrated by tzaman's comment below. Haha

There was a whole section in there which was nothing but silly, "atmospheric" text which was meant to be ridiculous and jokey, but which didn't add any information. I've taken that out, so hopefully it's tighter and more informative while still retaining the overall tone.

I'd at least keep "Click on an app group and Foreman closes all apps not in that group and opens the apps in the group."

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact