The Eighth Dirty Word – "Just" - <AUTHOR> https://blog.forrestthewoods.com/the-eighth-dirty-word-just-2d2386850cda#.awx35lon2 <comment><USER2> _When your first reaction is to interrupt with "can you just" you're implicitly calling your co-workers stupid. Because if they weren't stupid then they'd have figured out the solution in under a second like you did._

Sure, many common patterns of speech can be insulting if you're this uncharitable in your interpretation. Just like the speaker should consider how the listener will interpret their words, the listener should consider the speaker's intent, and give them benefit of the doubt. Communication is a two- way street. A more charitable interpretation would be that the "just"-sayer is actually asking a question: "Can you explain to me why you didn't do _X_ , I feel I'm missing something". The difference between that question and "why didn't you just do _X_?" is more a reflection of the tone of the conversation and the speaker's mood than of the speaker's opinion of you.

Personally I'm always worried about how the least charitable listener might understand my words, but while it's a useful communication skill, it's also a curse: it puts a barrier of distrust between me and the people I'm speaking with, and often results in overly-formal sounding communication. And, of course, the least charitable listener will interpret formality as pretentiousness.

<comment><USER3> Exactly. Many times I'll ask people from another domain, "Why can't you just...", so that they can explain why that seemingly simple idea won't work. And I know full well that it won't, I'm just not sure why.

But another problem with the idea of banning speech is that "just" recognizes that there are levels of complexity, effort, and risk. No, there is never a solution so simple that it is zero effort and risk. But there are certainly some solutions that have more or less effort and risk than others. And if you're asking if you could just do something else, you're implying that the something else is less effort or risk - not zero effort or risk.

I have worked with people that have a similar approach as never say "just" in that they insist that every problem is hard and should never be trivialized. That's a reasonably wise stance to take as a default in software development, but kills the recognition that some approaches are, in fact, easier than others.

</comment></comment><comment><USER4> If someone asks "Can you just..." and you can't do it for some reason, then can you just explain it to them why you can't do it? Getting mad about doesn't solve anything and passes up a great opportunity to fill in their missing information.

<comment><USER5> Possibly. On the other hand, my experience with 'just' is symptomatic not of a knowledge gap, but an _understanding_ gap. A knowledge gap might exist between two peers with similar levels of domain knowledge but slightly differing portfolios, and can thus be resolved quickly via reference to mutually understood reference points. Two astrophysicists might have a knowledge gap between each other.

An understanding gap is more like a model gap; the people between which the gaps exist usually have entirely different domains with different useful models. An understanding gap might exist between a salesperson and a developer, or a chemist and a biologist; there might be shared reference points to serve as foundations for bridging the gap, but they're much further up the ontological hierarchy, as it were, and may require entire reconstruction from first principles in the worst cases. This leads to interesting conversation and personal development, for sure, but it's also not a way to quickly resolve what may be a pressing issue. Closing an understanding gap might take a four-year degree, or at the very least, weeks or months of reading and learning.

I agree that getting mad about it is not the way to go; but this latter case is where 'just' is most dangerous; to get a bit Rumsfeldian, the unknown unknowns on the part of the 'juster' often run very deep, and would require extensive education to mend.

<comment><AUTHOR> This is my favorite comment to my post. On HN or else where. Thank you for sharing.

</comment></comment></comment><comment><USER6> I tell my junior devs this heuristic: "whenever someone says the word 'just', that is going to be the hardest part of the project".

Is it always the case? No

Is it frequently the case? Yes

The reason I found is that the person doing the explaining is:

* hand waving over some complicated detail (e.g "just get the info from the accounting software", but there's no API for that software)

* thinking fuzzy (e.g. conflicting requirements "just update the struct" when doing so adds a race condition or is updating an immutable object)

* forgetting that computers and humans have different notions of "easy". (e.g "You just have to pick the person's faces out of the image") (I should probably update my example here)

It's almost always worth further exploration into what the other person means by "just do..." as an up-front exercise.

<comment><USER7> I'd expand the jar to include "Simple" alongside "Just".

I have learned over the years that Simple means: no one has spent time thinking about it.

Simple means you are going to have to implement it alone, and take business decisions that aren't yours to take (and have to maintain the associated unstable code). On top of that people are going to question your abilities for taking so long.

</comment></comment><comment><USER8> I understand where you are coming from but usually a naive and simple 'just', especially coming from an outsider can be exactly what you need. Maybe you are so entangled in the problem that you've lost the proverbial forest.

<comment><USER9> Can you cite an example from your own experience where someone saying 'can you just' worked for you?

<comment><USER10> Has that never happened to you? You are stuck on a problem for what feels like forever. It's complex and difficult to keep completely in your mind at once. You've hit it from every facet that you can think off. Then you explain it to someone that knows very little of the problem and they throw out a little perspective, maybe preceded with a "Can you just..." and it may not be the solution, but your mind sort of jump starts down a different path than it had before.

I see this "Can you just..." business similar to the advice that you just stop working on the problem that you can't solve and think about something else for a while. Take a nap, go for a walk, have a drink. Wait until tomorrow. Often times the problem isn't that the problem is difficult to solve or that it's complex (it is), but rather that you are too mired in it to come up with the solution. "Can you just... " suggestions often pull me out of the trees so I can see the forest.

</comment></comment></comment><comment><USER11> From the list of the rules they have it feels like they don't have a problem with 'just' questions, they have a problem with people and organization culture. Seriously, banning any mentions of Rust (see "bonus points" section)?

If you have people being a jerks too often then you are missing healthy environment.

Personally, when I'm asking a series of "just" questions I'm expecting one of the following scenarios to happen:

1\. Less likely - the problem gets solved with a stroke of insight / fresh idea

2\. More likely - I get better understanding of the problems involved, why it is more complex than it seems at first, and ultimately "level up" my expertise, which benefits the company.

</comment><comment><USER12> Sure, maybe if you're looking for reasons to take offense, "just" is one you could take offense to. But ultimately I think if we all are walking around on eggshells to the point we can't say that word, that's a much worse environment than one in which people say "just".

Besides, just because you take away the word doesn't mean they can't say it. Removing the word just makes it harder to recognize when people do it.

</comment><comment><USER13> Then how do you ever stop someone over-engineering, or building things you aren't gonna need? "Can you just..." is exactly the right question to ask to pull someone back from that trap.

Can you just solve the problem you know about and worry about the edge cases you suspect you'll run into later? How do you know that solving for that problem is important? Don't try to build a complete system in one go, build something that just solves part of the problem.

<comment><USER14> Isn't this what the "Yes" section of the article covers?

<comment><USER13> Not really. My point is that 'just' is a critical part of incremental development. Having a swear-jar for any time anybody uses the word means you're basically banning asking sensible questions.

<comment><USER15> No question in the world requires "can you just" in front to be asked in a semantically equivalent manner. I'm not sure why you consider it critical but I'd love to be edified.

</comment></comment></comment></comment><comment><USER16> I firmly believe in Linus's Law, stating that "given enough eyes, all bugs are shallow". Because of this, I welcome any "can you just" when I feel that I am stuck debugging a bug that cannot be found. Often times it is outside intervention that pokes and prods my mind down a different path. The outside input may not even be correct, but its enough to nudge me into a new, unexplored view on the problem.

Try not to take outside input so personally. Give your ego a little break. (Hopefully) your coworkers are all here to solve the same big problems.

</comment><comment><USER17> On one hand I understand your argument, it can get annoying to hear stupid suggestions. But on the other hand a naive question just might be the answer you needed.

Sometimes a solution gets disqualified for a wrong reason, or w/out looking at all ways it could work.

This happened to me enough times that now I try to put my ego aside and patiently go through my thinking again and again and each time the explanation (and problem) becomes more clear.

Edit: shortened.

<comment><USER18> It's about the attitude, not literally the word.

<comment><USER19> It's also about putting the burden of understanding on the presenter rather than the suggester.

</comment></comment></comment><comment><USER20> I usually go with, "Is there are reason your don't do X?" That leave the person with two perfectly reasonable and face-saving responses. The first is, "Yes, it's because..." and the second is, "No, I guess there isn't. Thanks for the suggestion!" Either way you win. In the first case, I learn something, and in the second case my interlocutor does.

</comment><comment><USER21> In my experience the "ca you just..." solved a lot of problems cause very often developer (me included) start thinking about edge cases and uncommon scenarios before even solving the main path and sometimes a "can you just..." put the focus back on solving the common problem/path before thinking of that edge case that could be solved in a second iteration (divide and conquer). The other good aspect of the "can you just..." is that it force you to explain your motivation and the details that made you out rule the simple solution and that could help solving the problem. then, if your ego do not support a "can you just", it's your problem not the other guy as it's never meant to say I'm better then you but to engage the discussion and help solving an issue!!

</comment><comment><USER22> No. I'm exhausted by the growing arrogance of modern people insisting the correct order of words are something to feel offended by.

I know people can _feel_ offended by many words, but unless you stop to try and understand the intention of those words you don't deserve to say you are offended.

This is the crux of all the passive aggression of the last two decades that has finally blown into this out of control ideological debate about being politically correct.

Are you offended? Did you at least make an attempt to understand my motives and intentions?

This isn't to say if words from the offender are in their mind "kind" that it isn't offensive. This is about the listener being a participant in human exchange of communication.

</comment><comment><USER23> "Making a pop culture reference no one understands" is a punishable rule? Wait... the author works at a game company? How does one build games without understanding pop culture and what people enjoy about it?

</comment><comment><USER24> I've banned this word in personal mechanical and my professional technical work.

If you use it while speaking to me about my work or in my garage, I will stop you and ask you to rephrase your sentence. I know this sounds like a dick move, but it doesn't change the information conveyed just the connotations. Most people will laugh and leave it out. The other people are perfectly free to go talk to someone else ;- )

</comment><comment><USER19> This is very much about putting the burden of understanding on the presenter rather than the suggester. I am big on sharing idea, but up to a point. After a while I started referring to providers of half-baked ideas as "idea fairies." Perhaps they're well intentioned, but they rarely help.

</comment><comment><USER25> New Title: "Tone Policing: How to share your ideas with Egomaniacs". FTFY.

</comment><comment><USER26> I get this from PMs and managers more than other devs. As the labeled architect I'm trying to keep the system somewhat "clean" and "can't you just" suggestions drive me up the wall!

</comment><comment><USER27> Good read. I have been trying to eliminate "just" from my vocabulary because I feel it denigrates the effort a task will take. It's much easier when writing. When speaking I still slip up.

</comment><comment><USER28> LPT for managers: If you take the "just" and turn it into a one (or 0.5) point story, then you not only get to avoid the just jar fee, you can also blame the developer when it's late!

<comment><USER29> I hope you're joking, because in any sane methodology, the developer assigns the story points, not the manager.

</comment></comment><comment><USER30> It is awful that this article invokes the George Carlin routine, which argues that "There are no bad words. Bad thoughts. Bad intentions. And words."

</comment><comment><USER31> With regards to the Just Jar, if you pay up but it turns out the answer actually is yes, do you get your dollar back?

Tone policing, now with real life ticket fees!

</comment><comment><USER32> The obvious question: what do they do with the Jar? And do you get a cut of the contents for saying "can you just" and being right?

</comment><comment><USER33> Similarly, "I have a quick question for you."

It's quick for the person to _say_. It says nothing about whether it's quick to answer.

<comment><USER34> Give a short answer and let them figure it out. Either they really don't need the details (maybe they can find them on their own, maybe they just need confirmation, maybe the details really aren't relevant, etc), or they suck at asking questions, in which case they'll learn to ask better ones.

