Simulation, Consciousness, Existence (1998) - <AUTHOR> http://www.frc.ri.cmu.edu/~hpm/project.archive/general.articles/1998/SimConEx.98.html <comment><USER2> An analogous way of saying this argument is, this world is a dream. It is a reflective dream that builds content based on the observations of the observers within that content. If I look over here, it tells me about here, if I look there, info about there. As I build understanding and knowledge about the things I'm looking at, about the act of looking itself, I gain the ability to ask deeper questions against what is effectively a lookup table of information about existing truths of the dream that I have already observed. As I observe those events more closely, and build a better reference or lookup of the information related to them, they in a sense become more stable and more solid.

In the current state, all of the aspects of what me might consider a standard "dream" are present, they just exist within the wrapper of technology. The standard sufficiently advanced technology is magic argument. Truly, all technology is magic, just accomplishing magical goals with a symbolic wrapper of tech.

Another way to look at it, is we all live within a light hologram. All of existence is a light hologram. It is like a bright point of light that we are continually looking closer at, and as we do, we discover the complexities of color and form within what was originally just a wash of light. All/No Colors -> White/Black -> RGB, ect... Researchers have already demonstrated the capacity to create subatomic particles using nothing but the confluence of light. It isn't a huge leap to then surmise that all "matter" is actually condensed or bound light.

We are effectively consciousness objects sharing the delusion that we all possess "physical" bodies and interact with a material world, but its a reflective argument, because the material objects we interact with are only material to things within the simulation of materialism. Its like we're all on the Star Trek holodeck, but the joke is that we're all actually the Doctor, and all the meat things which think they exist within the "real" world, are fundamentally just as immaterial as the Doctor - sharing only the one thing they all possess, which is consciousness, and the ability to observe, interact with, and build knowledge about their external world.

</comment><comment><USER3> My alma mater ^_^. The basic loop is : [http://monad.ai/wp- content/uploads/2016/09/dev_framework.png](http://monad.ai/wp- content/uploads/2016/09/dev_framework.png) You can alter the environmental context easily by re-directing the wire in/out : [http://monad.ai/wp- content/uploads/2016/09/dev_context.png](http://monad.ai/wp- content/uploads/2016/09/dev_context.png). An individual would be none the wiser.

Sure we could be in a simulation. It's interesting to ponder on it. You'll begin forming answers when you dissect the different components, relationships, interactions, and try to create your own version of it : Say AGI.

;)

<comment><USER4> It's amazing how many people speak about AGI as if it's even a theoretically plausible thing.

It's about as plausible and well substantiated as the Christian God. Which isn't to say it's impossible, but just that it's almost entirely an article of faith. There are a few anecdotes which maybe hint at its possibility. But nothing even approaching a rational explanation of how it might be built.

Also, the model of cognition you are describing (information processing or I/O) is very old, from the 1960s. It was inspired by the discovery of the computer. There are other models, like Ecological Psychology, Embodied Cognition, Distributed Cognition.

It is tempting to draw a box around the brain and posit that it's the most important interface and that all of the important information passes through it. But whenever you break down so-called "cognitive" phenomena, you find that often very little information passes through that barrier. The lions share of encodings remain outside the brain, and for any given animal task, quite a lot of information processing happens outside the brain.

In a weird way, the information processing model is a vestige of the notion of a soul. If you really accept "physical fundamentalism" as OP describes it, then the interface between the brain and the rest of the world is nothing at all. Just a ribbon of atoms with a name. No more interesting than the interface between your stomach lining and the bacteria inside, or between the vibrations in front of your mouth and all nearby ears.

The only reason to center the brain/environment interface is to try to separate what you consider to be the essential identity of a person from their physical grounding. I.e. to maintain a model which includes a soul.

<comment><USER3> At this point, it seems there is no manner of detailing that will convince people that it's plausible. I'm honestly unaware as to why people can't fathom it. It's a systems issue. If you want to resolve a systems issue, you need people who have worked on complex systems.

Having done the research myself, having the computational models in front of me, and currently developing iterative capability levels, I can assure you its plausible and I've developed some pretty complex infrastructures and systems during my time in industry.

I encountered the same issue in industry when I was developing the network infrastructure equipment that ensures your packets traverse the net. "You can't do that". "That isn't possible". "You can't shave off 300ms from that process. No one has touched that code in 10 years"

Why yes you can and I personally already have a track record of doing what is said can't be done. Everything is implausible until its made plausible. So, You'll never truly know until you try.

The biggest hurdle blocking people's way is that they're choosing to run down the same path. Why should you expect different results when everyone is approaching the problem the same way? That and, instead of the most knowing people getting in the trenches and attempting to write code, they remain in the philosophical camp and their works are tossed across the wall to the applied engineering camp. Rarely do you find someone who wears multiple hats or straddles the fence. I straddled the fence, saw what I saw, and now I'm developing it.

There are few who want to start from scratch and build up models. Many are ripping models from work done in the 60's,70's, and 80's without a second thought as to what was the thinking behind them. I chose an alternative path. It's paying off.

The model of consciousness that is being used is actually not detailed in any way (purposely). So, it is not very old. I have a stack of annotated white papers on the pioneers from the 60's/70's/80's centered on this inquiry and present day papers on : Global workspace theory (GWT), integrated information theory (IIT), etc. I fail to see any deep connection between my approach and their approach.

I intentionally haven't given any detail about the computational model of consciousness that is at the center of the architecture nor even the slightest detail on how to implement it. Given the climate in this space, I hope you can appreciate why.

You see a box. I see a relationship. There are no broad boxes over anything I am developing. The diagram was made in simple reduced form to help one conceive of the ties and flows to and from the world. People sing high praise of OpenAI and OpenAI gym. I experimented with similar open source packages when attempting to create a virtual environment for testing my code. I resolved on different packages and developed my own gym. I needed more access to the core/gut functions. From what I can tell, there are several other groups/companies/individuals that have done the same. No mention of them ever. No praise. Which is fine but it just goes to show you how there are likely numerous groups making headwinds in this area that no one has ever heard of.

>In a weird way, the information processing model is a vestige of the notion of a soul. If you really accept "physical fundamentalism" as OP describes it, then the interface between the brain and the rest of the world is nothing at all. Just some atoms of many. No more interesting than the interface between your stomach and your brainstem, or between the vibrations in front of your mouth and all nearby ears.

Interface/Relationship. There are no 'boxes' until you create one.

> The only reason to center the brain/environment interface is to try to > separate what you consider to be the essential identity of a person from > their physical grounding. I.e. to maintain a model which includes a soul.

Objective reality (governed by strict laws like physics).. Subjective experience. Pay close to attention to the wording I use as I don't give many details.

Seeing will eventually be believing. Once made manifest, you won't be able to deny its plausibility. Seems one can save a lot of time skipping attempts to try to convince people and just get to the development.

But yeah, consciousness isn't that serious. You just have to think outside the box to begin making progress on it. Whether or not were in a simulation is immaterial. The word 'simulation' really loses its meaning once you peer deep into the constructs that underly the universe. What does that even mean and how, even if you discovered it was a simulation, would you alter it in any meaningful way. Don't you think the person who created it, given how amazing it is, had the wherewithal to implement safe-guards/alerts? Or even made universal laws that forever restricts you from certain things? It's better that you focus on how it works than trying to define it. It makes for good story telling but I'd rather just dig in, understand it, and make use of that understanding instead. Again, do you want to sit around philosophizing and dreaming about it all day long or do you want to start converting that understanding into something ground breaking?

P.S - A component of the research that was conducted centered heavily on physics/quantum physics. It is quite important to understand the 'environment' and its laws when working on AGI.

<comment><USER4> I just want to say: I wholeheartedly support you and any and all research in this direction. I think AI is and will be hugely important.

You think I will be surprised how "general" the AIs are. I think you will be surprised how similar to human bodies you have to make them for them to approach a human definition of "general".

This is the only sense in which I think AGIs are impossible... not that they couldn't be fabricated, but that they would be functionally indistinguishable from a human with access to some good subroutines.

> Seeing will eventually be believing. Once made manifest, you won't be able > to deny its plausibility.

I look forward to it. I say the same thing about my own work all the time, of which many people are incredulous. But still, you must admit that doomsday prophets say the same kind of thing. Again, please don't take that as disbelief, just not-yet-belief.

