Hacker News new | ask | show | jobs
by shurcooL 4172 days ago
Author here. I was just about to go sleep when I noticed a retweet and a lot of new stars on Conception; this explains it.

The linked C++ project was the result of an initial year of working on it, which culminated in a winning entry to LIVE 2013 contest [1] and me switching to working on a version of it written completely in Go [2]. I no longer work actively on the C++ version, but I do on the Go one [3].

Primarily, it has been an extremely insightful learning experience. I had a lot of ideas and I wanted to try them, and by building Conception I found out the reasons why certain things that are commonly desired do not actually work well in practice, and why our seemingly outdated practices of writing code no different than decades ago are still so predominant and effective.

It's really interesting to go back to my old notes and goals and, with hindsight, truly understand _why_ they didn't work out, and what it would take to make them work.

The Go version is go-gettable and working [4] despite having lots of dependences (as proven by the green Travis build). This is one of the benefits of using Go and not the case for C++ version. You can easily try it, but at this point the UI is so far from finished, it's not really fit for general use. If you're interested, I highly recommend watching the repo so you'll see further development. :)

[1] http://liveprogramming.github.io/liveblog/2013/04/live-progr...

[2] https://github.com/shurcooL/Conception-go

[3] https://github.com/shurcooL/Conception-go/graphs/contributor...

[4] https://github.com/shurcooL/Conception-go#installation

10 comments

Developers who re-invent/re-imagine some wheels usually realize at the end why the original wheels are designed like those. We, understandably, don't quite appreciate the work other people have done, where we consider their tradeoffs as mistakes. But when we do them ourselves, we eventually see the huge amount of conflicting goals, as tradeoff is the essence of engineering, or anything.

However, almost all the good new things came from some re-invention. Don't let the tradeoff scare you away from your original ideas. Maybe the whole interface doesn't beat what we have now, but there are quite a few very good stuff in your demo. And I believe some of them (zoomable overviews, widgets), can truly work better than what we have now. It somehow reminds me of Rob Pike's Acme editor, though they look very different.

> Developers who re-invent/re-imagine some wheels usually realize at the end why the original wheels are designed like those.

While that is true, I do also think it's healthy to have some scepticism about the design of projects because some are just poorly executed (either because it's based on an outdated model that everyone has stuck to because it's the standard way of doing things, or because of time constraints, or sometimes just because of a lack of love for the project).

Sometimes it's worth people re-inventing the while just to see for themselves as occasionally a new developer might just have a unique perspective that results in them solving a previously considered "unsolvable problem".

Obviously this philosophy isn't without it's drawbacks. But sometimes it's worth testing the old standards.

>We, understandably, don't quite appreciate the work other people have done, where we consider their tradeoffs as mistakes.

Part of this is because it's hard to differentiate between crap and something that was well-designed without putting the time into researching it. This leads developers to just assume most things are crap unfortunately.

It is important to distinguish between prototypes and demos vs. products meant for consumption; many people easily get confused that all released code should somehow be shippable. This is why I'm hesitant to release my own demos even though I get a lot of requests for them.

  It's really interesting to go back to my old notes and 
  goals and, with hindsight, truly understand _why_ they 
  didn't work out, and what it would take to make them work.
It would be awesome if you could blog about it or share your notes!
I agree, that would be useful, if not the most useful thing I could do, so that my findings aren't in vain.

Sadly, I don't do any blogging, but I'll see if I can do something about that.

I'm very interested in reading this too, but please don't let "set up a blog" be a blocker on "share what I learned". You could just add a findings.md to the repository
I don't blog either... but then once every few years I do and it turns out that when blogging when you actually have something to say is valuable to people.

Try medium, it works for such infrequent blog posts... and post the link back on here and we'll all get an insight into the learnings.

A md or org file in the project would be enough for me.
> Feel free to steal any good ideas you see here. My goal is to benefit the world as much as possible; personal gains are a lesser priority.

The project has no licensee, so it's effectively all-rights-reserved. To make the code usable by others, you should select a license, but be sure you understand that with many licenses anyone can copy/fork/rename/translate/extend/repack the project.

Don't be creative and stick to a standard license like BSD/MIT/LGPL/GPL and a few more. They are not equivalent. Take your time to select the one you prefer for your intentions and your definition of open/free. https://www.google.com/?q=mit+bsd+lgpl+gpl

Explicit permission to take things from it is a license, even if potentially an undesirably ambiguous one.
I like it! I've been thinking a lot about user interfaces for creating programs and gaining insight into execution lately, so I'm really glad to have seen this. From the demo video, it looked a little cumbersome to move everything around and it seems like your workbench can get disorganized quickly. Have you experimented with layouting at all? Also does it actually feel cumbersome in practice, or is that a misconception from just watching the video? Anyway, great effort. Looking forward to see this develop.
After watching the demo video I though it looks cool, but impractical and ineffective for non-demo usage. It looks heavily dependent on mouse centric Bluebottle-style zoom/scroll desktop and drag-and-drop windows/widgets. Do you have plans/ideas how to transfer some of the advantages to a more keyboard centric, tabbed/tiled window management UI, and if that would be more practical and effective in non-demo usage scenarios?
I just have to say, I've been following this project for awhile. I've been hoping that it progresses beyond experimental stages. The two concept videos on YouTube are great.
Very interesting concept explorarion. Nice work.
> I had a lot of ideas and I wanted to try them, and by building Conception I found out the reasons why certain things that are commonly desired do not actually work well in practice

Can you give some examples? It might be very valuable to share your conclusions.

What happened to the screenshots?
See https://news.ycombinator.com/item?id=8907211. Sorry about that, I'll do something about it later on.