</comment></comment><comment><USER35> I find it helps to remember that usually, "just" correctly translates as "with tremendous difficulty and faff".

</comment><comment><USER36> I've been on the other side of this too. A few days into a design decision going "why didn't I just ...".

</comment><comment><USER18> Also: "little". I have a quick little thing I'd like you to look at by EOD.

</comment><comment><USER37> "Can you just ..." is a persuasion to hacking. Don't give in.

</comment><comment><USER38> I disagree. Oftentimes people who are actively working on a problem cannot see the forest for the trees and an outsider's perspective will lead to a substantially simpler solution.

</comment><comment><USER39> This word used in regard to completing tasks relating to software is bad enough, this word as it's used much more commonly in the field of public policy and politics in general is where it becomes truly sinister.

In general, and you can call this condescending but I'm willing to go there and say that the word "just" and all it's related questions comments and statements are the best way to show you genuinely, for better or worse, have no idea what you're talking about and I can't think of any scenario improved by a layman's understanding of it.</comment>


Done any mischievous hacking before? - <AUTHOR>

What is the most mischievous thing that you have done? (relating to hacking in the general sense) Did you do any pranks or get into trouble? <comment><USER2> 20 odd years ago when I was first starting out in hacking I wasn't very knowledgeable and didn't cover my tracks very well when I hacked our company CC:Mail email system (I was bored).

I got fired - unsurprisingly - as the MD and HR didn't like me reading their mails!

The lesson learned from the experience? Other peoples (work) email is not as interesting as you think it's going to be...</comment>


Show HN: Raise money for charities with no costs while shopping online - <AUTHOR> https://altruisto.com/ <comment><AUTHOR> I've made browser extension for Firefox and Chrome, so that when you buy online, portion of the money goes to extremely effective, research-backed charities (no extra costs for the user).

There are about 1000 partner shops, including Etsy, Aliexpress, Barnes&Noble. Hopefully eBay soon as well!

Source code is available on github: [https://altruisto.com/Altruisto/altruisto](https://altruisto.com/Altruisto/altruisto)

It's also on ProductHunt: [https://www.producthunt.com/posts/altruisto-2](https://www.producthunt.com/posts/altruisto-2)

Any feedback, suggestions, and pull requests much appreciated!

<comment><USER2> Google does not turn up anything from the partner companies describing the partnership, are there pages at AliExpress, Etsy, etc. announcing the partnership?</comment></comment>


The Beauty of Bresenham's Algorithm - <AUTHOR> http://free.pages.at/easyfilter/bresenham.html <comment><USER2> Bresenham's Algorithm is a useful argument when someone suggests that software patents are a good thing. How far back would the progress of computer graphics have been set if Bresenham or his employer had claimed ownership of this idea?

<comment><USER3> I think you do Bresenham a great disservice, by underestimating how far ahead of its time this really was. This was published in 1962, so any patent would have expired in 1982. So any patent would probably have had almost no effect, because it would have expired before the market advanced to the point where it was generally applicable.

<comment><USER4> It's useful for a lot more than just graphics. E.g. linear interpolation with CPUs that are integer-only (most of them at the time) and have small registers (most again) so fixed point is of limited usefulness. That has a huge number of applications.

</comment></comment></comment><comment><USER5> Here's the abstract to Bresenham's Algorithm from Wikipedia, if anyone wants to know a little more about it, generally:

"The Bresenham line algorithm is an algorithm which determines which points in an n-dimensional raster should be plotted in order to form a close approximation to a straight line between two given points. It is commonly used to draw lines on a computer screen, as it uses only integer addition, subtraction and bit shifting, all of which are very cheap operations in standard computer architectures. It is one of the earliest algorithms developed in the field of computer graphics. A minor extension to the original algorithm also deals with drawing circles."

</comment><comment><USER6> I first learned of Brensenham's line drawing algorithm from Michael Abrash in his Graphics Programming Black Book. I've yet to come across a more thorough and easy to understand discussion:

<http://downloads.gamedev.net/pdf/gpbb/gpbb35.pdf>

</comment><comment><USER7> About a week ago I came to know Bresenham's Algorithm is also important in mobile robotics.

Basically, you model your map using a grid, after firing a sensor such as a LIDAR or sonar and finding something blocks its cone of sight you use Bresenham's to see what cells in your map the new reading provides information about. (i.e. something bouncing 2 meters from where your robot is not only tells you about a block at 2 meters but also about no block in that trajectory, all those cells you now suppose are free and the one you suppose is not are the result of Bressenham's Algorithm)

<comment><USER8> Could you please elaborate on how this works or point to some resources on this application of the algorithm (if you know of any)?

<comment><USER9> Essentially it's ray-tracing but in a grid. Bresenham's algorithm let's you do the ray-tracing efficiently.

This is done because a LIDAR/sonar/whatever scanning range sensor returns the angle and range to a reflective object. In most cases, there's an implicit additional piece of information - namely that there's nothing in between the sensor and the object, since the EM radiation was able to get there and back. Bresenham's algorithm is used to tell you the grid cells in which you can assume free space.

</comment></comment></comment><comment><USER10> Bresenham's, at least as implemented there is not the most efficient algorithm.

There are 4 checks per loop in that version. The faster impl recognizes that in 1 direction or the other one coordinate will always increment or decrement by 1 while the other coordinate will or will not increment on each iteration.

That will remove 2 of the 4 checks. The loop just becomes N where N is max(abs(dx), abs(dy))

I don't know if that's still considered Bresenham's or not.

        int sign(int v) {
            return v > 0 ? 1 : ((v < 0) ? -1 : 0);
        }

        int abs(int x) {
            return x > 0 ? x : -x;
        }

        int max(int a, b) {
            return a > b ? a : b;
        }

        void drawLine(int x1, int y1, int x2, int y2) {
            int deltaX = x2 - x1;
            int deltaRow = abs(deltaX);
            int rowInc = sign(deltaX);

            int deltaY = y2 - y1;
            int deltaCol = abs(deltaY);
            int colInc = sign(deltaY);

            int rowAccum = 0;
            int colAccum = 0;
            int rowCursor = x1;
            int colCursor = y1;

            int counter = max(deltaCol, deltaRow);
            int endPnt = counter;
            if (counter == deltaCol) {
                rowAccum = endPnt / 2;
                for (; counter > 0; --counter) {
                    rowAccum += deltaRow;
                    if (rowAccum >= endPnt) {
                        rowAccum -= endPnt;
                        rowCursor += rowInc;
                    }

                    colCursor += colInc;
                    setPixel(rowCursor, colCursor);
                }

            } else {
                colAccum = endPnt / 2;
                for (; counter > 0; --counter) {
                    colAccum += deltaCol;
                    if (colAccum > endPnt) {
                        colAccum -= endPnt;
                        colCursor += colInc;
                    }
                    rowCursor += rowInc;
                    setPixel(rowCursor, colCursor);
                }
            }
        }

This is an optimized version of an algorithm I found in the Atari 400/800 Technical Reference Manual page 218.

</comment><comment><USER11> This enabled and was core to many demos from the demo scene of the 80s (c64, Amiga).

</comment><comment><USER12> I doubt anyone here really needs it but here's a C program that demonstrates all three functions in a terminal. Just making a global array and a macro for setPixel is enough to play with these and is really pretty much all I did.

<https://gist.github.com/3291916>

<comment><USER13> To save you guys the time of running the code yourself, here's the output in codepad.org:

<http://codepad.org/y7fIoHlm>