Regarding the specifics of the models, I would humbly submit this (as old as I am) paper on Ecological Psychology as a good, usable alternative to the information processing model of cognition: [http://www.trincoll.edu/~wmace/publications/realism.pdf](http://www.trincoll.edu/~wmace/publications/realism.pdf). If you don't want to wade through the high philosophy stuff, pages 194-209 get into more concrete specifics of the model they are proposing.

To me it seems fundamentally different than the I/O based picture my OP proposed. I would be interested to hear your perspective. And hit me up if you ever feel like coming out to Oakland to chat with a fellow crazy person with a passing knowledge of cognitive science and quantum mechanics. I would love to buy you a coffee.

<comment><USER5> I read 194-209. I think their approach is fantastic, and it's rare to see such careful thought on this subject. However... nothing struck me as being incompatible with an information IO model?

<comment><USER4> Their core hypothesis is that you can't separate any kind of agent from their physical capabilities in the environment and still have cognition. That perception and action are not two phases but are an atomic unit of analysis. Perception is action. And what is perceived is not signals but relationships between an organism's capavilities and it's environment.

</comment></comment></comment></comment></comment></comment><comment><USER6> His book "Robots: Mere Machine to Transcendent Mind" is really excellent, even if he takes quite a few gigantic logical leaps that aren't really justified, imo. It's just a great piece of futurology.

<comment><USER7> Agree, one of the better books on the subject in the sense of framing a potential path towards the robotic revolution.

</comment></comment><comment><USER8> Morpheus from The Matrix: "What is real? How do you define 'real'? If you're talking about what you can feel, what you can smell, what you can taste and see, then 'real' is simply electrical signals interpreted by your brain."

Doesn't feel like there's ultimately any way out of this line of reasoning. What would it take to prove to you that you are indeed not in a simulation of some kind? as the only methods of providing proof are also parts of the simulation.

<comment><USER9> > Doesn't feel like there's ultimately any way out of this line of reasoning. > What would it take to prove to you that you are indeed not in a simulation > of some kind? as the only methods of providing proof are also parts of the > simulation.

Simulations are just as real. Why wouldn't they be? What makes "natural laws enforced by reality" really any more "real" than "natural laws enforced by a simulation"?

<comment><USER10> Are simulations just as real? Or are they only culturally real? A simulation of the weather only makes sense when you have humans around to interpret the output from displays. Inside the machine, it's just a lot of 1s and 0s. It's not even really that. It's a lot of electrons moving about. A bunch of electrons aren't a simplification of the weather. It's only because human culture has computing devices that simulations make any sort of sense.

Physical systems aren't about anything, and don't represent anything on their own. It's the entire problem of intentionality.

<comment><USER11> > It's a lot of electrons moving about

The actual weather is also a lot of electrons moving about.

<comment><USER10> Sure, in part, but we don't consider weather systems to be running simulations.

Although Jaron Lanier wrote a paper on treating a meteor shower as a simulated computer running simulated minds to make a point about consciousness.

</comment></comment></comment></comment></comment><comment><USER12> My main problem with the simulated world argument is complexity. Take the Billiard Ball example[0]. This means to accurately simulate the universe you can't really get away with approximations. Under close enough scrutiny discrepancies in the simulation are discernible, and we can scrutinize it at the subatomic level. But to simulate the observable universe, how big would your computer need to be? How slowly would the simulation run relative to the simulator's real-time? It just doesn't stack up.

The only way to do it would be to fake it by generating the appearance of a thorough simulation rather than the reality of one. In which case the arguments put forward for wanting to perform a real simulation - to simulate history and so forth - break down because you'd only be emulating the appearance of it not simulating it.

The only way out of this I can see is if the universe containing the simulator were vastly more complex than ours, such that in comparison our universe would be trivial to simulate. But then why would they do it? Our universe would be nothing like theirs. In principle this is possible, but it massively reduces the chances that our world is a simulation because only a subset, and quite possibly a vanishingly small subset, of possible universes would be capable of hosting the simulation. Possibly fewer universes that there are universes like ours. At which point the odds of ours being a simulation collapse.

[0] [http://www.anecdote.com/2007/10/the-billiard-ball- example/](http://www.anecdote.com/2007/10/the-billiard-ball-example/)

<comment><USER13> We already run simulators of our universe with vastly lower resolution then reality, and they _do_ tell us useful things about it.

<comment><USER14> Sure, but that isn't simonh's point. Those simulations aren't very good. There's nobody living in those simulations that thinks that they're alive, let alone that is capable of creating a working computer out of the material in that simulation.

<comment><USER12> Right, and the Billiard Ball Example shows what you need to do to even just simulate a game of billiards. To do so accurately you have to simulate every elementary particle in the observable universe. That's how complex and interconnected the universe is.

<comment><USER13> Arguing that present technology is insufficient doesn't prove that all future technology would be insufficient. The trajectory of improvement rather suggests the opposite.

<comment><USER12> It's not a matter of technology, it's a matter of complexity. By definition a computer capable of simulating every elementary particle in the universe would have to be many orders of magnitude more complex (in crude terms 'bigger') than the universe itself, even assuming ideal technology with mathematically perfect efficiency.

</comment></comment></comment></comment></comment></comment><comment><USER15> The elephant in the room of the assembled Gaian biomorphs is the Human capacity for discerning _meaning_. _Meaning_ and consciousness are very much related.

A simulation is only dealing with _form_.

<comment><USER16> >A simulation is only dealing with form.

It seems to me a sufficiently precise simulation would necessarily capture meaning. If meaning is critical to decision making and that decision making is precisely simulated, then the simulation must also capture meaning.

<comment><USER15> > It seems to me a sufficiently precise simulation would necessarily capture > meaning.

That is the very bone of contention here.

> If meaning is critical to decision making.

I don't believe it is in the general case. Our current crop of Go winning machines seem to indicate otherwise.

<comment><USER16> Within the context of Go, what meaning does the Go playing machine lack?

<comment><USER10> All of it. It has no idea that it's playing a board game, or even what a board game is.

That it's even playing Go is a human interpretation of what the machine is doing. Granted, we gave it that interpretation in the form of software instructions. But to the machine, it makes no difference.

<comment><USER16> _Within_ the context of Go there is no board game, its just sets of possible states and transitions between valid states. Any feature of the game Go is encoded within this state space. The "meaning" of pieces, moves, captures, win, loss, etc are all encoded here. The go playing machine may not capture these concepts explicitly at a high level, but I'm not sure that's an important distinction.

Concepts like board games, people, ancient Chinese culture, etc are all external to Go.

<comment><USER10> Yeah, but the encoding of the possible states, etc are all based on the actual board game. We made an abstract version of the game and fed it to a learning algorithm.

<comment><USER10> hackinthebochs:

Right, but the parts of the abstraction only have meaning because they are given meaning by us from the reality we abstract from.

<comment><USER16> You seem to be defining meaning just as what conscious entities endow something with, and so our abstract notion of Go necessarily receives its meaning from us. I don't agree with this.

At its most basic, meaning just is the set of concepts and behaviors that allow correct manipulation as judged by _some_ standard. So in this case the rules of the game have meaning within the context of a game of Go as they allow for correct manipulation of the game state. That what constitutes valid board states was derived from conscious entities isn't relevant here. The rules of Go have meaning (allow for proper manipulation) within the context of the system of valid board states and transitions between them.

(you can reply to comments by clicking on the timestamp)

<comment><USER10> Concepts are something minds create to make sense of the world. Correct manipulation as judged by standard is also a mental judgement. The rules of Go are rules because human beings defined them. That there is a context for valid board states is because we created a game that had a context.

<comment><USER16> >The rules of Go are rules because human beings defined them.

But this says nothing about meaning within this framework. "Concepts"/entities/units within the framework have meaning precisely because of the relations inherent between the entities and states within the framework. The ultimate source of the framework is not relevant.

The entities in the system do not "get" meaning because of a conscious observer, they get meaning because of the relational properties between the entities. If every person in the universe suddenly died, those meaningful relationships would still be valid. After all, the relationships entailed by math is true regardless if anyone is there to recognize them.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER17> The evil demon which Descartes described is very real - it is one's own mind conditioned by dogmas, traditions and so called collective consciousness, and the illusions that such a mind produces are as good as real.

Simulations can tell nothing new about the true nature of reality, because any simulator would reflect the current assumptions up to date and will be based on an oversimplified model. Weather simulation is not a weather. Map is not a territory.

</comment><comment><USER18> > The prescientific suggestion that humans derive their experience of > existence from spiritual mechanisms outside the physical world has had > notable social consequences, but no success as a scientific hypothesis.

Why?

<comment><USER19> Depending on your definition of "outside the physical world," it's at best untestable. You can explain consciousness by saying it comes from a massless, noninteracting, odorless, tasteless... etc. but that explanation doesn't really help. So far, lots of other things that were previously explained by non-physical whims of God have had at least partially reductive explanations in science; a lot of people hope that consciousness will yield the same. It still may be possible that consciousness is a spiritual phenomenon, but with no way to test, prove, or expand on that, scientists would rather not close the book there.

<comment><USER10> The modern philosophical argument against a scientific explanation of consciousness is that science is an objective, third person pursuit, abstracting away from subjective, first person. If so, you can't hope to explain the subjective in terms of the objective.

There is no need to invoke the spiritual or supernatural to see that consciousness is a problem for science.

<comment><USER19> It honestly depends on who you ask. A lot of people think consciousness is inherently unsolvable by normal science (Chalmers' "hard problem of consciousness"), but there are plenty (Dennett etc.) who will deny that such a hard problem exists, and make reasonable arguments that the scientific method can make headway in reductively explaining consciousness.

</comment></comment></comment></comment><comment><USER20> I thought about this essay a fair bit over the years. It's one of the things that persuaded me that reality is mathematical in nature.

</comment><comment><USER21> in the dream for oriental philosophy we create the connoisseur, the knowledge, and the known object. or in other terms the object experienced, the experimenter and the experience of the object known.

</comment><comment><USER22> I am very happy to see this at least bring up one of the most strange parts of Everett's many-worlds (and others' "many-minds") theories: that in them, you are immortal; for there always exists a possible world which you didn't lose consciousness in, and your final consciousness will only propagate into those worlds.

Searle's objection still seems to hold some water, though. Consciousness does not seem to be a computation because whether something is a computation is observer-relative; for some observers this set of electrical flickering makes sense as a computation to produce a sunflower-like pattern of points based on emitting branches in directions of (pi * the golden ratio) radians... but for the vast majority of observers probably it doesn't seem like anything until I print out a picture of the result; and even then it might not mean anything to those observers (they might be blind, or they might not associate it with sunflowers, or they might have alien brains so differently wired from mine that they simply cannot appreciate art the way that humans can). We actually have formally defined computation to be observer-relative in precisely the way that the status of what words a book contains and what those words together mean is observer-relative (think that in some other parallel universes the English language was exactly the same but that the words for 'cat' and 'dog' were transposed, and so this same book tells a somewhat different story in those worlds).

The problem is that my two bunnies seem to be quite conscious, to say nothing of myself or my girlfriend. It's not just that they're conscious-relative-to- me-but-it-depends-who's-looking... if that's true then it's a very different perspective which almost nobody takes seriously and practices. My bunnies just seem to be conscious, full stop. They appear to have both interests and the capacity to feel pain (observer-relative consciousness), but it appears to be more than just an appearance! In some sense they are objective observers who their own consciousness is relative to; therefore they are objectively conscious in a way that computations just don't seem to be objectively anything.

The hope of the functionalist approach to consciousness, with its common- sensical "anything which could replace this airy-fairy consciousness stuff in all of its functional roles would be equally justified to be called conscious," is therefore that as processes with no-intrinsic-meaning become more complex and more involved, there is some way to say "no, the parts of that don't have much intrinsic meaning by themselves, but you put them together and then this thing is objectively computing X or Y, there is just no other way for an observer to view it, it has passed a complexity threshold beyond which there is only one interpretation of it." Our books, with the cat <-> dog substitution looming in our minds, clearly don't pass this threshold by-and-large, but perhaps things more complicated processes than those books' narratives can?

<comment><USER5> The premise about computation being observer-relative overestimates how much meaning we read into a system, and underestimates how much we read out of it. When two 1kg bags of sand land on a lever and counterbalance the one 2kg bag at the other end, that has an objective, logical, correspondence-based meaning that transcends observers. When a domino computer "executes" \- same. When a silicon computer computes - same. As the computer gets more complex, it becomes harder to intuit how the physical working is objectively a computation, but this proceeds by straightforward extension from the bags of sand.

We can certainly attach semantics to the numbers (e.g. saying this bit pattern represents dollars, or a spaceship's shield %), and _that_ is observer- relative. But that is completely different from categorizing or understanding a process as a computation in general, in terms of logic.

I'll stop short of implying that it's the same for the human brain, because nobody should be pretending to understand the brain at this point in history. However, this does provide a way to see how it _could_ be true for the brain, if it is ever determined that the brain is precisely equivalent to a computer.

<comment><USER22> Sorry, what is the "objective, logical, correspondence-based meaning" that you're referring to? Moreover, you've already laden a lot of interpretation in there, "1kg" vs "2kg", "counterbalance".

Let me put it to you a different way: suppose that I put two bags of some substance on one side of a beam attached to a fulcrum, and one bigger bag containing a substance that looks similar, on the other side of the beam. Suppose that the beam continues to tilt such that the bigger bag is resting on the ground. There are definitely some observer-relative ways to read this situation; but is there an observer-independent way to read it, which goes beyond what I have already said about it in this paragraph?</comment></comment></comment>


The Physics of a Light Bulb - <AUTHOR> http://www.forbes.com/sites/chadorzel/2015/05/21/the-surprisingly-complicated-physics-of-a-light-bulb/

<comment><USER2> The article takes on an interesting subject, and starts off informatively, holding my interest.

Unfortunately, hit a glitch navigating from page 2 to 3. The article's text is missing on page 3, saying only "undefined". Pretty sure that's a javascript error. Disappointing, always thought of "Forbes" as a major content producer who could handle it.

Maybe it goes to show that putting up "fancy" effects isn't really worth the trouble. I'd much rather just be able to read the article and can easily do without the "slick" section transitions.

I did like the illustrations/images, they're definitely worth keeping.

<comment><USER3> It's only two pages, the last bit should read 'So much for the idea that learning physics takes away from a sense of wonder at the world…'.

The 'print' version is all on one page.

<comment><USER4> >The 'print' version is all on one page.

I'll be using this trick more often. Thank you.

</comment></comment></comment><comment><USER5> The author writes that "You can see this worked out with a whole bunch of math, ... this 2005 paper from the American Journal of Physics is very nice'.

A pricey read though at $30 to buy or $4 to rent the article. Never mind, the seven line abstract is absolutely free.

<comment> semi-extrinsic Adding insult to injury, that paper isn't even 100% correct, there is a subsequent comment paper pointing out the errors.

Here [1] is a full-text link to a better paper explaining blackbody radiation properly.

[1] [http://arxiv.org/abs/1010.5696](http://arxiv.org/abs/1010.5696)

<comment><USER6> Nice paper, written in a very readable style.

Thanks, one of the best links I have ever seen on HN.

</comment></comment></comment><comment><USER7> For me on an iPhone 6+ the page continuously reloads due to an error, I can read about a paragraph between reloads but then have to scroll down again from the top. I gave up after 4 paragraphs.</comment>


How to Decide What to Build - <AUTHOR> https://dcgross.com/decide-what-to-work-on/ <comment><USER2> One of the points the author makes is that you should track the problems you have, and the ones that reoccur will be good signals to solve them.

Does anyone else feel pretty content with what they have?

Because this strategy I think Paul Graham has talked about in one of his essays for ideas. And to be honest, I do genuinely feel like I don't have much if anything to complain about, and so I can't really think of startup ideas. To the point where I'm just consulting at the moment because I can't think of any startup idea to work on.

I mean I have ideas of problems I want to solve - but they've all been met by massive resistance because they're huge problems. Like for instance one idea I had was I hate making food, but I don't want to eat out all of the time. Can you crowdsource cooking from your neighbors? So I tried building that platform. I instantly discovered there were huge safety regulations about cooking, and that really baking (or anything that isn't extremely perishable) is the only thing you can pretty much do out of your home and not get slapped by the state for violating health codes. So I'm just sort of defeated...the only problems I want to tackle just seem massive and I can't seem to find the divide-and-conquer algorithm to help the world in a smaller (but still meaningful) way.

<comment><USER3> I don't normally talk about this, but here is what you are missing:

Businesses that make (real) money revolve around one of two ideas:

\- They sell shovels

\- They are middlemen (middlepeople?)

They sell shovels.

This is stolen from the old saying that during the American gold rush the people who made the money were the ones selling shovels. Or facilitating others to go and do what they wanted (in this case, chase a wild dream).

Uber, the example you used, sells shovels. It lets people make money from their car. Real money. Not peanuts. Your idea to sell food to neighbors didn't have the potential to make much money. You weren't selling shovels, you were selling work (cooking is hard work).

Now, let's take your current business (which you list in your profile). You sell shovels because you help companies get what they what in terms of engineering management (lots of money to be made there). Better engineering processes usually trickles down into the finances. In a way, you are selling money.

They are middlemen.

A middleman is someone who simply takes a cut for facilitating something. They import beer from somewhere else and by doing that they jack up the price a little bit and resell it to you. This is a very straightforward mechanic.

Amazon is one of the best middlemen out there right now. It even changed the game by reducing the friction in selling online. Their whole "fulfilled by Amazon" approach is a classic middlemen tactic.

Middlemen sell the idea that they make getting what you want easier.

How to apply this to software

Selling shovels: Build a product that makes people money. Ecommerce is still growing. Do something there.

Be a middleman: Find something to facilitate. Look for inefficiencies. How? Listen to complaints. People love to complain to someone who listens. Make some contacts on social media and listen to people. They will show you the way.

One last thing: don't be stupid. Big ideas are tied to a big ego. You are not Musk, Jobs, or Gates. Who cares?! Look for small ideas that you can execute well. And then execute, not for passion or ego, but as a grind. Like a regular job. Because that's what it is. Good luck.

<comment><USER4> if I build a gam then what is it as shovel? people will not makemoney out of it. I'm also not a middleman because there's just me and the end customer, I vuilt it from scratch. So who am I?!

<comment><USER3> No, you are a manufacturer. You are producing a product from raw materials with the goal of turning a profit. The issue with this model, when applied to digital products, is that the tolerance for execution is diminutive. A good idea for a game with great art and music can easily turn into a failure if some of the game mechanics are off (See no man's land). Video games are one of the hardest products to produce.

It's important to keep in mind that selling shovels and being a middleman are not the only options. There are certainly others. Its just that my exoeriences and studies have pointed to those two being the most profitable in the current cultural setting.

<comment><USER5> And for games, becoming a middleman like Steam is where the profit is. They have less risk since they are just facilitating connecting game "manufacturers" to consumers. They aren't heavily invested in one game. If it's a flop there are others.

<comment><USER6> I wouldn't say "where the profit is." There is steam...what else is there? Microsoft/Sony/Google/Apple marketplaces? Those don't really count because they control the platform and essentially kill all the alternatives. Gog, humble bundle, and itch.io are a tiny fraction of steam.

</comment></comment></comment></comment></comment></comment><comment><USER7> Edsger Dykstra wrote one of his many famous notes on project selection[1]. In his case, it was choosing projects for scientific research, but his guidelines are definitely worth a look:

"Raise your quality standards as high as you can live with, avoid wasting your time on routine problems, and always try to work as closely as possible at the boundary of your abilities. Do this, because it is the only way of discovering how that boundary should be moved forward."

"We all like our work to be socially relevant and scientifically sound. If we can find a topic satisfying both desires, we are lucky; if the two targets are in conflict with each other, let the requirement of scientific soundness prevail."

"Never tackle a problem of which you can be pretty sure that (now or in the near future) it will be tackled by others who are, in relation to that problem, at least as competent and well-equipped as you."

[1] [http://www.cs.utexas.edu/users/EWD/transcriptions/EWD06xx/EW...](http://www.cs.utexas.edu/users/EWD/transcriptions/EWD06xx/EWD637.html)

</comment><comment><USER8> Customers are also a great source of project ideas. You can pick a customer, like "small business owner" or "wealth advisor," and interview them.

My favorite question that leads to ideas is "tell me everything you did from when you started your day until now," and dig into all the annoying/painful things they mention.

<comment><AUTHOR> Yes! In many ways, all your _initial_ idea needs to be is a launch pad. Once you get your foot in the door, you can always refine based on what users tell you.

Per your point, it's important to _learn from their workflow_ , not _ask them what they want_. When you ask someone what they want, they often perform attribute substitution ([https://en.wikipedia.org/wiki/Attribute_substitution](https://en.wikipedia.org/wiki/Attribute_substitution)) and answer a different question.

<comment><USER9> Great point. Also important that your customers may not even know what is _possible_ , so they won't know to ask for it directly. Instead, if we ask _why_ they want something, we can understand their intents - and translate that into technology.

We've seen this a lot with text analytics - instead of trying to repeat what humans do manually (reading/annotating), we try to understand the questions that clients are interested in (the drivers behind their current workflow).

</comment></comment></comment><comment><USER10> > validate your market

how do you do this? Smartphones existed as PDAs for 10-20yrs before iPhone. If I had shown someone my Sony Clie and said "if I make this work with your finger instead of a stylus, simplify the UI, and charge you $80+ a month for service would you be interested?". except for a few geeks like myself the answer would have been "no, that stuff is for geeks" for most people and yet here we are 10 years later and everyone has a smartphone.

So I don't really see how to "validate your market". I've got a few ideas I'm 99% sure would be successful given the correct marketing and PR but because they are new or at least new for a given country people tell me they don't get it, not interested. They might be right but it might also just something they need to correctly ibtroduced to.

Netflix comes up in my mind as an example. It seems obvious but if you'd asked Mom and Dad if they wanted internet movies 10 yrs ago theyd have looked at you like your crazy

<comment><USER11> Advice like "validate your market," strategies for chicken-egg problems, or the first point (start from a beachhead).... These are not the same as "get a good accountant" or "incorporate this way." They're not hurdles to pass with good advice in specific detail.

These are problems that need clever & creative solutions, and the answers usually aren't do exactly what you are doing now and also this thing. AirBnB started around conferences, momentary and local spikes in demand that let them solve chicken-eggs one user at a time, face to face. This gave them a beachhead strategy, a hardcore users strategy, chicken-egg strategy, a way of validating.

The iphone "boiled an ocean." A thousand man years spent in secret. A big product launch, after which everything about that market changed. It's not an impossibility, boiling a metaphorical ocean. But, it's risky and mostly out of bounds to a startup. If a startup wanted to do this, they'd need to find a different path.

There's a common Henry Ford quote (apocryphal, whatever) about the pointlessness of asking people. They would have told him to make a faster horse, supposedly. You can skip market validation in some cases, with historic products like the iphone, model T, teleportation, cure for baldness or magic sex dust.

A lot of startup advice is about leveraging the strengths of being new and flexible. For an Amazon, Walmart or GM, they are locked in to most of what they do. Startups can adapt everything around a smart strategy.

<comment><USER12> This is good insight, and I upvoted you for it, but it doesn't really answer his question. Validating your market is business speak for making sure that you won't lose a ton of money at launch, assuming your execution isn't horrible.

All you have to do is to collect some amount of interest through something like a landing page. It won't guarantee runaway success, but it won't break the bank either.

<comment><USER13> It does exactly answer the question. It's just that the answer is not what most people expect: an algorithm. Some problems have simple solutions, or simple explanations. Other problems require deep consideration and almost philosophical shifts in one's mind. There is no algorithm for this problem. This requires creative process. Creative process is impossible to describe in a couple of sentences in a way that will be enough to teach it to someone.

</comment></comment></comment></comment><comment><USER14> > One strategy is to think of annoyances you have in your life

In this way you will only end up with consumer products. I did this when I was 12 and ended up building a fully automated "egg cutting machine" which solved my annoyance (and created a ton more) but had little market value. The B2B market is huge. I am most interested in solving hard problems that large organizations have with their internal processes. Unfortunately I don't work for one, so the annoyances I want to solve are not my own.

<comment><USER15> The B2B market is huge, but still somewhat smaller than B2C. Look at the top tech companies by market cap today. Each is one that I've used as a consumer:

Apple, Google, Microsoft, Amazon, Facebook.

If you think the measure of dollars in top market cap companies isn't representative of companies a tier lower, this is likewise true for the highest value YC companies: Dropbox, AirBnB.

As a founder or an investor, it's important not to forget about B2B, but directionally, thinking B2C is correct.

(This is in contrast to, say, thinking of only game companies if you're a gamer; most tech company values are indeed not in games.)

</comment></comment><comment><USER16> A lot of us make the mistake of waiting for the "right" idea until we decide to pursue something. Huge mistake.

Joe Gebbia put it nicely by making an analogy to the "gym of entrepreneurship." Building a startup is one of those things that you need to work to get better at over time. Not many founders have many regrets but when they do express regrets it's usually them wishing they had started earlier. Here's Joes quote from his interview with Tim Ferris.

"People think we woke up and Airbnb was just created out of thin air. That couldn't be further from the truth. I hope if there's any takeaway from the stories that we've talked about today, it's that there's a long lineage of trying things, bumping into walls, getting rejected, failing, reframing that failure into learning, and trying to continue forward.

And so, by the time Airbnb came around, it was like I'd been in the gym of entrepreneurship for many years. So, it's like you don't wake up and just run a marathon all of a sudden. Nobody does that. You train for it. So, by the time it's ready for race day, your body is conditioned for it. Your muscles and your system – everything is ready for you to go run 26+ miles.

I think entrepreneurship is the exact same way. I think it's a misconception when people look at the magazine covers and they read the stories of a successful company and they think, "Wow, the people who started that, they built it and everybody came." That couldn't be further from the truth. I think "Field of Dreams" is probably the worst movie to ever happen to entrepreneurship. It created this idea, like, "Oh, wow, if you build it, they will come." I can tell you, if you build it, they don't come.

It takes this incredible perseverance and sometimes irrational belief in yourself to bring something to life in the face of lot of adversity and a lot of people saying it can't happen. So, I hope if there's any takeaway from the stories that I shared today, it's that the simple act of spotting an opportunity, coming up with original solution and then taking that third, hardest step of putting something into the world, of trying something, putting your idea into practice – it doesn't have to be the big idea.

It's just about being in the gym and doing a rep, the gym of entrepreneurship, doing curls or something. It's just getting in the habit of those three things. You spot an opportunity, you come up with an original solution, and you put your idea into the world. And the more you can do that, the better you are at spotting the next opportunity. Airbnb just happened to be a part of the lineage of all the things I've told you that happened before it."

<comment><USER17> There was an article on here a little back about how stories like "Netflix founder got a fee for returning a movie late and got the idea to start netflix" are entirely misleading.

Everyone has problems, and everyone has ideas how to fix them, especially in the consumer products space. Everything outside of the idea itself, like marketing, execution, finance, and customer support are all things that take practice, or reps as you say, to gain experience which hopefully leads to instinct.

I think we like these tales because they exaggerate the importance of an idea.

</comment></comment><comment><USER18> I used to make ultra-low budget short films, and I feel like there's a lot of crossover between planning those projects and planning a product.

One lesson I learned: make a list of your assets and consider them when deciding on a project. Your assets include the things you own, the skills you have, and the resources of your network. By creating a project around these you can maximize your production value, and make a project that no one else could have made on your budget.

I recently realized that my love of rap, and my connections to the local community of rappers and hip hop producers, is a huge and unique asset in the software industry. I'm currently working on a product for rappers, that also serves as a platform for producers to make money and advertise themselves. My network has made it really easy to solicit feedback from both my target audience and my target content providers, and create mutually beneficial zero- cost licensing agreements.

So far, the response has been huge, lots of passionate support and interesting suggestions.

</comment><comment><USER19> Many times when people ask what to build or work on (much like the author) are told to focus on things they need - Scratch your own itch! Lately I haven't really found many things to focus on working on due to this. I highly doubt I can think of many things in my life that would be close to a "stand up comedy routine".

I mostly just want to figure out something I can work on in my spare time to learn outside of work. It doesn't have to be a business (although I wouldn't be upset if it eventually turned into that), but even having a userbase would be a fun experience.

</comment><comment><USER20> > Focus on the repeat offenders. The ideas that you keep coming back to.

I totally buy this. Linked to it, I think the it's good to be able to entertain obviously bad ideas for a short while. You think of an idea because of some set of underlying prompts, so even if the idea as a whole doesn't have legs, there are often insights lurking somewhere in it that you'll end up coming back to.

<comment><USER21> I'm worried though this statement is heavily colored by "survivorship bias"\- Certainly ultra-successful people are often obsessed with their ideas, but it does not logically follow that being obsessed with an idea is a good metric to base decisions on. Just look at all the people obsessed with writing the great American novel and/or next hit song.

I think what is more important is to focus on ideas for which you have a comparative advantage ([https://en.wikipedia.org/wiki/Comparative_advantage](https://en.wikipedia.org/wiki/Comparative_advantage)) which frequently, but certainly not always, will mean there's a certain amount of obsession as a side-effect.

<comment><USER22> perhaps it's not the obsession of the idea that counts but rather the obsession with the Problem you want to solve.

</comment></comment></comment><comment><USER23> I like the idea of just decide on something to build and than build it. Worst case scenario you get a learning experience. And I like building things I enjoy or products I really wish I had. So I get benefit in that way. With software inputs outside of labor are low, so you won't lose out financially in most cases.

<comment><USER24> That is FAR from the worst case scenario.

<comment><USER25> In your opinion, what would be the worse case scenario?

<comment><USER24> Just because you learn something doesn't mean the time isnt wasted. If you try to make a business of it and it doesn't work...more wasted time. Wasted relationships. Wasted money. Wasted confidence.

I'm all for the silver lining of having learned something. That's good for sure. But there are almost always costs when building anything from model cars to software applications.

<comment><USER26> > Wasted confidence.

This is probably the biggest factor (money is the least). I've had numerous failed projects. I have a current project/business (it's in my profile) which I believe to be in the process of failing. I don't know if I have another one in me.

Sure, I've learned a lot. From a purely technical standpoint, each new project has been superior to the one before - and in the case of my latest, I've at least produced something that _I_ find useful. But, the ego can only take so much abuse.

Not sure I trust myself with ideas anymore. I need someone to tell me what to build :)

<comment><USER24> After my first startup went down in a burst of flames I spent years angry at everyone and everything like a big black tumor carried inside my heart. It sounds dramatic but that doesn't make it untrue. I learned a lot but I lost a lot more.

<comment><USER27> I currently have one of these tumours.

<comment><USER28> Take some time off, do something totally different. After my biggest fail I spent 3 days in water filled caves. New experience partially erased these bad emotions. But they are not completely gone even after 10 years.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER29> To quote from the text:

"Focus on the repeat offenders. The ideas that you keep coming back to. When I think of a new idea, I get deeply infected with it. It takes over my mind. It's all I can think about. Over time, most of the ideas fade. But a choice few keep on coming back. Pay attention to those. You know you've got something good when you're thinking about it in the shower.

Tell your friends what you're doing. This accomplishes two goals. First, you'll refine your idea. Conversation is a very powerful way of sharpening your own thoughts. Second, you'll find yourself more motivated to finish your project. Another common refrain I hear is "I'm not good at self-motivating myself". All this means is that you just don't see the benefit of doing a certain thing. You can hack that feedback loop by committing to others (especially people you respect), who you won't want to let down.

Make sure you enjoy thinking about it. Your primary edge as a founder will be the number of hours you spent thinking about the specific problem. Over time, you should accumulate more hours than almost anyone on earth. This will only work if it doesn't feel like a chore. If you genuinely are fascinated by the problem."

The problem is: I love to think (and sometimes solve) deep mathematical questions. I also love to talk about them all the time. The problem is: hardly anybody except me seems to care about them. So it does not seem like a good startup idea, even though it satisfies the critera.

<comment><USER30> > The problem is: hardly anybody except me seems to care about them.

I'm not so sure. Being able to solve hard mathematical problems probably is a niche problem but that doesn't mean you're the only one experiencing it.

Fortunately, it's not limited locally but can easily be tackled at a global scale, i.e. by addressing potential customers around the world.

I'm pretty sure there are plenty of people interested in pondering deep mathematical questions and quite a few might be willing to pay a monthly fee for having access to a community that helps them with doing so.

There are all sorts of online communities for all sorts of weird and extraordinary stuff. Why not one dedicated to solving hard mathematical problems?

</comment></comment><comment><USER31> I'd like to see more discussion about different strategies for how to manage and live with your "idea faucet".

When day after day, you frequently notice people's "pain points", and low- hanging opportunities for reducing system dysfunction, you quickly accumulate a backlog. Which makes it a triage problem. With the associated burdens of "I think I see how I might make this better... and instead I'm going to walk away".

As health professional, you get advice and support on dealing with your limits with respect to people's often unhappy outcomes.

We don't seem to do that much.

There's some around a consultant's limits of professional responsibility. There's hierarchical workplace subordination - "above my pay grade", "not my call". And professional craftsmanship. There's a lot of entrepreneurial mission focus - find one viable/important idea to pursue, and focus narrowly on that. And the seemingly common "it's just a job, to support things like family, that actually matter".

Around here, there's a lot of upbeat use of status quo as baseline. If my product helps people, it's a win. If it doesn't, a null. Anyone else's problems... they're not my market, not my problem.

Market opportunity root cause analysis sometimes turns up a happy "A just hasn't talked to B yet". But sometimes turns up noisome tangles of "I'd be fine with not having seen this" ugliness.

I've seen a great many posts on finding your first viable idea. But I've seen very few posts on remaining ok with leaving the idea faucet running, once it gets going.

</comment><comment><USER32> I like the advice to actively record your ideas (every little one). Thinking about things in abstract, it can seem like all the good problems are solved, but listed out on paper it is a lot easier to analyze and notice patterns.

</comment><comment><USER33> "everything in the world was created by people no smarter than you".

Is there actually any validity to that? Assuming you is a human of average intelligence...

<comment><USER34> I think this quote is less about the majority, or the absolute truth and more about encouraging that one person who is to not get tripped up on the way there. It may not be true for most, but it's true for a few, and those few need encouragement and support to change the world.

<comment><USER33> I think you are right that people do not need much encouragement. I still don't think saying that most successful people are of average intelligence is a "smart" thing to say unless it is true. I don't think it is true at all but I was opening up the floor for a fact or two. In the end, whatever helps someone make a net positive change is good so maybe i'm just being annoying :)

</comment></comment></comment><comment><USER35> The best bit of advice I saw (on HN no less) that helped frame this in my mind was "every spreadsheet is an opportunity". This was in reference to processes within a company, where employees use spreadsheets to manage data, etc.

</comment><comment><USER36> I don't believe it's true that "you are whatever you tell yourself you are". Obviously you don't change if you tell yourself you're this or that because it takes more than that to change yourself. And also, this sounds like something you'd read in The Secret: all it takes to make something happen is to believe in it or think of it.

However, this is most likely not what Daniel really meant. In the same paragraph, he refers to a person who literally doesn't believe that they have the idea-generating ability. So then, what he really meant is related to someone's belief in their possession of ability to do something or make something happen. In other words, their belief in their power.

So, a better articulation would be: your belief in your power affects your power. Which makes sense; if you don't actually believe you have power, you won't try to use it, and you'll have effectively crippled your power.

This comment might seem trivial at this point, but I think the principle behind it is important. Namely, the principle of precise and accurate articulation of thought. The new articulation I presented is accurate, empowering, and useful. A person can directly use it and it will have a positive effect. The old articulation is confusing, inaccurate, and untrue, which I don't intend to say as an insult or an attack, but rather intend to say as an accurate description of how I understand it.

Now, you might think, "I understood what it meant given the context, and so did you, so what is the point of accurately articulating it?" I believe it is true that I understood it given context because I believe that's how I came to form the new articulation. However, the effect of understanding an idea from an inaccurate phrasing or wording is that the person doesn't have a proper articulation to give form to the idea, and so it stays formless, in the subconscious, and cannot be directly used, and the person isn't consciously aware of it. The only effect it has is that it influences conscious thought and requires annoying deconstruction of thought patterns to catch if it's a bad idea ("Why do I think that?").

In contrast, proper articulation increases a person's consciousness, self- awareness, power, and gives life and color to their minds as thoughts are being fully expressed (expression leads to colorfulness, lushness, etc. etc.). So your PSA for today is: strive for precise, accurate articulation in all of your thoughts. :)

</comment><comment><USER37> I've always had lots of ideas, just none I've wanted to follow through on, now I'm in the early stages of an idea I think will be useful ( at least it will be for me ). It's an idea that was simplified out of another idea that's just too large for me to tackle at the moment. In fact it's an idea that's been part of a variety of other ideas. It's also part of a number of other peoples products, and is probably one of the trickier bits of their products, but it's not a product in itself.

So, at the moment, my market size is at least 1, because I want it.

Odd thing is, given I have free range on everything, I'm suffering tech choice anxiety, which is slowing me down a bit.

<comment><USER38> Use C#.

<comment><USER37> I am using C# on both .net core and framework for the bulk of it.

<comment><USER39> Are you running into problems because of it? Or what's causing the anxiety?

</comment></comment></comment></comment><comment><USER40> I totally agree with this entire article, however the author may want to fix this awkward sentence: "Travis Kalanick started Uber was a hack to split a few private cars with his friends."

</comment><comment><USER41> I'd love to have a peek at Daniel's idea list :)

</comment><comment><USER42> Find the duct tape.</comment>


A New Way to Capture and Convert C02 Efficiently Has Been Developed - <AUTHOR> https://interestingengineering.com/a-new-way-to-capture-convert-c02-has-been-developed <comment><USER2> Uhhhh... plants?

> One of the greenest approaches to carbon capture is to recycle the carbon > dioxide into high-value chemicals, such as cyclic carbonates which can be > used in petrochemicals and pharmaceuticals

HAHA! Yeah petrochemicals and pharmaceuticals. Sounds super greeen, if by green you mean $$$.

<comment><USER3> Would you mind reviewing the site guidelines and sticking to them when posting here? They ask commenters to avoid snark and the flamewar style.

[https://news.ycombinator.com/newsguidelines.html](https://news.ycombinator.com/newsguidelines.html)

<comment><USER2> You are literally the biggest troll of all. Stop trying to be China.</comment></comment></comment>


iCab: Alternative Browser for macOS - <AUTHOR> http://www.icab.de/ <comment><USER2> Wow, I helped translate this (well, the iOS version) into Czech many many years ago! I'm glad it still exists, the author — Alex, if I remember right — is very friendly and a great developer.

It was my first "freelance" project; I didn't even expect him to pay, I just liked his browser and wanted to feel like a grown man (was 14 at the time). But he insisted he'll pay me; it was the first money I ever made. Ah, good memories. If the author sees this: Good luck!

<comment><USER3> wholesome story! :)

</comment></comment><comment><USER4> Anyone remember the "Make iCab Smile" campaign? The UI featured a little smiley face in the corner that would change to a frown if there were too many HTML validation errors.

<comment><USER5> I remember!

</comment></comment><comment><USER6> iCab Mobile is also one of the only truly unique iOS browsers. Was the only way to reliably download multiple files for years on iOS, and today still is the closest to having browser add-ons in iOS. Supported uploading files long before Safari too. Its custom zoom levels made many web apps usable on the original non-pro iPad screen sizes as you could fake a higher resolution screen (and you could change your user agent if websites refused to show their desktop version). You can tweak iCab's interface quite a bit too, which makes it a great way to make an internet appliance of sorts to show a single website without having extra toolbars and stuff.

It's not my default browser, but is a great tool to keep around!

<comment><USER7> Aren't all browsers on iOS using WebKit by Apple decree? I mean the ones you get via AppStore, at least.

<comment><USER8> That is correct. It means that as a web dev, you can only use IOS for testing webkit.

</comment></comment></comment><comment><USER9> I personally use iCab for using the internet on classic Mac OS machines. Very useful, as it's the most recent browser supporting them.

Other than that, I'm not usre if this is worth the effort on usual machines... I would recommend Safari instead.

<comment><USER10> How does iCab compare to Classilla? Which itself is very out of date.

[https://www.floodgap.com/software/classilla/](https://www.floodgap.com/software/classilla/)

<comment><USER11> Classilla handles modern pages better, but iCab has better performance/memory usage

<comment><USER12> That's how you would describe the Lynx browser or curl. Way better performance and memory usage but much lower ability to handle modern pages.

</comment></comment></comment></comment><comment><USER13> I used to use this in college before I switched to Camino!

<comment><USER14> Oh my God, I loved Camino so much! The browser scene for the Mac in the early Aught's was such a mess. Netscape was bloated, slow as hell, and wasn't keeping up with standards. IE was great, but you were always suspicious of MS's agenda. Safari was still a bit rough and lacked a lot of features.

Camino was snappy, clean, and had very good standards compliance. Such a great little browser!

<comment><USER15> Do you remember Shiira? :)

<comment><USER16> Nostalgic! Very fast and interesting, and I like the style of it. I used that and Camino but Omniweb was my favourite browser. Had features I wish other browsers had now, and if they do it's not as easy, the interface was great.

I actually paid for it. Sad that there's not much to choose from nowadays.

</comment></comment></comment></comment><comment><USER17> I can't believe it still exists!

<comment><USER18> Agreed! Have you ever built anything on it? Like extensions or plugin of some sort

</comment></comment><comment><USER19> I recognise it from Mac OS 9 days, and downloaded it to try it again now.

Something I miss from Safari on Mac OS 10.9 was seeing full names in the tab bar. iCab, Chrome, and Firefox all shrink tabs down to their favicon.

Old versions of Safari would show the whole name, and if there wasn't space, it would overflow into a dropdown list on the right.

Yes, you probably can accuse me of opening too many tabs, but I have an amusing anecdote about how I recovered some front-end dev work from tab source when our DigitalOcean server crashed a few weeks ago.

<comment><USER20> What workflow could you have that your dev work on a DO server would be lost if you didn't have the html in your browser? Are you direct editing apps on a DO server with no source control?

</comment></comment><comment><USER18> Good to see iCab is still around. For reals, kudos for perseverance!

</comment><comment><USER21> I remember Cab for the TT and Falcon. I had not realized it went on to become a Mac browser.

A shame, in a way, that the web is now so complex that alternative browsers are ever more marginalized.

</comment><comment><USER22> Apparently it switched to Webkit a while back.

<comment><USER23> Why does this keep happening? Browsers sell their soul to just be another coat of paint on top of WebKit. I honestly don't get it. If you're working on a web browser as a personal or open source project, switching to WebKit is basically just replacing the entire project that you've worked on, and then writing your name on WebKit. There's not much more to a browser than a rendering engine. There really isn't a killer feature that Chrome won't just absorb anwyay. So why on earth would you decide to throw away your years of effort, and solely try to differentiate yourself based on slight variations in how your back button looks or your bookmarks work!?

<comment><USER24> Presumably because doing anything else is just impossible in this day and age.

There are only two-and-a-half actively-maintained rendering engines in existence: Gecko, and Chromium/Webkit. There's a reason for that. A single person isn't going to be able to maintain their own.

<comment><USER25> There's also Netsurf, Dillo, as well as Links and the rest of the text-based ones.

The monopoly should definitely be fought.

<comment><USER24> Are those actually usable as a primary/only browser in 2020?

Unfortunately, I think the best way to fight the monopoly at this point is to use Firefox. As bad as 2½ browsers is, I'd much rather have 2½ than 1½.

(On desktop, webkit is also fine, they need marketshare there. Anything that isn't Chromium.)

<comment><USER26> I still don't understand the "fight the monopoly" argument. Should I use Windows Server or FreeBSD to fight the "Linux dominance" monopoly?

<comment><USER24> The problem is that, the web isn't really an open standard if there's only one implementation of the standard. The standard just becomes "whatever works in Chromium".

It also gives Google the power to unilaterally add or remove anything from the standard as they think will benefit Google. Sure, Microsoft or Brave could choose not to go along with the change, but Microsoft doesn't want to spend resources maintaining a fork, so they're much more likely go go along with whatever Google does.

</comment></comment></comment></comment></comment></comment></comment><comment><USER27> Anyone remember the browsers that made you small amounts of money per hour for using them to surf the web?

<comment><USER28> AllAdvantage? (probably showing my age here)

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

<comment><USER29> I forgot all about this... blast from the AOL past.

</comment></comment></comment><comment><USER30> This browser seems more customizable to me: [https://next.atlas.engineer/](https://next.atlas.engineer/)

Based on iCab's homepage, it's unclear why would I want to use it really.</comment>


Knuth–Morris–Pratt algorithm - <AUTHOR> https://en.wikipedia.org/wiki/Knuth%E2%80%93Morris%E2%80%93Pratt_algorithm <comment><USER3> I've always liked the elegance of this algorithm, fun little example of how you can make things incredibly fast by thinking about your problem.

And a related anecdote: I was interviewing at Apple for a systems development related role (graphics drivers, I think?) and one of the senior-level folks asked me to write strstr on the whiteboard. I started with a naive, working implementation, then he asked me how I'd optimize it. I said 'knuth morris pratt' and gave a basic overview of the algorithm and explained how it's faster.

He insisted the algorithm couldn't possibly work. I spent a few more minutes trying to explain it, but I couldn't convince him. The dark magic of efficient string searches evades us all sometimes, I suppose. I always like coming away from an interview feeling like I learned something, so I hope he googled the algorithm later. :-)

<comment><USER4> That's the risk with interview questions, that the candidate suggests a better solution that the interviewer anticipated. Leaving the interviewer with the task of ascertaining whether the solution is correct.

<comment><USER5> I _love_ to be surprised like that in interviews, let me tell you. Makes my decision much easier.

<comment><USER6> > Makes my decision much easier.

You didn't say which way, I've worked with and for people who wouldn't hire someone smarter than them, the human psyche is a dark place.

<comment><USER7> That's true. On other hand, it's just for the interviewees own good - <USER2> don't want to work with people like that ;) except from megacorps with hundreds and thousands of devs

</comment></comment></comment></comment></comment><comment><USER8> Why is KMP on the front page of HN? Not complaining, just confused. Is this related to some other news?

<comment><USER9> It's a weekend and other material surfaces.

<comment><USER10> Yup welcome to the slow hours in the weekend on HN. Personally, I like the change.

</comment></comment></comment><comment><USER11> I have implemented KMP in Haskell. This version doesn't use any index! It is built purely functionally by realizing KMP's failure table is just a finite state automaton(well, almost...) However it is much longer than the C++ version...

Code: [https://github.com/Mgccl/haskell- algorithm/blob/master/KMP.h...](https://github.com/Mgccl/haskell- algorithm/blob/master/KMP.hs) Description: [http://www.chaoxuprime.com/posts/2014-04-11-the-kmp- algorith...](http://www.chaoxuprime.com/posts/2014-04-11-the-kmp-algorithm-in- haskell.html)

Actually, KMP is a little harder to program purely functionally than the MP algorithm. An extremely elegant MP algorithm is implemented here: [http://twanvl.nl/blog/haskell/Knuth-Morris-Pratt-in- Haskell](http://twanvl.nl/blog/haskell/Knuth-Morris-Pratt-in-Haskell) (Note it says the algorithm is KMP, but it is actually the MP algorithm).

The Aho–Corasick string matching algorithm is a generalization of the MP algorithm. Which I also coded in Haskell inspired by the MP code above. [https://github.com/Mgccl/haskell- algorithm/blob/master/AhoCo...](https://github.com/Mgccl/haskell- algorithm/blob/master/AhoCorasick.hs)

<comment><USER12> Looks like there's also a KMP implementation here specialized to ByteStrings: [http://hackage.haskell.org/package/stringsearch](http://hackage.haskell.org/package/stringsearch)

</comment></comment><comment><USER13> KMP is conceptually very cool, as well as other clever string searching algorithms (BM, RK, AC), though one of the questions for me always was if even its most efficient implementation wouldn't be always slower than executing a brute-force combination of REP CMPSL/CMPSB instructions (x86) for vast majority of searched strings?

<comment><USER14> The time complexity of KMP is O(n), while the complexity of your idea is O(n^2). Considering the fact that KMP is not even doing a lot of things in its inner loop, (few memory accesses), a rep cmpsb approach is really no match for it, even in the trivial cases.

So no, it's much faster.

<comment><USER13> I know about the time complexity, but my argument points to the CPU architecture and cache/branch prediction efficiency.

KMP has a lot of branching which is more expensive than a simple cache (line) hit, cache REP CMPSx doesn't have any branching, aborts immediately after a mismatch with only a single loop over the starting position, search is also pretty much linear. This is not a Turing machine where it is being executed ;-)

So in theory KMP is faster, in practice for not very large strings I am really not sure... There are plenty of optimal algorithms where the fixed cost is too high for majority of useful cases comparing to less optimal algorithms with very low fixed costs. Does KMP have as much "mechanical sympathy" to overcome specific machine code instructions for most frequent cases?

<comment><USER15> This depends completely on your needle and your haystack. If it's the string "ABC" in "QABC" then certainly the naive algorithm will be the fastest.

"Mechanical sympathy" unfortunately is easily misinterpreted to mean to only listen to the machine. Remember though that Martin Thompson is alluding to Jackie Stewart and Formula One racing. All of the cars competed on the same track. But you wouldn't enter a Formula One car for the Baja 1000.

In fact, I don't think you should use term unless you have a specific goal in mind. KMP is only best for certain classes of searches. Boyer-Moore is used for others. And there are plenty of other algorithms with there own pros and cons. See [http://www-igm.univ-mlv.fr/~lecroq/string/index.html](http://www- igm.univ-mlv.fr/~lecroq/string/index.html) for descriptions.

Python, for example, uses (or used?) the algorithm described at [http://effbot.org/zone/stringlib.htm](http://effbot.org/zone/stringlib.htm) , for the reasons listed therein.

</comment></comment></comment></comment><comment><USER16> KMP starts with the first character of the pattern (or substring/needle) and then jumps forward by the length of the mismatch. A related algorithm is Boyer-Moore (BM)([http://en.wikipedia.org/wiki/Boyer–Moore_string_search_algor...](http://en.wikipedia.org/wiki/Boyer–Moore_string_search_algorithm)), which operates the other way round: it begins with the last character of the pattern and then compares backwards until the full pattern matches. The advantage of BM is that it allows for bigger jumps.

It seems that KMP works well for small alphabets (e.g., DNA), whereas BM shines for larger alphabets (e.g., plain English).

<comment><USER17> One difference is that BM is O(m*n) while KMP is O(n + m). Depending on how the input string looks like, this can matter - especially in small alphabets where the likelihood of pattern repeating themselves are bigger.

<comment><USER18> BM is too provably O(n + m) (and without dependence on alphabet size unlike KMP) if you apply two heurestics that I don't really remember. For some reason it's not mentioned on wikipedia.

<comment><USER19> Turbo BM?

[http://www-igm.univ-mlv.fr/~lecroq/string/node15.html](http://www-igm.univ- mlv.fr/~lecroq/string/node15.html)

</comment></comment></comment></comment><comment><USER20> Here is the boost implementation: [http://www.boost.org/doc/libs/1_55_0/libs/algorithm/doc/html...](http://www.boost.org/doc/libs/1_55_0/libs/algorithm/doc/html/the_boost_algorithm_library/Searching/KnuthMorrisPratt.html)

<comment><USER21> Here's one in Go :-)

[http://play.golang.org/p/chYGT69vBc](http://play.golang.org/p/chYGT69vBc)

</comment></comment><comment><USER22> I always wondered why most common KMP and RE implementations don't take into account the case of using streams instead of strings. That's why I ended up writing this article (with code) "Searching for Substrings in Streams: a Slight Modification of the Knuth-Morris-Pratt Algorithm in Haxe" [1] and adding information about a currently unsupported RE lib that take into account streams.

Hope this helps.

[1] [http://blog.databigbang.com/searching-for-substrings-in- stre...](http://blog.databigbang.com/searching-for-substrings-in-streams-a- slight-modification-of-the-knuth-morris-pratt-algorithm-in-haxe/)

</comment><comment><USER23> A few months ago I stumbled on James Morris' GitHub profile [1] by accident. There's not much activity, but he has dabbled with Ruby on Rails.

1: [https://github.com/jhm15217/](https://github.com/jhm15217/)

</comment><comment><USER24> The FM-Index changed the way I think about searching.

[http://alexbowe.com/fm-index/](http://alexbowe.com/fm-index/)

</comment><comment><USER25> I learned about this algorithm recently, because of an exercise in the Rosalind bioinformatics problems list: [http://rosalind.info/problems/kmp/](http://rosalind.info/problems/kmp/)

There are tons of other interesting algorithms put in practice in different bioinformatics problems.

</comment><comment><USER26> Here's an easy to follow video explaining the algorithm: [https://www.youtube.com/watch?v=rfisBOOLN9M](https://www.youtube.com/watch?v=rfisBOOLN9M)</comment>


Sega Genesis Mini Launching Sept 19 - <AUTHOR> https://www.theverge.com/circuitbreaker/2019/8/14/20804515/sega-genesis-mini-retro-console-preview-hands-on-launch-date-games <comment><AUTHOR> I do think this (and the other similar systems) are pretty cool and a lot of fun but I'm becoming more and more worried about the environmental impacts.

From the article, "For many people, they're little more than cute distractions that end up on a shelf after just a few play sessions. But for many other players, these machines are accessible and affordable tools for exploring classic games, and the Genesis Mini is a great showcase for that."

Should we really be buying more things that are going to sit on our shelves and should they be produced? Why not partner up with Google Stadia or some other provider to piggyback off an existing system people have to minimize waste?</comment>


Making a Window Manager (part 1) - <AUTHOR> https://www.thregr.org/~wavexx/rnd/20180420-window_manager_part1/ <comment><USER2> I was expecting a tutorial on writing a GUI window manager. This manages physical, on-the-wall windows.</comment>


Ask HN: Putting most of your home directory in version control? - <AUTHOR>

Dean HNers, Any of you tried putting most of your how directory under version control?  I've always wanted to do this (though TimeMachine and Netapp versions are really nice also).  I figure the only obvious open source choice is GIT as CVS and SVN write dot files everywhere and BZR and HG are said to not handle multiple GB.  On OSX I am trying the experiment (excluding super large stuff like media, obvious places programs write caches like Library).  It seems to work- anyone else care to share such an experience? <comment><USER2> I have my dotfiles and bin directory in a git repository on github. This makes setting up new machines easy, and ensures I have the same great settings on all my machines.

For other home directory stuff: documents, ebooks, etc. I store that in Dropbox. It syncs when you're online, yet works perfectly when you're offline and keeps previous versions automatically (not every change, but ever hour or so, iirc).</comment>


Vitalik Buterin to the "Ethereum is useless" crowd - <AUTHOR> https://www.reddit.com/r/btc/comments/6ldssd/so_no_worries_ethereums_long_term_value_is_still/djt6opz/?context=3 <comment><USER2> > Us: Starts publishing core dev meetings so people can see what the decision- > making process looks like. Spoiler: no, it's not centralized.

Transparency is orthogonal to centralization. I didn't watch the video -- do they do some sort of in-person distributed consensus of the Ethereum network during the meetings?</comment>


Using a Mac in a modern .NET world - <AUTHOR> https://medium.com/mledger/using-a-mac-in-a-modern-net-world-36297a87f664 <comment><USER2> I also develop with .NET on OSX, using Rider. The only annoying thing so far was storing the connection strings in those json files— I think using env vars in build configurations is better.

I can't say much other than it's been really nice. To make my workflow smoother, I remapped my right CMD key to hyper (ctrl+alt+cmd) using Karabiner, and then added Hyper+[1-6] shorcuts for switching workspaces. I also use chunkwm to add a wm-like experience to OSX.

I work remotely, so I recently set up sql server via Docker for when I don't have internet. The intro guide by microsoft made it rather easy, and now I have the benefit of not needing to connect to the corporate VPN for dev anymore :-)

Programs I use:

* Insomnia (better than Postman)

* Azure Data Studio (testing sql server queries)

* JetBrains DataGrip (reading/fuzzy searching through stored procedures)

* Dash (offline documentation)

<comment><AUTHOR> Nice, I'll be trying out Insomnia soon.</comment></comment>