Show HN: Stack: tiling WM for Windows - <AUTHOR> https://losttech.software/stack.html <comment><AUTHOR> Author here. Wanted to make something to replace seemingly dead GridMove ([http://jgpaiva.dcmembers.com/gridmove.html](http://jgpaiva.dcmembers.com/gridmove.html)). Current version basically reimplements GridMove's functionality.

Features over GridMove:

\- High DPI support

\- layout is defined in XAML which should be familiar for many Windows .NET developers

\- XAML allows some slick UI customizations

In plans:

\- window filters by class, title, program (you don't want fullscreen games to be affected by this app)

\- hotkey remapping (not hardcoded hotkeys)

\- realtime layout editor with preview

In plans for paid version (likely around $3):

\- support for StackPanel, WrapPanel, etc based layouts

\- zones with tabs (multiple windows in a same rectangle with little "tabs" over it)

\- automation rules (e.g. if there's a fullscreen app running, move windows to secondary screens; automatically move new windows to preferred zones; rearrange windows, that have not been used for a long time, etc)

<comment><USER2> Would definitely buy if it behaved like i3 on linux. i3 doesn't use predefined layouts like most WM. I find it much more logical than awesome, xmonad, etc.

<comment><AUTHOR> I am hoping to eventually cover that approach as well. As long as you stay with simple non-overlapping grids, it should be easy to implement.

However, i3 is quite functional, and Stack supports overlapping when necessary. So there're some UX compatibility problems to think about.

I'd be interested to know what functionality do you really use on a regular basis. Especially, it would be interesting to know _why_ do you use it. E.g. not just "I want to split my screen in half and put W1 to the left, and W2 to the right" but "I want to see all my open windows the most comfortable way possible".

For example: generally you don't just want a chat window constantly visible, you also don't usually need it to take half of 30 inch screen. So with an ideal app you should say, that it does not require more than 10cm width and 6cm height, and WM will figure out the rest.

<comment><USER3> I use i3 (gaps, because it's pretty) and would also be excited about a windows version.

I'm not a super sophisticated user of it.

I appreciate ability to arbitrarily split panes vertically or horizontally and also moving windows around with alt+shift+hjkl. Alt + enter brings up a new terminal.

Ctrl + d brings up dmenu or similar "global search/run text input".

It's easy to jump around virtual screens/tabs (alt + tab#).

Alt+f full screens a pane.

Basically you don't need the mouse much and it uses hjkl so vim users like it.

If you get those, it's probably pretty good coverage for i3 fans.

<comment><USER4> I have always been wondering whether there are actually people preferring alt over super as mod. Now I know. :)

<comment><USER5> Not that many, I should think. Most applications don't make use of super, so it's a natural fit for WM bindings.

<comment><USER6> Doesn't macOS abuses its super key ? (cmd ?)

Every time I use a macbook I twist my fingers horribly to copy and paste.

<comment><USER5> It does. Remapping Command onto Caps Lock helps a lot with the hand cramps, and Control makes a pretty good super key since almost nothing uses it. Still a mess, but it's manageable if you know how.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER7> Glad to see people are still making better window managers!

Is this open source? I'd love to see how it works by reading the code. Which Windows APIs does it use? How is it customizable in XAML? Can it be extended in JavaScript?

I think extensibility and accessibility are extremely important for window managers.

There is a window manager for the Mac called Slate that is extensible in JavaScript -- it makes a hidden WebView and uses its JS interpreter by extending it with some interfaces to the app to do window management, using the Mac Accessibility API.

"Slate: A window management application (replacement for Divvy/SizeUp/ShiftIt)": [https://github.com/jigish/slate](https://github.com/jigish/slate)

I'd like to take that idea a lot further, so I wrote up some ideas about programming window management, accessibility, screen scraping, pattern recognition and automation in JavaScript.

"aQuery: like jQuery for Accessibility": [http://donhopkins.com/mediawiki/index.php/AQuery](http://donhopkins.com/mediawiki/index.php/AQuery)

Check out Morgan Dixon's and James Fogarty's amazing work on user interface customization with Prefab, about which they've published several excellent CHI papers:

"Prefab: What if We Could Modify Any Interface?": [https://www.youtube.com/watch?v=lju6IIteg9Q](https://www.youtube.com/watch?v=lju6IIteg9Q)

Imagine if every interface was open source. Any of us could modify the software we use every day. Unfortunately, we don't have the source.

Prefab realizes this vision using only the pixels of everyday interfaces. This video shows the use of Prefab to add new functionality to Adobe Photoshop, Apple iTunes, and Microsoft Windows Media Player. Prefab represents a new approach to deploying HCI research in everyday software, and is also the first step toward a future where anybody can modify any interface.

Presented by Morgan Dixon and James Fogarty at CHI 2010.

"Content and Hierarchy in Prefab": [https://www.youtube.com/watch?v=w4S5ZtnaUKE](https://www.youtube.com/watch?v=w4S5ZtnaUKE)

Imagine if every interface was open source. Any of us could modify the software we use every day. Unfortunately, we don't have the source.

Prefab realizes this vision using only the pixels of everyday interfaces. This video shows how we advanced the capabilities of Prefab to understand interface content and hierarchy. We use Prefab to add new functionality to Microsoft Word, Skype, and Google Chrome. These demonstrations show how Prefab can be used to translate the language of interfaces, add tutorials to interfaces, and add or remove content from interfaces solely from their pixels. Prefab represents a new approach to deploying HCI research in everyday software, and is also the first step toward a future where anybody can modify any interface.

Presented by Morgan Dixon and James Fogarty at CHI 2010.

"A General-Purpose Bubble Cursor": [https://www.youtube.com/watch?v=46EopD_2K_4](https://www.youtube.com/watch?v=46EopD_2K_4)

We present a general-purpose implementation of Grossman and Balakrishnan's Bubble Cursor ([http://www.tovigrossman.com/BubbleCursor/](http://www.tovigrossman.com/BubbleCursor/)), the fastest general pointing facilitation technique in the literature. Our implementation functions with any application on the Windows 7 desktop. Our implementation functions across this infinite range of applications by analyzing pixels and by leveraging human corrections when it fails.

"Prefab: Implementing Advanced Behaviors Using Pixel-Based Reverse Engineering of Interface Structure." at CHI2009: [https://redesign.cs.washington.edu/sites/default/files/hci/p...](https://redesign.cs.washington.edu/sites/default/files/hci/papers/CHI2009-Prefab- Final.pdf)

"Prefab: What if Every GUI Were Open-Source?" at CHI2010: [https://homes.cs.washington.edu/~jfogarty/publications/works...](https://homes.cs.washington.edu/~jfogarty/publications/workshop- chi2010.pdf)

"Abstract: Current methods for implementing graphical user interfaces create fundamental challenges for HCI research and practice. Researchers are often unable to demonstrate or evaluate new techniques beyond small toy applications, and practitioners are often unable to adopt methods from the literature in new and existing applications. This position statement examines a vision in which anybody can modify any GUI of any application, similar to a scenario where every GUI of every application is open-source. We are currently working to enable this vision through our development of Prefab, using pixel- based interpretation of GUIs to enable modification of those GUIs without any cooperation from the underlying application. We see participation in the FLOSS HCI workshop as valuable in at least two regards. First, fully realizing this vision will likely require a community-based approach, so we are interested in Prefab as a platform for collaboration between HCI researchers and the FLOSS community. Second, enabling arbitrary modification of any GUI would seem to blur many current distinctions between open and closed applications, introducing new research questions and further magnifying the importance of the workshop's focus."

"Content and Hierarchy in Pixel-Based Methods for Reverse-Engineering Interface Structure" at CHI2011: [http://homes.cs.washington.edu/~jfogarty/publications/chi201...](http://homes.cs.washington.edu/~jfogarty/publications/chi2011.pdf)

"A General-Purpose Target-Aware Pointing Enhancement Using Pixel-Level Analysis of Graphical Interfaces" at CHI2012: [https://homes.cs.washington.edu/~jfogarty/publications/chi20...](https://homes.cs.washington.edu/~jfogarty/publications/chi2012-prefab.pdf)

And if you're into the history of window management, and would like to read some interesting discussions about many great ideas, check out this classic Springer Verlag book that's now available free online:

"Methodology of Window Management": [http://www.chilton- computing.org.uk/inf/literature/books/wm/...](http://www.chilton- computing.org.uk/inf/literature/books/wm/overview.htm)

By F R A Hopgood, D A Duce, E V C Fielding, K Robinson, A S Williams. 29 April 1985. This is the Proceedings of the Alvey Workshop at Cosener's House, Abingdon that took place from 29 April 1985 until 1 May 1985. It was input into the planning for the MMI part of the Alvey Programme. The Proceedings were later published by Springer-Verlag in 1986.

My favorite chapters:

"Ten Years of Window Systems - A Retrospective View" by Warren Teitelman: [http://www.chilton- computing.org.uk/inf/literature/books/wm/...](http://www.chilton- computing.org.uk/inf/literature/books/wm/p004.htm)

"SunDew - A Distributed and Extensible Window System" by Games Gosling: [http://www.chilton- computing.org.uk/inf/literature/books/wm/...](http://www.chilton- computing.org.uk/inf/literature/books/wm/p005.htm)

"User Interface Working Group Discussions": [http://www.chilton- computing.org.uk/inf/literature/books/wm/...](http://www.chilton- computing.org.uk/inf/literature/books/wm/p017.htm)

"User Interface Working Group Final Report": [http://www.chilton- computing.org.uk/inf/literature/books/wm/...](http://www.chilton- computing.org.uk/inf/literature/books/wm/p018.htm)

<comment><USER8> Hello, nice to see another big fan of Fogarty & Dixon's work ... such a pity that Microsoft or others didn't make these ideas mainstream! Dixon pointed me to his repo on github if you're interested...

<comment><USER7> Yes please I'd love to see their code! It needs to be integrated with Electron as a V8 extension.

<comment><USER7> Found it!

[https://github.com/prefab/code](https://github.com/prefab/code)

Prefab is a set of software tools for reverse engineering graphical interfaces from their pixels. Prefab supports a variety of features for modeling the appearance of interface elements, identifying those elements in pixels, and applying semantic metadata to those elements. Prefab reverse engineers interfaces many times per second, making it possible to completely modify existing applications at runtime, independent of their underlying source code.

Prefab is written in C# and runs on Windows. However, because it only relies on the pixels of an interface, it can be combined with a remote desktop or virtual machine client to reverse engineer applications that run in Mac, Linux, or any other OS.

Prefab is the creation of the University of Washington Dub Group [http://dub.washington.edu](http://dub.washington.edu).

</comment></comment></comment></comment><comment><AUTHOR> For those of you who tried it on a domain-joined computer, and it just crashed and then could not be started, it is due to [http://stackoverflow.com/questions/21326598/sha256cryptoserv...](http://stackoverflow.com/questions/21326598/sha256cryptoserviceprovider- not-fips-compliant) Will fix it shortly.

</comment><comment><USER9> interesting. I tried to use WiLMA [http://www.stefandidak.com/windows-layout- manager/](http://www.stefandidak.com/windows-layout-manager/) that has a super long list of features, but it was erroring frequently on Win10. If you already knew about WiLMA, how do you compare Stack to it?

</comment><comment><USER10> looks cool, am giving it a spin. I have been using Aquasnap for now, and although it always suited my needs, it stopped working for unknown reasons, and am happy to look at this as an alternative. As a datapoint, I am happy to pay around $25 for a "pro" version with cool features.

</comment><comment><USER11> nice solution for the overlapping layouts (drag zone != targed size so you can overlap nicely)</comment>


Show HN: Eth-Hot-Wallet, Ethereum and ERC20 open source wallet - <AUTHOR> https://github.com/PaulLaux/eth-hot-wallet <comment><AUTHOR> is it a good idea to treat Ether and tokens the same? (UX point of view)</comment>


Beta Testers wanted new Blackberry Site, Pinota - <AUTHOR> http://www.pinota.com

<comment><AUTHOR> Sorry if this is inappropriate for this site. I need beta testers with Blackberrys so that I can test the different screen sizes.

<comment><USER2> Why not use the RIM Smartphone Simulator if your on Windows to test it out?

I posted today about this: [http://dmix.ca/2008/10/creating-a-blackberry- version-of-your...](http://dmix.ca/2008/10/creating-a-blackberry-version-of- your-rails-application/)</comment></comment>


'Brief radiation spike' after rocket engine blast in northern Russia - <AUTHOR> https://www.bbc.com/news/world-europe-49275577 <comment> gene-h I wonder if they had a problem with the nuclear powered cruise missile they are developing[0]. It's interesting that they are recommending taking iodine pills though, because that might imply a release of radioactive iodine, a fission product.

[0][https://en.wikipedia.org/wiki/9M730_Burevestnik](https://en.wikipedia.org/wiki/9M730_Burevestnik)

<comment><USER2> That was my first thought as well. On a slight tangent, I recently learned of the USA's Project Pluto.[0] A 1957 fusion engine which I believe is along the same lines as the new Russian project. It was to power the SLAM.[1]

[0] [https://en.wikipedia.org/wiki/Project_Pluto](https://en.wikipedia.org/wiki/Project_Pluto)

[1] [https://en.wikipedia.org/wiki/Supersonic_Low_Altitude_Missil...](https://en.wikipedia.org/wiki/Supersonic_Low_Altitude_Missile)

"The Big Stick with Pluto engine" [https://www.youtube.com/watch?v=oVmpAD7WRxA](https://www.youtube.com/watch?v=oVmpAD7WRxA)

<comment><USER3> > fusion engine

Project Pluto / SLAM was to be fission powered. The payload was thermonuclear though, as with typical ballistic missiles.

</comment></comment></comment><comment><USER3> I wonder if this spike could be explained by dispersal of depleted uranium commonly used in bullets and other kinetic weapons for its high density. The article is very light on detail though, it's not clear whether this was an engine on a test stand, or a launch test.

<comment><USER4> Depleted-uranium rounds have (by definition) extremely low radioactive decay rates and are incapable of nuclear fission on their own (most of the opposition to their use stems from uranium being a toxic metal if ingested by living things). For something to release radiation, it needs to be a nuclear fuel. That's quite interesting/worrying.

</comment></comment><comment><USER5> "They advise everyone to close their windows and drink iodine, 44 drops per glass of water.</comment>


ErlangCamp Chicago 2010 - <AUTHOR> http://erlangcamp.com/

<comment><USER2> <aside> Use of the term "camp". This ErlangCamp seems a neat conference. I'm an erlang lover. The website and proposed content seems compelling.

I helped start a few "camps" about 6 years ago. The idea was you put together all the items to enable folks to get together and decide on content the morning the camp starts. Its an un-conference and everyone is expected to participate. Thats how it was explained to me at the blossoming of the camp phenom. Now it seems the word has been co-opted and in this case its just a specialty "conference".

...thoughts or opinions?

</aside>

<comment><USER3> I agree. Camp = unconference. Schedules are decided the mornings of the event with little to no cost to attend. Also, free food and free shirts.

Otherwise you just have a plain ole' conference.

<comment><AUTHOR> Names are hard. Two of us running ErlangCamp have been organizers for Chicago BARCamp for the last 5 years (I've actually backed off but Jordan still helps) and we've heard this a few time already, hehe. Now that events like CouchCamp are popping up I didn't think it was a big deal to do the same for our Erlang event.

Sorry if it causes any confusion. It will still be a great conference!

</comment></comment></comment><comment><USER4> The photo on the front page seems odd, looks more like a bunch of business types at a sales conference than a bunch of Erlang hackers at a camp. But the content looks good; I'm really thinking about going. Wondering what a decent hotel in the area will cost? Would be nice to have a couple of recommendations somewhere on the site, especially if discounts could be arranged.

<comment><USER5> Heh, yeah, the picture is probably not an accurate representation of the type of attendee we will have.

We are working on getting discounts for hotels. That information should be posted on the site within a few days.

</comment></comment><comment><USER6> Saw this posted on the Nitrogen Web Framework mailing list, and I'm strongly considering going. Seems this would be rather helpful followup/supplement to the Erlang books.

And nice and close to Milwaukee.</comment>


Google talking to NYT about something... - <AUTHOR> http://mediamemo.allthingsd.com/20090511/google-talking-to-new-york-times-washington-post-about-something/ <comment><USER2> It is hard for me to feel bad for newspapers when they have been slow to adapt to the changing world around them. NYT & WP have had plenty of time to come up with a better business model. Instead, they spent their time building useless registration systems to trap users without adding any real value to their user experience.

<comment><USER3> There are two business models for content: paid content and advertising. Both were tested. What else should they do?

<comment><USER4> Last time I checked, the NYT registration system didn't actually charge you anything -- it just added a hoop you had to jump through to see their content.</comment></comment></comment>


Ask HN: Grokking concurrent applications? - <AUTHOR> As someone who's been programming professionally for several years, I'm embarrassed to admit that I barely have any experience with concurrent programming. My next project heavily relies on database and network sync, so I figured it would be a good opportunity to brush up on the basics. I'm currently trying to internalize the inner workings of a popular open-source database project (YapDatabase), but I've run into a significant mental block: whenever I try to visualize the flow of a concurrent program in time, I just can't seem to keep it in my head. With single-threaded programming, things are a lot easier. Control flow is predictable and circuit-like, allowing you to draw the structure of most programs out on paper. But it seems that with concurrency, you're essentially adding a third dimension to the mix: not something that can easily be represented in 2D space! Whenever I have to reason about overlapping thread interactions, obscure deadlock conditions, and synchronization summersaults, I just feel like I immediately get lost and have to start over. There's no stable structure for me to grab onto: every overlap of the threads in time has to be considered!<p>I know this is possibly too general of a question, but is there a systematic approach to reasoning about concurrent programs?<p>(In the meantime, I suppose I'm going to keep reading the code over and over and hope that things start to stick.) <comment><USER2> This is a huge topic and you are right it probably isn't an easy thing to try and answer here, but maybe some hints to help you.

You are correct to almost view multi-threaded applications (or distributed processes really) as essentially a 3d problem. In a single threaded program time is not ever really a factor, sure you want performance so you worry about how long something might take to execute, but that is relevant to the singular flow. In concurrent applications time is a dimension that is essentially uncontrolled and you have to instead rely on state and some form of message handling/passing. Regardless of how it gets implemented, concurrent applications (threads or distributed processes/apps) all have to communicate. Sometimes that is through shared memory, or through shared variables (with associated locks/mutex etc), but in the end they all have to talk -- I've seen files used to communicate etc.

So as for where to start when trying to understand an existing concurrent application. Pick one component and find out who it talks to or depends on, figure out how it talks to everyone, and then start your map from there. Instead of mapping function calls you are mapping communication flow and paths. Then within those communication paths each component will have a functional map generally that you can follow like a more traditional application.

Some may disagree but to me this is the easiest way to view concurrent or distributed applications. Honestly, once you figure it out, you'll either love or hate it. I personally love it, but it isn't for every problem.

</comment><comment><USER3> I think it's helpful to focus on when things write to a shared resource or utilize something that may have been changed elsewhere. Any subsequent read of that resource may change. In face, in a poorly designed system you could read a value as it's being changed, for example, a function walking a string as the string's memory is released.</comment>


Google Chrome Without 3D - <AUTHOR> http://chrome.blogspot.com/2009/04/google-chrome-without-3d.html

<comment><USER2> Someone should come up with a 3D text editor for next year's April fool's day. It would probably be fun to write some code in 3D for about the same amount of time that it would be fun to visit websites in 3D (one day).

</comment><comment><USER3> Thanks for clearing that up!</comment>


The Future of Python in Science Keynote at EuroSciPy2010 [pdf] - <AUTHOR> http://dirac.cnrs-orleans.fr/~hinsen/EuroSciPy_2010_Keynote.pdf

<comment><USER2> Pay close attention to the final few slides, they seem to outline a proposal for a set of changes that I think can be best described as "add strict variants of the various parallel/concurrent computing primitives haskell has to python (plus side effects tracking) so we can have python be natively good for HPC applications in the future"

</comment><comment><AUTHOR> It's worth mentioning the accompanying blog post too: <http://khinsen.wordpress.com/2010/07/12/euroscipy-2010/>

</comment><comment><USER3> Konrad Hinsen is one of the main Clojure hackers. I wonder how he splits his affections between the two languages.

<comment><USER4> I don't think I am among the "main" ones, but to answer your question: Python is what I use for doing research, Clojure is what I look at because there are lots of good ideas in it. BTW, I also follow some Haskell developments, in particular DPH.

</comment></comment><comment><USER2> and its also worth noting that scribd links are now html5! (yay!)</comment>