</comment></comment><comment><USER14> I remember implementing this in ask! Fun times.

it's very funny how this sort of stuff comes back at opportune times to magically solve really hard problems for you with a single pass. Sort of like having Knuth on your bookshelf.

</comment><comment><USER15> Are you sure about the Bezier curve algorithm? It has "xx *= xx;" and xx is never reset (unless I misunderstand the code).

</comment><comment><USER16> Why do people write non-conditional loops as "for(;;)" instead of "while(1)"?

<comment><USER17> Because while(1) still has a condition that is checked on every loop iteration when optimizations are disabled. for(;;) can be read as "forever".

<comment><USER18> I do doubt that even for a for(;;), a jmp (x86) is use instead of a conditional jump like jz.

<comment><USER19> Compilers are smart! For common things like this, they will easily optimise away any conditional jumps.

</comment></comment></comment></comment><comment><USER20> I remember coding this up in ARM7 assembler (Gameboy Advance) a while back. Clever algorithm.

</comment><comment><USER18> By the way, I had a teacher (J.P Reveilès) who had invented the theoretically fastest drawline algorithm ever: he simply figure out that, for a line, there is a pixel pattern which repeat itself (unless the variation is a transcendental number <http://en.wikipedia.org/wiki/Transcendental_number>) so you only have to compute that pattern once and copy/paste it. If I remember well, for example, a line which has a variation of 1/4, has a 4-pixel wide pattern only!

His discrete line equation is relatively beautiful (it is easily extractible from Bresenham's algorithm however): 0 ≤ ax − by < ω

<comment><USER21> Wouldn't the exception be for lines whose slope is irrational? (i.e. that can't be represented by a ratio of integers), so the repeating pattern is analogous to the repeating pattern in a decimal representation of a rational number.

<comment><USER22> How does a computer distinguish an irrational number from a good, (necessarily rational) floating-point approximation of one?

<comment><USER15> The algorithm only works with points with integer coordinates, so the slope is always rational.

<comment><USER18> I think you have the last words because line drawing algorithms become irrelevant if you use a Floating Point Unit.

just:

{ x++ and y+=slope } or { y++ and x+= 1./slope }

Then slopes are always rational in line drawing algorithms.

<comment><USER23> If y and slope are floating point in the first block then might not y end at other than the desired endpoint because of accumulative error?</comment></comment></comment></comment></comment></comment>


To Be or Not to Be Linked on LinkedIn: Job Search Using Online Social Networks - <AUTHOR> http://papers.ssrn.com/sol3/papers.cfm?abstract_id=1813532

<comment><AUTHOR> I scanned through some of this paper and the interesting thing I saw was that the single most important factor on if you got the job or not is if you were married.</comment>


Show HN: Content Marketing Analytics - <AUTHOR> http://www.levisto.com/

<comment><USER2> Bootstrap, right? Site looks a little generic. But it's better to have a functional site than no site at all, so bootstrap was probably the right choice for rapid development. Now you just gotta customize it.

I'm involved in content marketing myself, and I could see some use for a tool like this. But from what I can tell on the website, this is information content marketers already have ... it's just not all in the same spot. That's the benefit you'll wanna drive home in the copy: Save time by combining facebook insights, google analytics, and wordpress dashboard in one simple report. Or did I characterize your product?

<comment><AUTHOR> These are all good ideas. Yes, some of the metrics are available other places, but it can be a pain to go and find them for each post. This way you can see everything in one place, it's easily sortable, and easy to setup. I'll definitely highlight that a bit more. Thanks for the tip. I'll be adding more insights down the road too. This was just an MVP to get the tool out there to see if it's something people need and I think they do. Thanks again.

</comment></comment><comment><USER3> Advice: Post this to inbound.org, they're more receptive to these kind of tools.

<comment><AUTHOR> Good idea. Thanks.</comment></comment>


What Happened to the Future? - <AUTHOR> http://www.foundersfund.com/the-future <comment><USER3> It's a good essay. The only problem is that it's Peter Thiel behind it.

The problem isn't just that "we got 140 characters." The problem is that Peter Thiel asked for it by investing in and therefore promulgating Mark Zuckerberg's vision of ubiquitous irrelevance. I think he's right that VC is destroying itself by investing in what I have often referred to as trivial nonsense, but he and his firm are part of the problem, not the solution. Just look at the portfolio companies: Winster? Quid? Slide? Path? GoWalla? And of course, Facebook? None of these companies improve my life or the lives of anyone I care about. Founders Fund has 22 consumer internet companies in its portfolio and one or two in the other categories listed on the web site.

Furthermore Thiel has stated that he wouldn't bother doing PayPal again if he knew what he knows about the payments industry today. This is of course the space that I'm working in. Bold words, Peter. If only there were more VCs willing to run and hide.

Frankly I'm sick of venture capital firms writing self-serving slogans, or in this case, entire essays. Actions speak louder than words. I'm doing serious work and my company has been rejected by sixty (that's six-zero) VC firms in the past five years. It's going to take more than a manifesto to convince me that any investor is serious about the future.

<comment><USER4> I actually disagree. Facebook has improved my life by a _ton_.

<comment><USER5> The internet-cynical, tech-savvy thing to say is how much of a waste of time Facebook is, but I think it changes communication in the same way that every house having a telephone did. Yes, email and IM existed before Facebook, but Facebook is a different model of communication.

<comment><USER6> Facebook Vs (email + IM) = Telephone Vs (post + telegraph). Really? You think that these two jumps in technology are equivalent in the difference they have made to peoples lives? I don't use facebook but I would not be able to work without telephone and the internet.

<comment><USER7> Yes, probably so. Facebook means that you can keep up with people (who's getting married, who moved, who had children) without emailing them.

If you have 500 friends, each with a feed with 50 posts, you are talking about 25000 possible emails. Those emails would never be sent, because they are usually individually way below the importance threshold for an email.

So, by this calculation at least, it's at least a 1-2 order of magnitude reduction in the work required to maintain contact with old friends. That's valuable.

<comment><USER8> That's assuming that knowing the minutiae of the lives of people who you don't talk to frequently is important. I'd say that that's actually a huge waste of time, and distracts from actual socializing by making you feel like you're keeping up with people without actually doing so.

<comment><USER9> Hear hear.

When G+ came out I dropped my Facebook account.

Due to the low activity on G+, I resorted to... doing stuff with other people in real life, such as volunteering and going to meetups.com meetups. And my real friends not near me kept in touch via e-mail and IM.

</comment></comment></comment></comment></comment></comment></comment><comment><USER10> What happened to HTML? If this were formatted with web standards, I could resize the fonts, scroll with my browser's built-in preferred scrolling mechanisms that aren't chunky, laggy, and painful, and I could actually read it. I'm not the only one to comment on this, but apparently whoever did this page is dense enough about web standards that the point needs to be repeated. How do you run a VC and not get this? My opinion of Founders Fund has gone down.

<comment><USER11> No kidding! The best part is, it's all so unnecessary! When I saw the blank page, I decided to have a peek at the source, an lo and behold, there's the essay! Copy it to a text editor, turn on dynamic word wrap, and... enjoy?

<comment><USER12> Firefox: view -> style -> No style

Disabling CSS dumps the unstructured page. You can also pay it a visit in a console-mode browser.

I'm (sadly) finding this to be increasingly necessary to view web pages (as an aggressive user of NoScript).

</comment></comment></comment><comment><USER13> When you're traveling at 60km/hr and going faster, it's thrilling. You imagine what will come next.

When you're traveling at 260km/hr and going faster, it's horrifying. You think of how you can hold on.

If you go to Disneyland's Tomorrowland you'll see that we ended dreaming about the future in the 60's and 70's. It was polished metal; a stone's throw from what we had, but within dreaming limits.

Now we don't know where we're going, but we know we've never been there before. It makes no sense to dream about "today plus twenty years". It won't be that and we're aware now that it won't. The innovation will happen with or without us as individuals. And it will keep going, hurtling faster into an oblivion which we can only guess at.

<comment><USER14> TV's Max Headroom intro was prescient in that regard.

"20 minutes into the future ..."

[http://www.youtube.com/watch?v=rM9BOkcG9M0&feature=playe...](http://www.youtube.com/watch?v=rM9BOkcG9M0&feature=player_embedded#at=67)

</comment></comment><comment><USER15> > Not all technology is created equal: there is a difference between Pong and > the Concorde

Yes, Pong was simply a clever design making use of existing technology that made shirtloads of money for a bunch of people and spawned entire industries. Whereas Concorde - a "real technological development" - was a giant money pit fed from government slush funds for decades, punctuated only by occasional lethal consequences for its passengers and bystanders. (Not to mention that it was a technological cul-de-sac.)

Remind me, which one was it they want to be investing in? Because it sure _sounds_ like they're saying Concorde. Am I misinterpreting?

<comment><USER7> Technological cul de sac and subsidized investment, yes.

But looks like the Air France Concorde crash was due to debris on the runway rather than the plane itself. Or were you thinking of something else?

[https://secure.wikimedia.org/wikipedia/en/wiki/Air_France_Fl...](https://secure.wikimedia.org/wikipedia/en/wiki/Air_France_Flight_4590)

A Continental Airlines DC-10 departing for Newark, New Jersey, lost a titanium alloy strip, 435 millimetres (17.1 in) long and about 29 millimetres (1.1 in) to 34 millimetres (1.3 in) wide, during takeoff from the same runway.

During the Concorde's subsequent take-off run, this piece of debris, still lying on the runway, cut a tyre causing rupture and tyre debris to be hurled by centrifugal force. A large chunk of this debris (4.5 kilograms or 9.9 pounds) struck the underside of the aircraft's wing structure at an estimated speed of 500 kilometres per hour (310 mph). Although it did not directly puncture any of the fuel tanks, it sent out a pressure shockwave that eventually ruptured the number five fuel tank at the weakest point, just above the landing gear.

<comment><USER16> > But looks like the Air France Concorde crash was due to debris on the runway > rather than the plane itself. Or were you thinking of something else?

I know nothing about the Concorde, etc. but that the crash was triggered by debris does not really refute that it was a poorly designed or dangerous aircraft, as that should be a design consideration of any aircraft (I assume).

<comment><USER15> Exactly. If a blown tyre is enough to kill everyone on board, it's not an especially safe design. Note that tyres had burst on at least 4 previous occasions, so that was not exactly unforeseeable.

</comment></comment></comment></comment><comment><USER17> One important aspect of these problems is that they aren't going to be solved by people who know _only_ how to code. These are opportunities for mechanical engineers, biologists, statisticians, materials scientists, physicists ...

For many of them the research would have to be so speculative that it would be hard to imagine them occurring outside of an academic research lab. For a startup to tackle one of these, the bones of the technology would have to already be there.

</comment><comment><USER18> It's clear whoever put this together put a lot of effort into making the page fancy and there are some nice effects there, but it ultimately harms the message.

Here is some concrete feedback:

\- WebKit lets you make custom scrollbars if that's important to you: <http://www.webkit.org/blog/363/styling-scrollbars/> . Using a real scrollbar means that shortcuts I'm familiar with (e.g. shift-space to page up -- wow, I had no idea how frequently I used this until this page broke it) won't break.

\- Whitespace is nice, but the double-spaced-feeling line-height combined with the "back to founders fund" heading at the top combine to make it feel uncomfortably cramped vertically -- not enough information density per page.

\- Similarly, the lines are so wide they are uncomfortable to read. (I actually use a user stylesheet that limits lines to 50em, which makes many sites including HN more readable.)

I'm sorry I don't have any feedback on the content, I was too distracted to start reading it yet.

<comment><USER19> And then there's the fact that it requires javascript to just display some simple text.

</comment></comment><comment><USER20> Is this a joke?

I have a 3d printer in my basement.

Poor little VC, go play with your social networks. The grownups a busy making the future.

<comment><USER21> Mid-portfolio crisis, perhaps?

</comment></comment><comment><USER22>
        over the past thirty years, there have been
        no radical advances in transportation technology

Containerization.

<comment><USER12> That actually dates to the 1950s and is based on concepts up to a century older than that. Break-bulk has been recognized as a bottleneck in freight transport for ages.

It's evolved and become dominant with standardization of container sizes and fittings (by 1970) and with the deregulation of the US shipping industry and introduction of double-stack rail transports (both in 1984).

I suspect more significant recent advancements have been in inventory and logistics management (though bar-coding of rail cars was already happening in the 1980s) and overnight air and other rapid freight. Not quite as visible as containers, but vital to keeping the boats, trains, and trucks moving, and with JIT delivery probably accounts for much of the success of big box stores, and now Internet-based retail and shipping.

</comment></comment><comment><USER23> Ways FF should improve the reading experience:

\- Support normal scroll behaviour (swiping my trackpad scrolls but only very slowly; I can't press spacebar to page down; clicking underneath the scroller should advance a single page, not jump ahead to another part of the document)

\- Show diagrams by default (no reason to require a click)

\- Add a place for comments

\- Narrower line length

</comment><comment><USER24> the human race will get the flying car and the fusion when it is ready for it ( technologically these innovations, at the level of successful prototypes have existed for last 50 years). What would we do with such technology if it was in widespread use today? Flying car - sprawl development even further. Fusion - com'n, are we ready for a wide availability of a high flux high energy neutron generating devices? We are still can't control ourselves when it comes to the dynamite and the similar levels of energy, and it becomes hysterical paroxysm when the fission levels of energy come into play.

The primitive steam based engine was discovered by ancient Greeks and technologically they could improve upon it further. Their slave based society wasn't ready for it.

Like Greeks and steam power, today we have the primitive access to space - <USER2> surprise!, instead of actively working upon improving it, pouring all our resources into it, we're still discussing whether it has economical reasons, and like in case of Greeks, we can't find much of such economical reasons for it.

<comment><USER25> 'If human thought is a growth, like all other growths, its logic is without foundation of its own, and is only the adjusting constructiveness of all other growing things. A tree cannot find out, as it were, how to blossom, until comes blossom-time. A social growth cannot find out the use of steam engines, until comes steam-engine-time.' - Charles Fort, Lo!

</comment></comment><comment><USER26> What happened to the future: Advertising as a primary revenue source and Financial Markets trying to be a place unto themselves with rules and customs that actually don't make much long term sence. In the US, throw in a generation that really didn't seem to care to make a better place for the next generation and you got a lot of problems. The now killed the later.

</comment><comment><USER27> Enough with the flying cars! That was never a good idea.

<comment><USER28> Agreed. I'm not a big fan of Twitter, but flying cars don't exist for a reason. Now self-driving cars, those are interesting. Guess who's working on _them_? Google.

<comment><USER29> Self-flying cars?

</comment></comment></comment><comment><USER30> Is the use of the "presentation enhancer" to deter people from actually reading it? Because that's it did to me. The font is illegible, scrolling must be done via the bar (otherwise it crawls at ~1px/sec), and turns my cpu fan way up. Is it really still "cool" to misuse technology nowadays?

</comment><comment><USER31> People knock Webvan around but the founder (Mick Mountz), 10 years after that debacle, founded <http://www.kivasystems.com/> where instead of conveyor belts (Webvan) they use robots for managing a warehouse. Seriously cool robotics. Check out the videos on their site.

Kiva Systems has gone from strength to strength and is now used by Zappos, Wallgreens and others (<http://en.wikipedia.org/wiki/Kiva_Systems>)

</comment><comment><USER32> I had heard of Founder Fund before, but I can't say I had any strong conviction as to what made them a special VC, or if they were.

Their manifesto makes me question if my current project is thinking big enough (I think it is).

I think the problem entrepreneurs who would apply to Founders Fund might have is how to present their idea as being big and bold. Often the big and bold are not understood in common terms, so we dumb them down to something that is achievable in the short term, and seems realistic, while having a long-term goal which only makes sense if the shorter term goals can be accomplished.

Facebook would be a perfect example here. They couldn't be discussed as 'world changing' in the early days as they were just another social network. Nothing seemed insurmountable, nothing seemed challenging, even the idea of this 'social graph' probably wouldn't have made much sense until tens of millions of people were using it.

</comment><comment><USER33> PDF button for the article doesn't work and I couldn't find a link in the source or the JS. Annoying. Anyone stumble across the PDF version? Printing the page to PDF from the browser works to no avail either.

</comment><comment><USER34> its;dr (interface too shitty; didn't read)

<comment><USER35> Well then you may have done yourself a disservice because:

a. the quality of presentation of content is independent of the quality of the information of content; and

b. text that is harder to read may be easier to remember: <http://www.bbc.co.uk/news/world-11573666>

</comment></comment><comment><USER36> Nicely written essay. I would say future is hard to predict. People in 1960s predicted about space travel but did not predict mobile devices like iphones that have so much compute power with so many apps with location, touch, social, communication features.

140 characters may not have great technology but can be attributed to bring social revolution in so many places.

Ultimately, need is mother of most of innovations. Need leads to demand, which leads to building new solutions.

</comment><comment><USER37> For now, I'd settle for an ordinary, standard scroll bar...

</comment><comment><USER38> Is their really much a technical problem preventing flying cars? I think it's similar to space in that it isn't overly energy efficient as I'd assume withut completely redesigning our cities you would need vertical takeoff. Then there is a lot of safety considerations, I think self driving cars would need to be accepted well before anything could happen with flying cars.

</comment><comment><USER39> Flying cars do exist and can be bought (pre-order) today.

<http://www.terrafugia.com/>

Unrelated, except to the sub-title. I also posted deeper in the comments, but I think it's a pretty cool project and thought it's worth trying to repost in a more visible spot. The price tag is a few 100k and you only need the lowest level pilot's license to fly it.

</comment><comment><USER40> The most powerful minds are the ones that can be changed.

I should add ...can be changed after much deliberation.

</comment><comment><USER41> Thank you for this essay. I understand that it's not, as some have already pointed out, particularly disinterested, but it set me to thinking, which is enough for me.

This essay calls for a return to hard problems. The "problem" with hard problems isn't that they're hard. That's actually exactly what we need about them. It the unyielding character of hard problems which makes them worth dedicating ourselves to. The greatest difficulty is not solving the problem (which isn't even strictly necessary to benefit from the investigation), but rather, in giving ourselves to the problem in the first place. How can we choose a problem when there are so many possibilities and we have so little foresight?

If we lived in a vacuum, the choice would be impossible or arbitrary. Luckily, our lives are not vacuums. The "real problems" (the things that matter to us, which come into our lives whether we like it or not, and generate actual experiences of significance) provide a point of departure. Real problems aren't technological in nature, but that doesn't mean they don't lead the way towards challenging technical projects. The space race didn't start as an engineering problem. It was the result of the longing of a people, of their hope and anxiety for the future. But as a result of that longing, of that fear and excitement, a lot of smart people dedicated themselves to hard technical problems and produced a huge array of breakthroughs. The trick, then, is to remain attentive to the problems around us, rather than giving into the temptation to ignore or adapt to them.

In order to refocus ourselves on the hard problems, it helps to acknowledge that they are what we want -- that we aren't really satisfied with a day's salary and that we want to push forward towards a life's work. Wouldn't everyone prefer to work on something substantial, on a 'hard problem' for the sake of a 'real problem'? I think so, but we often don't know where to start.

Can technology help us get started? I don't think "a Facebook" or "a Wikipedia" for hard problems is the answer, although either might help. In order to maintain the kind of excitement and reciprocal encouragement necessary to sustain a culture of hard-problem-solving, you need to put smart people who respect each other into the same physical space. You need to make hard- and real-problem-solving a lifestyle in order to overcome the creeping inertia of the trivial. This is why universities retain their relevance. They're a concentrated mix of intelligence, experience, and youthful idealism. They contain lots of people who think about "hard problems" (science, engineering) and "real problems" (philosophy, history, social thought). Universities have their own issues, of course. They suffer from institutional pressures that have more in common with the banalities of commerce and politics than with any dedicated enthusiasm. Historically they have been very successful, but it may be that the next wave of innovation will come from a less traditional source, perhaps from the real-life communities that sprout up around virtual groups like this one.

</comment><comment><USER42> Since the PDF link doesn't work, and the article is annoying enough to read that people _aren't_ , I'll just paste the first couple of paragraphs here to give you an idea what it's about. If this seems interesting, you can suffer through it.

FOUNDERS FUND

WHAT HAPPENED TO THE FUTURE?

A.INTRODUCTION

We invest in smart people solving difficult problems, often difficult scientific or engineering problems. Here's why:

 _The Problem_

We have two primary and related interests:

1\. Finding ways to support technological development (technology is the fundamental driver of growth in the industrialized world).

2\. Earning outstanding returns for our investors.

From the 1960s through the 1990s, venture capital was an excellent way to pursue these twin interests. From 1999 through the present, the industry has posted negative mean and median returns, with only a handful of funds having done very well. What happened?

 _VC's Long Nightmare_

To understand why VC has done so poorly, it helps to approach the future through the lens of VC portfolios during the industry's heyday, comparing past portfolios to portfolios as they exist today. In the 1960s, venture closely associated with the emerging semiconductor industry (Intel, e.g., was one of the first – and is still one of the greatest – VC investments). In the 1970s, computer hardware and software companies received funding; the 1980s brought the first waves of biotech, mobility, and networking companies; and the 1990s added the Internet in its various guises. Although success now makes these investments seem blandly sensible, even obvious, the industries and companies backed by venture were actually extraordinarily ambitious for their eras. Although all seemed at least possible, there was no guarantee that any of these technologies could be developed successfully or turned into highly profitable businesses. When H-P developed the pocket calculator in 1967, even H-P itself had serious doubts about the product's commercial viability and only intervention by the founders saved the calculator. Later, when the heads of major computing corporations (IBM, DEC) openly questioned whether any individual would ever want or need a computer – or even that computers themselves would be smaller than a VW – investment in companies like Microsoft and Apple in the mid-1970s seemed fairly bold. In 1976, when Genentech launched, the field of recombinant DNA technology was less than five years old and no established player expected that insulin or human growth hormone could be cloned or commercially manufactured, much less by a start-up. But VCs backed all these enterprises, in the hope of profiting from a wildly more advanced future. And in exchange for that hope of profit, VC took genuine risks on technological development.

In the late 1990s, venture portfolios began to reflect a different sort of future. Some firms still supported transformational technologies (e.g., search, mobility), but venture investing shifted away from funding transformational companies and toward companies that solved incremental problems or even fake problems (e.g., having Kozmo.com messenger Kit-Kats to the office). This model worked for a brief period, thanks to an enormous stock market bubble. Indeed, it was even economically rational for VCs to fund these ultimately worthless companies because they produced extraordinary returns – in fact, the best returns in the industry's history. And there have been subsequent bubbles – acquisition bubbles, the secondary market, etc. – which have continued to generate excellent returns for VCs lucky enough to tap into them. But these bubbles are narrower and the general market more demanding, so VCs who continue the practices of the late 1990s (a surprising number) tend to produce very weak returns. Along the way, VC has ceased to be the funder of the future, and instead has become a funder of features, widgets, irrelevances. In large part, it also ceased making money, as the bottom half of venture produced flat to negative return for the past decade. [2]

We believe that the shift away from backing transformational technologies and toward more cynical, incrementalist investments broke venture capital. Excusing venture's nightmare decade as a product of adverse economic conditions ignores the industry's long history of strong, acyclical returns for its first forty years, as well as the consistently strong performance of the top 20% of the industry. What venture backed changed and that is why returns changed as well.

 _Not Everything With A Plug Is Technology_

... et cetera

<comment><USER43> That's a very long winded way of saying nothing.

<comment><USER42> Yeah, I was going to mention something to the effect of how dumb it is to hide your content behind a crummy text-scrolling interface when your users already have one they probably like _pretty OK_ , but in this case I'm actually not too bent out of shape about it :P

<comment><USER43> I finally managed to get the page to load on my tablet, and yeah "et cetera" sums it up pretty nicely.

<comment><USER44> There was also a fair bit of typos and bad grammar which are never a good sign.

</comment></comment></comment></comment></comment><comment><USER45> The answer is largely contained within their goal #2.

</comment><comment><USER46> Someone forgot to set their Google Analytics ID. Requirement one to inventing the future: be able to follow instructions.

</comment><comment><USER47> A world that is aging, where half the young are unemployed and the old demands to be paid to live to 98

A world lead by visionless, spineless leaders, employed by multinationals to kill anything that threatens their existence

A world that is feminized, where men are taught to grovel for a women's affection, and to earn their attention with gucci and prada, paid by their mcjob

A world ruled by bankers, where the mindless middle class are the sharecroppers. Bankers don't dream about flying cars. They dream about the rent paid next month.

A world brainwashed by advertising, training its citizens to love sequels and brands. Transformers 15. Call of duty 14. Starbucks everyday.

A world that no longer needs you, the passionate, explorative, imaginative, thinking you.

<comment><USER48> "Starbucks everyday." ... said the guy named chailatte :D

"A world that no longer needs you, the passionate, explorative, imaginative, thinking you." AS IF any passionate, imaginative, thinking blob ever cared about how much "the world" (wth is that supposed to mean) needs her/him or not...

<comment><USER49> It's one thing to be cynical, it's another thing to reflect that into a normative statement about how a broad group of talented people act. Awfully contentious, that. I suppose Martin Luther King did what he did for the sheer rush of it all, yes?</comment></comment></comment>


MIT researchers create a robot houseplant that moves on its own - <AUTHOR> <comment><USER2> Link [https://www.engadget.com/2018/12/05/mit-researchers- create-a...](https://www.engadget.com/2018/12/05/mit-researchers-create-a- robot-houseplant-that-moves-on-its-own/)</comment>


Texas jury finds Google infringes a patent: $5,000,000 damage award - <AUTHOR> http://fosspatents.blogspot.com/2011/04/texas-jury-finds-against-google-in.html

<comment><USER2> A patent for searching a linked list? This is disgusting.

As a middle finger, here's me infringing on it.

      typedef struct node {
        struct node *next;
        void *data;
      } node_t;

      void *find(node_t *head, void *what, int (*cmp)(void *, void *)) {
        while(*head != NULL && cmp(head->data, what) != 0) {
          head = head->next;
        }
        return head;
      }

Of course, there is an age old infringer on this patent:

      (define (find ll what)
              (if (or (null? ll) (eq? (car ll) what))
                      ll
                      (find (cdr ll) what)))

<comment><USER3> The patent includes expiring the records in the linked list, and removing (some) expired records when doing the search:

      #define EXPIRE_LOOKUPS 500

      typedef struct node {
        struct node *next;
        void *data;
        int age;
      } node_t;

      void *find(node_t *head, void *what, int (*cmp)(void *, void *)) {
        while(*head != NULL && cmp(head->data, what) != 0) {
          if (head->next == NULL)
              return NULL;
          if (head->next->age > EXPIRE_LOOKUPS)
              head->next = head->next->next;
          ++head->age;
          head = head->next;
        }
        return head;
      }

(I didn't see the patent specify an actual expiry mechanism in any specific detail, so here's a useless, but patent-infringing one.)

<comment><USER4> In the case where you expire the last entry of the linked list you will SEGFAULT. A test for head being NULL at the end of the loop would take care of that, but I'd put it in the condition of the while loop since it is probably free on a modern processor given the memory access pattern and it makes something sane happen when a client calls find(NULL,...).

I also don't think the last element ages, but since aging is unrelated to reality that is ok. On second thought, it protects you from the SEGFAULT because the last element can never expire. Very cunning of you.

<comment><USER3> I'm not seeing the segfault, but it _does_ leak memory like a sieve with no filter.

Good point re: age. ++head->age should be the first operation of the while loop.

<comment><USER4> Just in case someone is scratching their head over this...

Let's come into the while loop body with data like this where H is the head pointer, C and E are elements of the list...

      H -> C            /* head points to current node */
      C->next -> E      /* expired node is next*/
      E->next -> NULL   /* expired node is last */

      if ( head->next == NULL)...        /* no, head points to C, C->next is E */
      if ( head->next->age > EXP...)     /* yes, head->next is E and is expired */
          head->next = head->next->next  /* C->next is now NULL (E->next) */
      head = head->next;                 /* head is now NULL */
      /* back to the top of the loop */
      while( *head != NULL...            /* BANG! a NULL value just got dereferenced */

</comment></comment></comment></comment></comment><comment><USER5> The title here on Hacker News has been mangled to be incomprehensible or just wrong. This is not a "Linux patent", it is a software patent which is potentially infringed by the Linux kernel.

<comment><USER6> unfortunately, it's not "potentially" it's "it does", the courts ruled in favor of it being an infringement.

</comment></comment><comment><USER7> This is one of the disadvantages of open-source software: the patent trolls can easily find places that are violating their bullshit patents. I'm sure Microsoft and Apple also use linked lists, but they're not being sued, because it's harder to prove.

</comment><comment><USER4> I'm not seeing which part of the Linux kernel is afflicted, but this exhibit from an Amazon case at least suggests that it is for the route cache.

[http://docs.justia.com/cases/federal/district- courts/texas/t...](http://docs.justia.com/cases/federal/district- courts/texas/txedce/6:2009cv00269/116887/579/5.pdf)

If so, it should be easy to excise from future kernels with minimal performance impact. (I was suspecting filesystem entry caches, but that doesn't show up when I google.)

In a perfect world the patent would not have been issued since it is obvious to anyone skilled in the art that considers when to purge expired entries from a hash table with linked list overflow, especially in a world where systems are constrained by memory access times more than computation. But we are not legislated by that world.

</comment><comment><USER8> I hate reading patents because I always feel like they try to make it look as complicated as possible. In particular, I always find the inclusion of the computer architecture somewhat useless. Do we really care that there might be 25 software applications running on your computer? Is there any reason other than overcomplication (and thus making the patent appear more novel) to include this stuff?

Because of this, I just want to make sure I understand the patent properly:

From what I can tell, its a patent on a hash table that resolves collisions using chaining, implemented using linked lists. On top of this, each entry has an expiration time and it can remove them as it does lookups for entries.

<comment><USER9> In the USA, software patentability has always been dubious. But you can patent a complete physical setup that also runs software.

So software patents are usually written as if one had invented some special- purpose device, that just happens to consist of hardware that looks remarkably like a standard PC, running software.

</comment></comment><comment><USER10> I did a quick read of the patent, 5,893,120 filed in 1997. It seems likely to me to be invalid over the prior art.

<comment><USER11> The jury dismissed Google's invalidity defense. This is a case where re- examination might be better. A lot of juries simply may not feel comfortable overturning the PTO, even with a lower standard of proof.

</comment></comment><comment><USER11> The award is peanuts for Google. But establishes a scary precedent. Basically everyone had get ready to give this company effectively a license fee for past shipments of Linux-based products.

</comment><comment><USER12> What is the problem with that east Texas district?

<comment><USER13> Nothing. There's a common myth on the internet that it massively favors patent plaintiffs, but in reality it isn't even in the top five.

There are two reasons so many patent suits are filed there.

1\. It has judges that have experience with patent suits and like handling them. Whether you are plaintiff or defendant, you want this.

2\. There isn't much federal crime there. Criminal cases always take precedent over civil cases on the court calendar. In some districts, especially those where the stupid "war on drugs" is highly active, it can take a long long time to get any court time for civil cases.

</comment></comment><comment><USER14> What a perfectly ridiculous patent.

<comment><USER13> I find it hard to believe that in the time between the story appearing and your comment you had time to read and understand the patent.

<comment><USER15> It's pretty easy to assert that _all_ software patents are "ridiculous". Math is generally held to be unpatentable after all.

<comment><USER13> Software is not math. If you think otherwise, please state OpenOffice in the form of a theorem and proof. :-)

Seriously, though, software patents do not involve patenting math. They involve patenting at most the use of math in specific circumstances. By the same token, you can't patent physics or chemistry, but you can patent the application of physics (mechanical and electrical devices) and the application of chemistry (drugs).

<comment><USER15> <http://en.wikipedia.org/wiki/Church%E2%80%93Turing_thesis>

It's pretty trivial to show that software is in fact math. Not "approximative with math", like a mechanical device with the laws of physics perhaps, but _actually math_ ^.

If you want to express OpenOffice.org terms more easily recognizable to the layman as "math", simply translate the program from whatever it may be written in to lisp, at which point a conversion to lambda calculus is quite clear.

(^ Unless perhaps you also have a definition of "math" that precludes something like the Pythagorean Theorem as well, which is absurd.)

EDIT: Addendum: even if you for some reason don't agree with this, it remains a fact that someone that _does_ hold software patents to be invalid for this reason can easily and _reasonably_ criticize a software patent without first reading it.

<comment><USER13> Would you say I'm doing math when I write down my recipe chocolate chip cookies? I'd say I'm just describing steps to be executed in order to accomplish a particular real world task. Software is the same--it is steps to execute on a machine to accomplish a task.

Software can be described in ways that sometimes make it amenable to mathematical analysis, but that doesn't make it math.

The Pythagorean Theorem is math--and you can't patent it. However, if you designed, say, a new way to truss bridges, and a key aspect of that was that certain things were of lengths that formed right triangles via the Pythagorean Theorem, it would not be patenting math if a patent were issued on your truss system.

<comment><USER15> As per the Church Turing Thesis, computation that you do with step by step instructions and computation that you preform with lambda calculus are equivalent.

That you think Pythagorean Theorem is math, but "software" somehow isn't, seems to indicate to me that you are restricting your definition of math to something like arithmetic and symbolic manipulation. That, or similar definitions, is all fine and dandy, but the field of math is not actually limited to such opinions. Regardless of opinion, you can show _with math_ that software _is math_.

It's just using a different notation than _small_ subset of math they teach you in primary school.

EDIT: If you're still not convinced, check out what Knuth has to say about the issue. I suspect he is a far more rigorous mathematician than either of us will ever be, and his writing is certainly better than my own: <http://eupat.ffii.org/gasnu/knuth/swpatknuth.en.pdf>

<comment><USER16> You can go further. Show them the Curry-Howard correspondence:

[http://www.haskell.org/haskellwiki/Curry-Howard- Lambek_corre...](http://www.haskell.org/haskellwiki/Curry-Howard- Lambek_correspondence)

"Interestingly, the isomorphism maps programs (functions in Haskell) to (constructive) proofs in logic (and vice versa)."

So not only is software equivalent to math, there are people out there _actually writing the software program equivalent to ZFC_ (one of the most commonly used sets of axioms in mathematics):

<http://us.metamath.org/index.html>

If that program is math, then all software is math. If that program is not math, please tell me what is.

From what I've seen, lawyers love to draw lines in the air, creating distinctions between things that are, in fact, formally equivalent. I have no doubt that they can, in fact, write some distinction that satisfies them legally, but in doing so, they will be creating a legal fiction wholly alien to mathematicians.

I believe it was Knuth who pointed out that there's no difference between numbers and other kinds of precise information.

<comment><USER13> The distinction is between the thing and the use of the thing. For instance, you can't get a patent on wood. You can get a patent on using wood to make some particular thing if the use of the wood there is novel, useful, and non- obvious.

Same with software and math. Software patents do not cover the mathematical aspects of software--they cover the use of the mathematics in a novel, useful, non-obvious way (at least when the patent office does its job during examination...).

<comment><USER15> The logical conclusion of what you're saying is that while you cannot patent the Pythagorean Theorem, you _could_ patent using the Pythagorean Theorem to solve triangles, perhaps in the context of architecture.

That is of course, patently absurd.

 _"Software patents do not cover the mathematical aspects of software"_

As Knuth explicitly notes in the materials I've already linked, trying to separate the math from the rest of software is a fundamentally flawed endeavor.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER17> I think that Microsoft Corp. v. i4i Limited Partnership, which was argued before the Supreme Court on April 18, may change how this plays out in the end.

"Since 1983, the courts have followed a clear, firm rule: In order to overcome the statutory presumption that a patent is valid, a litigant must provide clear and convincing evidence that a patent is invalid. That's a high hurdle to overcome. ... Many observers expect the Supreme Court will reject the current bright-line rule and, at least under some circumstances, make it easier for parties to attack the validity of patents." - [http://www.abajournal.com/magazine/article/court_may_make_it...](http://www.abajournal.com/magazine/article/court_may_make_it_easier_to_invalidate_an_invention/)

Previously on HN: <http://news.ycombinator.com/item?id=2453895> and <http://news.ycombinator.com/item?id=2464698>

</comment><comment><USER18> Here is a link to the full text of the patent in question: [http://patft.uspto.gov/netacgi/nph- Parser?Sect1=PTO1&Sec...](http://patft.uspto.gov/netacgi/nph- Parser?Sect1=PTO1&Sect2=HITOFF&d=PALL&p=1&u=%2Fnetahtml%2FPTO%2Fsrchnum.htm&r=1&f=G&l=50&s1=5,893,120.PN.&OS=PN/5,893,120&RS=PN/5,893,120)

<comment><USER13> Some people have trouble viewing images at the PTO site. Here's a copy as a PDF: <http://www.scribd.com/doc/53561493/Pat-5893120>

This was generated by the excellent site pat2pdf.org, which I highly recommend for those who want convenient copies of patents.

</comment></comment><comment><USER19> So here we go again. Last time there was a highly voted fosspatents article here it was completely bogus. And everyone chimed in about how this guy had ulterior motives:

<http://news.ycombinator.com/item?id=2355056>

</comment><comment><USER20> Misleading title, dubious blog. This is an anti-Google/Android blogger with likely ties to Google competitors.

<http://lwn.net/Articles/434587/>

<http://news.ycombinator.com/item?id=2428188>

<comment><USER16> I don't see what the author has to do with it. It links to the relevant patents & court files so you can read them yourself.

They just won a judgment against Google for using Linux. Granted, it was in East Texas, but that's where all the trolls file. This is exactly why software patents should not be allowed. I hope the patent gets invalidated soon.

</comment></comment><comment><USER21> are we actually sure of what is being reported??... he has miss-reported before

<comment><USER13> This is ridiculous. The author has a long and excellent record fighting against software patents. On a couple of occasions his analysis may have been an error, but I don't think he's ever mis-reported anything. You comment is just FUD.

<comment><USER22> There's a good chance that he's a paid anti-Google shill: <http://lwn.net/Articles/434587/>. Note that in this case he immediately jumps from the verdict to "Android is doomed", when the case had nothing to do with Android specifically except that it uses Linux, as do millions of other products.

<comment><USER6> How does that prove he's an anti-Google "shill", exactly?</comment></comment></comment></comment>


Disney researchers use electrical charge to create virtual textures - <AUTHOR> http://www.theverge.com/2012/8/9/3229804/disney-revel-virtual-textures

<comment><USER2> This is awesome. Think of the applications. Virtual buttons on touch screens. Dynamic Braille.</comment>


Cuwire – Better microcontroller IDE - <AUTHOR> http://apla.github.io/cuwire/

<comment><USER2> As far as I can tell this targets only Arduino microcontrollers. Is this correct? Anyone like to comment on how it compares to other Arduino IDEs?

<comment><USER3> > As far as I can tell this targets only Arduino micro controllers.

This appears to be the case[1], in fact it currently needs the Arduino IDE to be installed as well to work, though it appears they plan to expand to a wide range of platforms in future.

> Anyone like to comment on how it compares to other Arduino IDEs?

The official Arduino IDE is pretty terrible IMO, lacking autocomplete, a tree view, code folding etc. It does however make things very simple for beginners, with a big "upload" button making your code run immediately, and has the basics like syntax highlighting.

There are a few other Arduino IDEs available[2], as well as command line tools like ino[3] to compile Arduino sketches without needing the IDE, and there are plugins available for Visual Studio, Eclipse, Sublime Text etc, so you can use a much nicer text editor if you need to.

The articles IDE adds in symbol navigation (no autocomplete yet, listed as todo), and shows you a nice visual pie chart of how much flash/ram you have used. It also has a few other neat features like auto setting the serial baud rate[4]. It uses brackets.io[5] as its text editor, so presumably has all the text editing features that has too.

The main problem with the Arduino IDE is the lack of any debugging support that isn't serial output. No single step, no memory view, no breakpoints. This is fundamentally a problem with the hardware, as to keep the cost low the Arduino was designed to use a serial bootloader rather than a separate microcontroller to act as a debug interface. When dealing with intermittent hardware bugs, this can be very painful indeed. You can splash out on an external debug adaptor and debug your sketch with Eclipse[6], though this certainly isn't as beginner friendly. Similar priced boards like TI's MSP430 Launchpad, or Freescale's FRDM boards now come with debug hardware built in, but they are a lot less beginner friendly.

[1] [http://apla.github.io/cuwire/cli/Platforms/](http://apla.github.io/cuwire/cli/Platforms/) [2] [http://playground.arduino.cc/Main/DevelopmentTools](http://playground.arduino.cc/Main/DevelopmentTools) [3] [http://inotool.org](http://inotool.org) [4] [http://apla.github.io/cuwire/gui/FeaturesSerialMon/](http://apla.github.io/cuwire/gui/FeaturesSerialMon/) [5] [http://brackets.io](http://brackets.io) [6] [http://awtfy.com/2012/03/29/hardware-debugging-the- arduino-u...](http://awtfy.com/2012/03/29/hardware-debugging-the-arduino- using-eclipse-and-the-avr-dragon/)

<comment><USER4> It will be interesting to see what the end product of the Arduino Zero will be. To my knowledge they are taking SAM D21 Xplained Pro with the built-in debugger and making it into a Arduino Uno form factor. But it has been announce for quite awhile and no release date is in sight. I would think the hardware development time would be shorter but if they want a decent development environment it could take time to polish that.

</comment></comment></comment><comment><USER5> What do I set the arduino folder to under linux? /usr/share/arduino?

<comment><USER6> /usr/share/arduino must be detected automatically. If you have issues, please check arduino version. cuwire is working with arduino 1.5.8 or later (including 1.6.x). but most of the linux distribution include only 1.0.x.</comment></comment>


Burned house horizon - <AUTHOR> https://en.wikipedia.org/wiki/Burned_house_horizon <comment><USER2> An oddly interesting mystery. I could imagine a culture deciding that there is some worthy symbolic value in renewal by fire.

In Japan there is the Ise Grand Shrine which is torn down and rebuilt every 20 years since year 692. The design is unique, specified exactly and never changes so it is always both ancient and freshly new.

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

</comment><comment><USER3> Irish "travellers", related to Romany gypsies, still burned the caravan of someone who died, at least up to 25 years ago (when I was a kid living close to a halting site). Maybe someone should ask them why they do that.

<comment><USER4> They still do this:

[http://www.dailymail.co.uk/news/article-3613126/Travellers-b...](http://www.dailymail.co.uk/news/article-3613126/Travellers- burn-four-caravans-Queen-Gipsies-possessions-ancient-rite.html)

</comment></comment><comment><USER5> Clearly, this is what they did when they found a spider of sufficient size in their hut.

<comment><USER6> This idea is actually in the article:

> _Fumigation: Another theory posits that the fires were used for sanitary > reasons to smoke or fumigate a building, in order to get rid of pests, > disease, insects, and /or witches. However, the evidence does not support > this viewpoint. All of the structures within these settlements were > completely burned and destroyed. Because the damage from the fire was almost > total for the entire settlement, it would be illogical if fumigation was the > only intent._

<comment><USER7> while I enjoy the spider meme I liked the last proposed idea that the culture treated it as the end of life for the house. perhaps it was tied to a certain number of generations having come and gone.

the question I have is, how much at risk did this put these people at, did it retard their ability to expand?

<comment><USER8> I have my own theory - artificial scarcity. They needed to keep their builders, potters and glass makers in business.

<comment><USER9> Yeah, they were probably already aware that real estate bubbles are dangerous for the economy.

<comment><USER10> Now on HGTV 'Flip or Flop: Neolithic'

</comment></comment></comment></comment></comment></comment><comment><USER11> Despite the fact the article suggests it's not the probably cause, this does make me abstractly wonder if there could be some sort of virtue in firing a clay house. In modern times we'd probably go with concrete if we were going to go that route, but ceramic is more available back then. Then again, getting good kiln temperatures from a neolithic fire could be a challenge. Although depending on how you constructed your clay house it might just be possible to fire it with a fire from the inside and retain enough heat to fire the house. Though possibly you're designing a house from the get-go that won't have adequate airflow.

Anyone familiar enough with ceramics to comment on it? (Bearing in mind I do fully expect this to be impractical on the grounds that nobody seems to do it. I'm more interested in the process of intellectually kicking the idea around than the probably-trivially-easy act of shooting it down.)

<comment><USER12> 'Geltaftan':

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

<comment><USER11> Thank you! That is exactly the sort of thing I was hoping to scare up. Didn't even occur to me that there might be a result for that sort of a search.

</comment></comment></comment><comment><USER13> I wonder in 3,000 years (after a loss of many records) if they'll be debating a "Burned Man Theory", and trying to figure out why some weirdos kept setting up and burning a man every year in the middle of nowhere.

<comment><USER14> If they do, the Burning Man crowds need better lessons in "Leave No Trace"

<comment><USER15> They might not have traces of the actual event. Rather, there will be mentions of it in articles and leftovers from social media. Pictures and stories of it.

It will likely be written in some weird version of English, and they won't really know for certain if they have the terms correct.

And this is just going by what we have now.

And then some occult kids somewhere will think it is pretty cool, and make up a story to go with it. And the cycle will continue. (or not, but it seems like a good ending).

</comment></comment></comment><comment><USER16> My first thought was disease or outbreak prevention.

<comment><USER17> Yes. Makes sense to me, and probably the habit had been ritualistic. Hence a combination of fumigation and religion.

What kind of diseases would actually be prevented by burning down single towns though?

<comment><USER18> This was prehistoric. How much knowledge did they actually have of diseases and their causes?

You'll still contract smallpox from your neighbour regardless of whether you burnt your village down or not.

<comment><USER19> They didn't have to know any details about diseases and their causes. It's enough if they noticed that people living in the village were getting sick all the time, while people living outside were not. Apparently 'something' had gotten into their village and it made sense to burn it down and build it up again.

And I guess it worked because burning their villages was a way to get rid of disease spreading pests and insects.

<comment><USER20> Driving out evil spirits is a perfectly workable theory in a culture lacking both the scientific method and microscopes.

</comment></comment></comment></comment></comment><comment><USER14> This doesn't sound all that different than the tear-downs I see happening in 50-60 year old neighborhoods in Denver. (And presumably other cities.) The cheaply built post-WWII homes are wearing down, so developers bulldoze them and build something bigger and shinier. Stick-built suburban homes are probably looking at the same fate in a few decades, too. So if your building technology has a lifespan, and bulldozers do not exist, sure, why not burn and rebuild? It would provide better shelter than trying to sustain a structure that is falling apart.

<comment><USER21> YES. As an architect currently renovating a nightmare of a 100-year old building, I completely agree with you here. I feel like the article is missing a little bit the perspective of people making buildings.

The older and more broken a building gets, more often than not it's easier and quicker to rip everything out and build anew than to fix a problem. Contractors hate fixing other peoples' work and would rather rebuild pipe, conduit, masonry, etc, rather than fix it.

I can imagine that with Neolithic building technology, buildings had a limited lifecycle - cracking, mold/rot, etc, and eventually got to a point where each building would have to be demolished. Burning would probably make demolishing earlier - be the quickest way to turn everything into easily moveable ash and rubble so the lot could be cleared for building again.

See also: stubble burning ([https://en.wikipedia.org/wiki/Stubble_burning](https://en.wikipedia.org/wiki/Stubble_burning))

</comment></comment><comment><USER22> Didn't find it in the article but is "scorched earth" a possible reason? I am guessing not as the article would have said so. And there were not large organized armies during that time...

<comment><USER23> That's mentioned under the "Theories" section, #3 Aggression. It says it's unlikely because they haven't found burned remains inside the houses, or nearby remains that show signs of a violent death.

<comment><USER22> That's different. I saw the "Aggression" paragraph. That implies burning happening during the battle with victims in the buildings?

"Scorched Earth" means burning buildings, destroying crops, covering up wells ahead of time to deny invaders those facilities. Then presumably fleeing into the woods or mountains...

<comment><USER23> It seems "scorched earth" can have two closely related definitions:

" _A scorched-earth policy is a military strategy that targets anything that might be useful to the enemy while advancing through or withdrawing from an area. [...] The practice can be carried out by the military in enemy territory, or in its own home territory._ "

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

Still though, the "Aggression" paragraph seems to imply that researchers believe that war was not common in these societies.

</comment></comment></comment></comment><comment><USER24> Just to add to the discussion, there is a _mythical_ practice in my part of the world called lapot: [https://en.wikipedia.org/wiki/Lapot](https://en.wikipedia.org/wiki/Lapot).

As far as I know, the existence was never confirmed. But maybe the purpose is the same?

<comment><USER8> "In some places corn mush was put on the head of the victim to make it seem as if the corn, not the family, was the killer."

Simpler times..

</comment></comment><comment><USER25> In this case, "horizon" is used in the archaeological sense of "a level of an excavated site representing a particular period."

</comment><comment><USER26> Wait, no one else here does this?

<comment><USER27> Yes, but with JavaScript frameworks every year or so

</comment></comment><comment><USER28> Perhaps they had a primitive insurance system and an easy claims process. /jk

It isn't easy to look at a civilization from so far away and determine why they did things. But in a primitive society, burning might be the easiest method of demolition.

</comment><comment><USER29> In Romania it's well known that we used to burn down our crops and poison the wells before the Turks or Ottomans would come.

</comment><comment><USER30> About 10 years ago I was told that Detroit MI has/had a similar "tradition" around Halloween.

[https://en.wikipedia.org/wiki/Devil's_Night](https://en.wikipedia.org/wiki/Devil's_Night)

</comment><comment><USER31> The final theory in the article, #7: "Symbolic end of house" makes the most sense to me based on the refutations listed for the other theories...

</comment><comment><USER32> Obviously dragons.

</comment><comment><USER33> Maybe they crave light so badly during solar eclipses that they burn their entire settlements just for the light?

For those unfamiliar: Nightfall</comment>


Reverse engineering a custom CPU from a single program - <AUTHOR> https://www.robertxiao.ca/hacking/dsctf-2019-cpu-adventure-unknown-cpu-reversing/ <comment><USER2> I spent a summer doing something very similar to this at a major military radio manufacturer in the mid 90s - it turned out that one of their product lines from the late 70s used an entirely custom 8-bit CPU for which the instruction set had somehow been entirely lost. However, they still had the firmware on a stack of EPROMs. So, the mission was to reverse engineer the old CPU to reimplement it on a modern DSP. Turned out that you can get surprisingly far based on a frequency analysis of things that look like opcodes ("let's assume it has two accumulator registers; that loading is the most common instruction; etc."), making some educated guesses about how the designer would have allocated the opcode bits, and then plonking a HP logic state analyser straight over the top of the 32-pin DIL to check the hypothesis. Fun times :)

<comment><USER3> I'm curious as to why you call the package "DIL" instead of "DIP". I've never heard them called "DIL" before.

<comment><USER4> i'm gonna guess it's because L and P are next to each other on the keyboard.

<comment><USER5> Good ol' DI;s

</comment></comment></comment></comment><comment><USER6> This is pretty much the same process we went though to reverse engineer the custom "VPU" instruction set for the co-processor that the Raspberry Pi's firmware runs on.

We used the publicly available bootcode.bin and loader.bin to RE most of the ISA before the Pis even started shipping, though there were some more obscure instructions that we weren't sure about until we could run our own code.

But when my pi did arrive, we knew enough to write a binary that would blink an LED on more-or-less the first attempt.

I guess the real lesson, custom ISAs are not a good form of security.

<comment><USER7> Security by obscurity is, in general, not a great idea.

<comment><USER8> Depends on your needs and the threat profile.

</comment></comment></comment><comment><USER9> Cool! This reminds me a lot of this[0] where there was a specification for a custom VM in a newspaper along with a binary. It still blows me away when I read how they solved the puzzle.

[0] [https://safiire.github.io/blog/2017/08/19/solving-danish- def...](https://safiire.github.io/blog/2017/08/19/solving-danish-defense- intelligence-puzzle/)

<comment><USER10> I imagine that this would be a good way to find some of the best reverse- engineers in the world :)

<comment><USER11> > I imagine that this would be a good way to find some of the best reverse- > engineers in the world :)

Just a consideration: aren't the names of these persons "principally" known (at least if you are willing to do some investigations) if you are a company/government agency that has an interest in them?

<comment><USER12> Nope. How would you find out who reverse engineers a lot and gets good at it?

Some names will be popular through fame or common channels, but you'll never get a full list. Especially RE when some of their activities aren't legal and they don't want to be found.

<comment><USER11> > Especially RE when some of their activities aren't legal and they don't want > to be found.

I have trouble believing that if you don't want to be found, you will participate in a reverse-engineering competition with your real-life identity.

<comment><USER12> No you wouldn't. I was responding to this ideas that all the really skilled people are well known.

</comment></comment></comment></comment></comment></comment><comment><USER13> Hah, I use that "resize the window until aligned/a pattern emerges" trick, too. If you think about it, humans' pattern recognition over vision works impressively well. I'm sure there is plenty of reason why we evolved that way, but the fact that you can take that ability and adopt it to something which is completely artificial and "unnatural" (file representations on a screen), completely without any conscious effort (you just resize the screen until you suddenly intuitively "perceive" a very abrupt and markant change), is amazing.

<comment><USER14> That is fun with an FPGA bitstream. Used parts of the chip can look like a fluffy cloud.

</comment></comment><comment><USER15> I was following along OpenTechLab [0] as they tried to reverse engineer a real CPU used in HDMI repeaters. The instruction set was already partially reversed [1], but gaining code execution allowed a small stub to be written to infer more based on before & after register states.

[0] [https://opentechlab.org.uk/](https://opentechlab.org.uk/)

[1] [https://github.com/v3l0c1r4pt0r/lkv-wiki/wiki/Instruction- Se...](https://github.com/v3l0c1r4pt0r/lkv-wiki/wiki/Instruction-Set- Architecture)

<comment><USER16> Finally mentioned CPU turned out to be a core with OpenRISC architecture, but nevertheless it was quite interesting challenge. I did my part, based completely on source file, I was sure was compiled into binary (part of FreeRTOS), but, yes, possibility to execute code and observe the results allowed guy from opentechlab to achieve a lot more than I did.

</comment></comment><comment><USER17> As someone who sees a lot of different assemblers I really enjoyed this read. But the most important lesson learned for the next CTF: Just probe the PRNG and see if it is predictable :P

<comment><USER18> Yes, enjoyable and good ideas. I feel like I've been on that "project" before. You do a bunch of work, dig into things and then discover a simple answer that, in hindsight, could have been applied immediately and made all the investigation irrelevant.

Usually out of pride or the sunk cost fallacy (or something like it) I'll convince myself there was no other way the problem was going to be solved. Either way the next time around I spend just a little bit longer trying to think of an easy way out.

</comment></comment><comment><USER19> > We internally had a bunch other names for these things – I called them > kibbles, and Zach called them hecs.

Being a CTF challenge, I'm surprised that they didn't settle on something decidedly more rude ;) I wonder if the organizers can release their assembler for the architecture, or a spec at least…

<comment><USER20> The author has released their tooling: [https://github.com/koriakin/cpuadventure/blob/master/README....](https://github.com/koriakin/cpuadventure/blob/master/README.md)

<comment><USER19> Thanks!

</comment></comment></comment><comment><USER21> I'll contribute the obvious observation that game system emulators are reverse engineered in this way. Most of the time CPU specs are available but in some cases a weird custom DSP on a cart or other co processor needs to be figured out and this is the kind of puzzling that does that.

</comment><comment><USER22> I once reverse-engineered the complete instruction set of the CPU in a pocket calculator with a built-in BASIC interpreter. That was fun. My disassembler and assembler BASIC programs are still functional today.

<comment><USER23> That sounds awesome. If you don't mind, could you talk about what you did some more?

<comment><USER22> It's a Sharp PC-E500S. The BASIC has PEEK, POKE, and CALL (for running assembly) commands, which is all you need for a hacking orgy. I'm not sure you could even still get hold of that hardware today.

</comment></comment></comment><comment><USER24> How did they even get the game running in the first place?

<comment><USER25> There was a server that we socat'ed into. (I made some minor contributions to solving this problem on PPP)

</comment></comment><comment><USER26> very nice write up :D good job!</comment>