Show HN: Untrusted, a JavaScript adventure game you play by modifying its source - <AUTHOR> http://alex.nisnevich.com/untrusted/ <comment><AUTHOR> Hey guys, one of the developers here.

Thank you all so much for all of your feedback! I never thought this game would become so popular.

It seems that our server is more or less overloaded right now, so AJAX requests for new levels are sometimes failing. This appears to be the cause of the bugs that some of you have experienced where levels load incorrectly or are overwritten by previous levels. Sorry about that. :-/ We will work on making the game more robust in the case of failures like this.

If you want to run the game locally, you can clone it from [https://github.com/AlexNisnevich/untrusted](https://github.com/AlexNisnevich/untrusted) and follow the instructions there.

<comment><USER2> I installed the latest version of this, and of Node, on my Windows computer, and I had to change "~/node_modules" to "./node_modules" in the final line of Makefile (in the "runlocal" target) - the http-server module was installed in the current directory. Otherwise it's working great; thanks!

<comment><AUTHOR> Good catch -- I fixed the Makefile to actually go along with how http-server is installed in the README.

</comment></comment></comment><comment><USER3> The level files are 503ing, but it looks like the level counter is still incrementing if I go out of the exit and back in again. You might want to add some response code validation in.

        GET http://alex.nisnevich.com/untrusted/levels/10_ambush.jsx 503 (Service Unavailable) jquery.min.js:6
        GET http://alex.nisnevich.com/untrusted/levels/11_robot.jsx 503 (Service Unavailable) jquery.min.js:6
        GET http://alex.nisnevich.com/untrusted/levels/12_robotNav.jsx 503 (Service Unavailable) jquery.min.js:6
        GET http://alex.nisnevich.com/untrusted/levels/13_robotMaze.jsx 503 (Service Unavailable) jquery.min.js:6
        GET http://alex.nisnevich.com/untrusted/levels/14_crispsContest.jsx 503 (Service Unavailable) jquery.min.js:6
        GET http://alex.nisnevich.com/untrusted/levels/15_exceptionalCrossing.jsx 503 (Service Unavailable) jquery.min.js:6
        GET http://alex.nisnevich.com/untrusted/levels/16_lasers.jsx 503 (Service Unavailable) jquery.min.js:6
        GET http://alex.nisnevich.com/untrusted/levels/17_pointers.jsx 503 (Service Unavailable) jquery.min.js:6
        GET http://alex.nisnevich.com/untrusted/levels/19_documentObjectMadness.jsx net::ERR_CONNECTION_REFUSED jquery.min.js:6
        GET http://alex.nisnevich.com/untrusted/levels/20_bossFight.jsx net::ERR_CONNECTION_REFUSED jquery.min.js:6
        GET http://alex.nisnevich.com/untrusted/levels/21_endOfTheLine.jsx net::ERR_CONNECTION_REFUSED

<comment><AUTHOR> Sadly, our server couldn't handle the load.

I've set up a mirror at: [http://alexnisnevich.github.io/untrusted/](http://alexnisnevich.github.io/untrusted/)

We're currently working on handling the AJAX responses more robustly. The level counter should no longer increment on a failed request.

<comment><USER4> Thanks for the fun game!

Could you possibly help us by putting in a ruler that marks the map coordinates? Yes, I can read the code to find where things are (or count), but there were a few times where it was somewhat inconvenient.

<comment><AUTHOR> Thanks for the feedback! We've been thinking about doing that, but the challenge is making it inconspicuous enough to not clash with our minimalist aesthetic.

<comment> V-2 It could be more discrete, eg. an apostrophe every 10 blocks.

</comment></comment></comment></comment></comment><comment><USER5> Here's an Iron Man inspired solution for the boss battle :)

        map.placeObject(map.getWidth()/2, 5, 'block');
        //map.placeObject(map.getWidth()/2, 1, 'block');
        var player = map.getPlayer();
        map.defineObject('missile', {
            'type': 'dynamic',
            'symbol': '^',
            'color': 'blue',
            'interval': 100,
            'projectile': true,
            'behavior': function (me) {
                me.move('up');
            }
        });

        function jericho()
        {
        	var i;
        	for (i = 3; i < map.getWidth() - 3; i++)
            {
            	map.placeObject(i, map.getHeight() - 1, 'missile');
            }
        }
        player.setPhoneCallback(function()
        {
        	jericho();
        });

<comment><USER6> For the truly lazy, this was my approach:

        map.overrideKey('up', function() {
            if (map.countObjects('boss') > 0) {
                for (var x = 0; x < map.getWidth(); x++) {
                    map.placeObject(x, map.getHeight()-5, 'missile');
                }
            } else {
                map.overrideKey('up', null);
            }
        });

<comment><USER5> Nice. Lacks drama though, where's the dash through the rain of bullets to recover the missile launcher? :D

<comment><USER7> I monkey-patched Math.random() to launch horizontal missiles at the top of the screen and always return 1.

:-)

</comment></comment></comment></comment><comment><USER8> This worked for the whole first chapter for me (and has some obvious further applications):

        startLevel["constructor"]("m",
        "console.log(m);" +
        "var old = m.placeObject;\n" +
        "m.placeObject = function(x,y,t) { \n" +
        "console.log(t);\n" +
        "if (t === 'exit' || t === 'computer') {\n" +
        "console.log('adding' + t);\n" +
        "return old['ca' + 'll'](m, x,y,t) }};")(map);

EDIT: I wonder if you could wrap the user's code in, e.g. [https://code.google.com/p/es- lab/wiki/SecureEcmaScript](https://code.google.com/p/es- lab/wiki/SecureEcmaScript), and use this to gamify finding bugs in that sandbox :-)

<comment><USER9> nice!

similarly,

        var oldPlaceObject = map.placeObject;
        var newPlaceObject = function(x, y, type) {
        	if (type !== 'block') {
            	map.placeObject = oldPlaceObject;
            	map.placeObject(x, y, type);
                map.placeObject = newPlaceObject;
            }
        };
        map.placeObject = newPlaceObject;

was my solution to multiple levels ;).

<comment><USER10> I also had to overwrite the map.verifyXitems (or whatever it was) to return true regardless.

</comment></comment></comment><comment><USER11> I love this game! Such a cool idea, and very well executed.

My biggest critique so far is that it's extremely hard for me to tell the difference between #311 and #000 for the `.disabled` lines (I'm mildly red- green colorblind). Changing it to #711 fixed it for me, but I can imagine it would be impossible to even see #F11 for certain colorblind individuals. Perhaps some other kind of indication that a line is editable, or a more drastic #FFF/#000 distinction?

<comment><USER4> That can be solved without changing the colors of anything, BTW :)

<comment><USER4> I just realized that I misread you and it's too late to edit. You're talking about lines of source code (and I do agree, I was really confused on the level where you can only edit a tiny section of code I missed), whereas I thought you were referring to the lasers puzzle (I just moved the exit for that).

</comment></comment></comment><comment><USER12> This is fun. But I have one wish. Overwrite console.log() so it logs onto the website and I don't need to open firebug :)

Edit: I think I solved lvl two to four all the same way. Not sure if that's intended. But I also don't want to spoil it for others.

Edit 2: This worked again at lvl 6, so I'll assume that's a bug. Click this pastebin for spoilers: [http://pastebin.com/yfhDhE7P](http://pastebin.com/yfhDhE7P)

<comment><AUTHOR> Good catch! We haven't been checking yet for tampering with functions, but we probably should. Don't think of it as a bug so much as a cheatcode you discovered :-)

<comment><USER13> Aww, I thought that was to easy. That trick works for basically any level.

Also, is there a good way to completly prevent tampering with functions, or is this just going to be an arms race?

<comment><USER14> > _Also, is there a good way to completly prevent tampering with functions, or > is this just going to be an arms race?_

Let's hope for an arms race - it will be far more fun and educating at the same time.

<comment><USER15> hmm a multi player javascript API tampering arms race game would be pretty awesome too.

</comment></comment></comment></comment></comment><comment><USER16> You should reinit the map though, otherwise doing this on level 2 causes funny bugs (and makes the game rather easy ;)

        maze.create = function() {};
        var tmp = map.placeObject;
        map.placeObject = function(x, y, t) {
        	if(t == 'exit') tmp(x,y,t);
        };

<comment><USER17> level 2 can be solved by using the two "unlocked" lines to comment out the whole maze.create call, too.

<comment><USER18> Related: things like these do not work, because of implementation.

        if (false) // <- inserted by me
        for (var ...) { // <- existing code
            ...code...
        }

Too bad, because extra `for`s could be fun...

</comment></comment></comment><comment><AUTHOR> Attention!

The main site is overloaded, but I've set up a mirror at: [http://alexnisnevich.github.io/untrusted/](http://alexnisnevich.github.io/untrusted/)

All level-loading issues should be resolved on it, since they were tied to AJAX failures. Let me know if you experience any problems on the mirror site.

<comment><USER19> Thanks for the game! Credits don't load on the mirror - I get a 404 on the AJAX call.

<comment><AUTHOR> Oops, it should work now.

</comment></comment></comment><comment><USER20> That was great,

Here's making the boss kill itself

[https://gist.github.com/anonymous/2d45242a73f72847417b](https://gist.github.com/anonymous/2d45242a73f72847417b)

<comment><USER18> Much earlier but: defense by excessive reaction.

[https://gist.github.com/anonymous/0bd9b9d36892ffe6dbbf](https://gist.github.com/anonymous/0bd9b9d36892ffe6dbbf)

<comment><AUTHOR> These are both beautiful.

</comment></comment></comment><comment><USER21> I solved the jump/gravity level without having to edit any code, dunno if that's supposed to be possible, but: if you press+hold the UP key, keyboard repeat rate will be fast enough that you "fly", allowing you to cross the gap (and even save yourself if you happen to fall in it).

I also solved the DOM level without editing anything, I just pressed some keys and it transported me to the next level before I even had an idea what was going on.

(im playing on Firefox / Linux, in case that makes a difference)

Oh and thanks for this game, it's EXTREMELY COOL and I had a lot of fun playing it all the way to the credits screen (and I'm going to go back now to see if that's _really_ the last level or not ...)

</comment><comment><USER22> You had me at "The continuing adventures of Dr. Eval"

</comment><comment><USER23> Am I the only one spending more time on figuring out how to cheat than actually doing the level the way you are supposed to?

</comment><comment><USER24> Level 6 can be cleared without modifying the code at all:

[http://home.iitb.ac.in/~pritambaral/level6.mp4](http://home.iitb.ac.in/~pritambaral/level6.mp4) (16K)

[http://home.iitb.ac.in/~pritambaral/level6.webm](http://home.iitb.ac.in/~pritambaral/level6.webm) (31K)

[http://home.iitb.ac.in/~pritambaral/level6.gif](http://home.iitb.ac.in/~pritambaral/level6.gif) (161K)

EDIT: Seems to have been fixed. Leaving comment for archival purposes?

<comment><USER25> Seems to have been fixed; I now see [http://i.imgur.com/dQeC01W.png](http://i.imgur.com/dQeC01W.png)

<comment><USER26> Level 6 doesn't work for me at all. I can get there several ways but the exit doesn't function.

Also, is it possible for counter drones to kill the red drone? Mine wouldn't, all they do is block him.

</comment></comment></comment><comment><USER27> This must be resulting in a lot of new gists on GitHub... is it odd that I wish I could sign in with my GitHub account so that the level saves showed up as gists under my name?

</comment><comment><USER28> Pretty cool game bud, I actually think this is a superior environment for learning to program than many of the richer 3-d interfaces I've seen.

</comment><comment><USER29> THANK YOU.

I have 0 knowledge about writing all kinds of code. This is perfect to start with. Specially thanks to the API part.

</comment><comment><USER30> This is fun! But I've run into a problem. Advancement past level 14 seems to be bugged; upon completion, the keys in my inventory were replaced with a capital A which I assume to represent the algorithm, but then level 14 reloaded with a message at the bottom saying "You have lost the Algorithm!" Re-completing the level works, but the same thing happens, as many times as I like; the last time, I saw "run 17_pointers.jsx" scroll past, but still got the map and code for level 14.

My solution to level 14 [1] involved a state variable on the me object; could that have broken something?

[1] [https://gist.github.com/anonymous/8e4f11c26e5e6fe3d7d6](https://gist.github.com/anonymous/8e4f11c26e5e6fe3d7d6)

<comment><AUTHOR> This seems to be tied to a bug some other people have experienced where new levels don't load correctly and are overwritten with existing levels.

Try going to level 15 and resetting the level (Ctrl-4). Does that help at all?

<comment><USER30> It does! Thanks, and thanks for a fun, engrossing diversion on a rainy Monday afternoon.

(Update: Each time I enter a level, it loads as level 13, and I have to reset it to get the correct map and code -- just a heads-up in case it helps with debugging. Chrome 33.something, Windows 7 x64.)

</comment></comment></comment><comment><USER31> Very cool! I'm stuck on level 7 because it seems that the script isn't editable _anywhere_. Related note, the color scheme for highlighting editable lines might want to change, because "black on dark maroone" doesn't exactly jump out.

Love that you're auto-gisting solutions. That was clever - I presume you are browsing through searching for the common description tag? I also like the API popup, although I didn't see it until I got stuck on the (uneditable) level 7. I verified this because $('.editableLines') == [] in console! Perhaps this is a very fancy meta-game that you can only win with a pull request? :)

<comment><AUTHOR> Thanks!

Does your level 7 not look like [http://i.imgur.com/AFTxPWC.png](http://i.imgur.com/AFTxPWC.png) ?

<comment><USER32> He means level 8, I think. Or at least I have the same problem with level 8 (intoTheWoods)

<comment><AUTHOR> Oh, there's a small bit of editable text at the bottom of level 8 (line 100). Sorry if it's not very clear - we may work on the color scheme a little.

</comment></comment></comment></comment><comment><USER33> Very cool game, thanks :) One minor issue in the API docs:

canvasContext.beginPath() Begins drawing a new shape. canvasContext.beginPath(x, y) Sets the end coordinates of a line.

this second beginPath should be lineTo, took a minute to debug in level 16 :)

<comment><USER34> lineTo doesn't work anymore so level 16 is broken :'(

</comment></comment><comment><USER35> Chrome seems to crash every four or five levels and it forces me to reload the page. It's a tad annoying going back through my levels.

Perhaps consider a level select, since it's able to remember your solutions?

<comment><AUTHOR> There is a level select! :-) It's in the Menu (Ctrl-0). We really should bring more attention to it.

<comment><USER35> Ah, yes. That's very convenient.

I don't see anywhere to edit on level 21, and level select says there's one more...

<comment><AUTHOR> Hmm, do you notice anything different about the menu now that you're on level 21?

<comment><USER35> Credits don't load. t_t

EDIT: OK they load now, servers must have been busy.

EDIT2: Credits load on the main site but not on the mirror.

</comment></comment></comment></comment></comment><comment><USER36> Level 5 should have more mines.

With only 75, the level is easily solved via [https://en.wikipedia.org/wiki/Big_sky_theory](https://en.wikipedia.org/wiki/Big_sky_theory)

<comment><USER37> Why, it's not about the number of mines, so long as there's a path, it's very easy to solve. The number of mines is irrelevant.

</comment></comment><comment><USER38> Anybody think of another way to do the robot levels without adding any state?

[https://gist.github.com/db41e069df7bae142248](https://gist.github.com/db41e069df7bae142248)

<comment><USER39> [https://gist.github.com/anonymous/12b15e3de9340655ed78](https://gist.github.com/anonymous/12b15e3de9340655ed78)

Variable to control the direction the robot moves, changed with the function phone.

</comment></comment><comment><USER40> Content note: plays sound.

Did the quick ^W at work :|

<comment><USER41> The tab only plays sound while active here, a nice touch I think.

</comment></comment><comment><USER42> I broke level 4. Is there an obvious way that I am missing to reset at the level you're on when the reset functionality provided under the text editor is insufficient?

<comment><AUTHOR> The Reset button should completely reset editor state for the level. What happened?

<comment><USER42> Btw, I should have said first that I love this game idea and myself and my coworkers have been playing it a bit for the last 20 minutes or so.

I broke my game by reassigning the getWidth method to return an invalid value:

map.getWidth = function() { return 1; }

The approach worked with a valid value: ( map.getWidth = function() { return 6; } ) and I beat the level, but I had to replay the previous 3 levels.

Some suggestions (Again, we loved the game!) \- Provide some interface to conveniently index all the solution Gists. \- Provide some way to quickly skip to last level played.

Other thoughts: \- Enjoyed the look, feel, and user interaction. \- The music was great. \- I will keep playing this game. :)

<comment><AUTHOR> Oh, quick note - you can skip to the last level played in the Menu (Ctrl-0). We should probably make that more obvious.

<comment><USER42> Ah - I see what menu does now. I love this game and have uncovered a few broken game states. This mainly happens when I reassign one of the API methods. Are you interested in user-submitted issues? Let me know; I could email them to you or log them on your GH; whatever is convenient.

<comment><AUTHOR> User-submitted issues would be great! Logging them on GitHub would be the most convenient.

</comment></comment></comment></comment></comment></comment><comment><USER43> Using CTRL+Q for the phone is dangerous on a mac, as it's easily confused with APPLE+Q which closes the browser window, losing your progress.

\---

Edit: it saves the game state in localstorage; kudos!

<comment><USER44> At the top left, in 'Chrome', there's a useful 'Warn before Quitting' option.

</comment></comment><comment><USER45> Very fun. I found a bug that lets me skip levels 8-11 by using this code in the phone callback on level 7:

      if ( ! ( player.cc && player.cc.length ) ) {
           player.cc = ['#f00', '#ff0', '#0f0'];
      }
      player.setColor(player.cc.shift());

It says it's loading the next level, but the code and gamefield remain stuck on level 7 until you push it to level 12.

<comment><AUTHOR> We're glad you like it!

No clue why that's happening, but we'll continue to investigate.

</comment></comment><comment><USER46> I'm not sure what happened with level 4 multiplicity, but I placed a 2nd exit inside the box. Then when I go through it says it completed the level but I'm still on the multiplicity level. Reseting does not fix. [https://gist.github.com/anonymous/0dafb64fad2ddd6fd451](https://gist.github.com/anonymous/0dafb64fad2ddd6fd451)

<comment><AUTHOR> A few people have reported a similar bug. I don't think that it's level specific but has something to do with the next level not leading correctly upon completing a level.

We're still not sure why it happens or when (it seems to only affect a few people), but we'll try to figure it out.

There aren't any errors you can see in the JavaScript console, are there?

<comment><USER47> It happened twice to me, once on 4 once on 8 I think. Both times it happened when I went through the exit then went back to it.

</comment></comment></comment><comment><USER48> On level 15, my deaths keep changing the editable window. I'll die and then the last several characters (4 I believe) of my code get swapped to uneditable until I reset.

I'm also encountering a bunch of exceptions during game execution instead of at build, which are making things rather hard to beat. I'd list them but they vanish faster than I can read them.

</comment><comment><USER49> Does anyone know of a nice way to unlock levels for the mirror? I'm on the first jQuery one but all I see is black text on a white screen. No players and nothing changes when I use the arrow keys. I can't find anything in the code I can edit either. I'd like to try the mirror but I don't want to have to play though the whole game again?

<comment><AUTHOR> Can you show me what the jQuery level looks like for you? I want to make sure that it's working correctly.

<comment><USER49> It's fixed now with the servers no longer overloaded (although for some reason I had to start again).

What was happening was that the highlighting of you and the boss were not showing. So just the page without anything interactive.

</comment></comment></comment><comment><USER50> Not sure if you noticed this yet or not, but it is possible to comment all code following an allowed block by leaving an open "/*". This allows the player to write their own code to overwrite what should be uneditable.

not sure if you would want to disallow this or not, but i find it allows for some interesting hacky solutions.

</comment><comment><USER51> Awesome game.

One thing it drives home for me is just how distracting music is when I'm trying to code. It pulled up that first listing and I literally _could not parse it_ until I muted the audio. Then it immediately turned back into code.

It's like music just turns off the switch that connects the eyeballs to the brain. Amazing.

</comment><comment><USER52> This music is awesome. What genre is it?

<comment><AUTHOR> It's from a combination of electronic sub-genres by some independent artists. You can see the full list of tracks here: [https://github.com/AlexNisnevich/untrusted#soundtrack](https://github.com/AlexNisnevich/untrusted#soundtrack)

</comment></comment><comment><USER53> I wasn't sure how to show all the mines on the minesweeper map, so I just place them all at the top... was this supposed to be the point? :)

Anyhoo, nice game, it doesn't matter how you solve it, as it still proves that eval is evil ;)

<comment><USER12> Ctrl+1 for API docs. There's an API to change the color of a tile :)

</comment></comment><comment><USER54> Very fun, however once I reached the level with the DOM, I catched the opponent but the game went crazy and submitted a lot of queries to Gist (when I closed the tab, the counter was at 64, and Github was serving 403).

</comment><comment><USER55> In order to fix that short delay before movement when you hold down a movement direction you should make pressing the arrow keys set a corresponding movement boolean to true. Then just move whenever the boolean is true.

Great game!

</comment><comment><USER56> I actually used a "private API" in level 14, crisps contest.

[https://gist.github.com/anonymous/dacd3f1de73a59b5983e](https://gist.github.com/anonymous/dacd3f1de73a59b5983e)

Is this cheating?

<comment><USER57> I completely cheated (added an extra key by setting a trace in the console) because I looked for an editable line for about 10 minutes and couldn't find it.

Solved it now by changing greenKey to theAlgorithm

<comment><USER58> Could you explain how you would do this? There doesn't seem to be an editable line, what's the trick?

</comment></comment></comment><comment><USER59> I reach level 60, says the counter(just because the game buged after i try to clear level 6): [http://imgur.com/ty9JlXz](http://imgur.com/ty9JlXz).

<comment><USER60> Same thing happened to me on level 9 (I think?):

[http://i.imgur.com/eYHoebE.png](http://i.imgur.com/eYHoebE.png)

</comment></comment><comment><USER61> I really like that it has WASD/Arrow/Vim controls. Props.

</comment><comment><USER62> Level 12: remote control!

[https://gist.github.com/anonymous/dd3e906ad36d87158528](https://gist.github.com/anonymous/dd3e906ad36d87158528)

</comment><comment><USER24> Borks at level 7, upon touching phone with undebuggable message on canvas:

      d up the function p 1, found:oad the level
      Wone! number of exits ...

<comment><USER63> Alnis, love the game! But I also ran into unexpected behavior after clearing level 7 (change your color). It kept reloading the same level, but opening up new levels in Level select. Even so, clicking on higher levels keeps reloading the same colors.js screen.

Another weird thing I noticed was that next to the computer and telephone in the inventory, two letters "k" appeared. I'm using Firefox 28 on Windows 7.

Here's the solution I used for colors.js [https://gist.github.com/anonymous/ab5cd3b393c290fbf8c1](https://gist.github.com/anonymous/ab5cd3b393c290fbf8c1)

<comment><AUTHOR> This might be tied to the issue that mandlar, pokpokpok, and valgaze have been having, but I haven't been able to reproduce it yet.

Does resetting these levels (Ctrl-4) help at all?

<comment><USER63> Yes, Ctrl-4 does work, thanks for the tip!

</comment></comment></comment></comment><comment><USER64> I'm not sure what the real intention of the level "Multiplicity" was, but just placing an exit anywhere you want works just as well!

<comment><AUTHOR> Multiplying the exits is useful ;-)

<comment><USER64> Heh but then what was the real intention of the earlier maze level? I already multiplied the exit there :)

Anyway, really nice work with the game!

<comment><AUTHOR> Thanks! The intended solution to the maze level was commenting everything out. But of course, all of these have multiple solutions :-)

</comment></comment></comment></comment><comment><USER65> A simple nuclear trick for LvL two and on: [http://pastebin.com/c7vqzrU3](http://pastebin.com/c7vqzrU3)

</comment><comment><USER66> How long before "Twitch plays Untrusted"?

</comment><comment><USER67> Any tips for level 17? I can't seem to figure out a solution for the teleporters using the getObjectCoords hint that was given

<comment><USER68> I did it by drawing on the canvas to mark the way. (I'm trying not to spoil it, apologies if this is too vague).

<comment><USER69> I'm stuck on the teleporters one as well. Can we please have another hint?

<comment><USER70> This level is hard. It took me a while until I found the coords for the transporters I was looking for but in the end I done it :). tip: find the transporter from the spawn point and the one where the exits is and link them together

</comment></comment></comment></comment><comment><USER71> I forgot about comments on lvl 2 and used if(0){} and was wondering what the 4 was until I remembered / __/ , hah

</comment><comment><USER72> > "If you can read this, you are cheating! D:"

Loaded the site, popped open the Chrome Dev Tools, and was thoroughly disappointed.

<comment><USER73> Why were you disappointed?

<comment><USER72> Well, the title says you play the game by modifying the game's source. Turns out you don't modify the game's source, you modify specific snippets of code that are provided on the page.

Last weekend I hacked around in the source of various online games, I anticipated this to be a similar experience but was disappointed to find that we weren't supposed to actually change the game's source.

<comment><USER39> Well you can play it that way too, if you want. Try overriding some of the internal functions using creative methods. :)

</comment></comment></comment></comment><comment><USER74>
        map.validateExactlyXManyObjects = function() {};

lets you put an exit tile next to your character on every level

<comment><USER12> Been there, done that: [https://news.ycombinator.com/item?id=7548257](https://news.ycombinator.com/item?id=7548257)

</comment></comment><comment><USER75> I didn't get the last 3 DOM-based ones. I just randomly hit my arrow keys and until I completed the levels.

Otherwise a very cool game!

<comment><AUTHOR> Oh, only level 19 is DOM-based - level 20 and 21 are different. You may have been unable to load correctly them due to the stress on the server, but you should check them out at some point :-)

<comment><USER76> woot. got 21 too finally :)

</comment></comment></comment><comment><USER77> Level 1 just reloads after I get to the exit.

<comment><AUTHOR> The game was broken for a bit, and it's possible that your saved state got corrupted.

Try restarting the game by running localStorage.clear() in the JavaScript console, then refreshing the page. Does that fix it?

</comment></comment><comment><USER78> Seems to be overloaded now. Multiple 503s.

</comment><comment><USER79> Any tips for level 9? I can't seem to find a handle on the raft to be able to modify its behaviour directly.

<comment><USER80> Is there anything else you could modify to change what the raft does?

<comment><USER81> Yes...but I can't do it at an intelligent time.

<comment><AUTHOR> Do you have any tools available to you that let you execute code at a chosen time?

<comment><USER81> hah, I tried that multiple times, i get: You are not allowed to use call!

<comment><USER82> Yeah, it seems odd that the setPhoneCallback is forbidden in this level, because that solution would fit the sequence of levels very well. Luckily, there are other ways to cross the water, and some other commenters in the thread already hinted at them ;)

<comment><AUTHOR> setPhoneCallback works perfectly for me in level 9 -- in fact, it's my intended solution: [https://gist.github.com/anonymous/6e5606649b3cb0d60797](https://gist.github.com/anonymous/6e5606649b3cb0d60797)

<comment><USER82> Seems this was a combination of my mistake and a bug that you might have fixed in the meantime. I intended to assign the player object to a variable player but made a mistake. The resulting error message was "player.setPhoneCallback not allowed" or something like that, but that was yesterday and with a different browser version (Firefox). Now when I tried to reproduce it, I get "player is not defined", which is much more helpful :)

I suspect that the GP ran into the same problem.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER83> Any way I can go to a level directly? I was on level 12 but my computer died, and it did not save any progress.

<comment><USER84> Did you check the menu at ^0?

<comment><USER83> Ah, they were saved there! Thanks!

</comment></comment></comment><comment><USER85> This is awesome but it keeps repeating the first level! I get the solution but then it just reloads everything.

<comment><AUTHOR> The game was broken for a bit, and it's possible that your saved state got corrupted.

Try restarting the game by running localStorage.clear() in the JavaScript console, then refreshing the page. Does that fix it?

</comment></comment><comment><USER86> Is there any solution to the ambush level other than the obvious solution of moving the drones out of the way?

<comment><USER39> Of course. I made them harmless and walked right through them.

<comment><USER86> Tried that, but for some reason I couldn't disable the onCollision by assigning it to some dummy function. Do you mind sharing your solution?

<comment><USER39> I wish we could retrieve the solution we used for past levels. :(

Okay, I think I've replicated it. I just overrode onCollision with empty braces, so the final definition looked like this:

        map.defineObject('attackDrone', {
            'type': 'dynamic',
            'symbol': 'd',
            'color': 'red',
            'onCollision': function (player) {
                player.killedBy('an attack drone');
            },
            'behavior': function (me) {
            },
            'onCollision': function (player) {
            }
        });

Note that you're closing the game's braces, inserting another definition, then re-opening braces to match the game's closing ones.

</comment></comment></comment></comment><comment><USER87> I tried to move the exit inside the walls. I was unable to edit any of the code. I thought that was the point?

<comment><USER41> Ctrl+5 to reload the level after you changed it. Did you do that? On one of the levels I created a new exit inside, and it worked.

</comment></comment><comment><USER63> Is there an easy way to transfer progress between computers? (other than saving your solution Gists?)

</comment><comment><USER88> level 35! [https://gist.github.com/anonymous/25b4b4b56f844368a37c](https://gist.github.com/anonymous/25b4b4b56f844368a37c) here's to calling into the code behind using pattern matching and the nifty in operator

</comment><comment><USER89> Loved it, but exiting on Level 1 just causes level 1 to reload for me and never unlocks level 2.

<comment><AUTHOR> Does the mirror [[http://alexnisnevich.github.io/untrusted/](http://alexnisnevich.github.io/untrusted/)] work for you?

</comment></comment><comment><USER90> LV 20 Math.random = function() {return 1;} map.getPlayer().hasItem = function() {return true;}

</comment><comment><USER38> Any tips on level 15? Once the player is killed what could I possibly do?

<comment><USER91> I actually figured something out with this which is weird, because I don't think it has to do with exceptions. I passed in a new object of an undeclared type and just walked across the water, which I can't explain.

Can anyone help?

<comment><USER39> I'm trying with

        player.killedBy(function(){throw new Exception();});

...but then that just means I get killed by "function(){throw new Exception();}".

Edit: never mind, got it. Overriding onCollision helps. :)

[https://gist.github.com/anonymous/2868beb0cee19259ebb5](https://gist.github.com/anonymous/2868beb0cee19259ebb5)

</comment></comment></comment><comment><USER92> :'( I'm stuck at crispsContest.js lvl

<comment><USER93> This level was driving me crazy (mostly because of the character limit). The solution that I found is kind of silly: it turns out the removeItem function is dumber than you probably think it is.

<comment><USER39> A good solution would be to remove an invalid item, and the function should silently try to remove the invalid item, but still allow passage. For some reason, even when you have the green key, but try to remove an invalid item, it still doesn't let you through, despite apparently returning false (passable).

Additionally it doesn't support injection there, so while "player.removeItem('greenKey'); player.additem('greenKey');" should work, it says "TypeError: undefined is not a function".

<comment> 9193-on I approached it like this:

player.removeItem('greenKey'); return 0;} if(1==1){('');

Full link: [https://gist.github.com/anonymous/c78b439d8f2369e03f68](https://gist.github.com/anonymous/c78b439d8f2369e03f68)

Basically, this let's you delete the green item once. After that, it makes sure that return true is never reached (because of the 1==1), so next passages through green are allowed. Kinda liked the sneaky (''); myself :P

</comment></comment></comment></comment><comment><USER91> aww, I tried to sacrifice my phone for an easier solution for the last problem, but apparently I need it in the end.

</comment><comment><USER94> stupid drones, me.selfDestruct (tableflip)

<comment><USER95> I made a wall to circle around the drone. Pretty fun.

<comment><USER96> I found it easier to make myself invincible.

map.getPlayer().killedBy = function() {};

Drone just follows you around like harmless puppy.

[https://gist.github.com/anonymous/dfb6822e683ea7418ea8](https://gist.github.com/anonymous/dfb6822e683ea7418ea8)

<comment><USER97> Neo: What are you trying to tell me? That I can dodge bullets? Morpheus: No, Neo. I'm trying to tell you that when you're ready, you won't have to. :)

</comment></comment></comment></comment><comment><USER98> Can anyone give me a hint for level 12?

<comment><USER99> You're defining a robot's properties, so you might want to define its properties. That'll open the door to higher-level navigation logic.

(Being obtuse is difficult...)

</comment></comment><comment><USER100> Stuck at level 13 :(

<comment><USER68> I solved it by basing the robot's movements off my own using my position. Hopefully that's vague enough to be a decent hint but not a giveaway...

</comment></comment><comment><USER101> I won!

</comment><comment><USER102> dang this is awesome

</comment><comment><USER97> In level 10 ambush I set

            function (me) {}

for the red and yellow drones and

            function (me) {
                var r = 'right:'+me.canMove('right');
                var l = 'left: '+me.canMove('left')
                alert(r+'; '+l);
            }

for the green drones. But I always get 'right:true; left: true'. WTFFFFFF? :-( Please please fix that, please!!!

<comment><USER62> Level 10 can be solved by code injection :)

[https://gist.github.com/anonymous/d65048c34bd6874478a1](https://gist.github.com/anonymous/d65048c34bd6874478a1)</comment></comment>


What will your next phone be? [poll] - <AUTHOR> http://gopollgo.com/what-will-your-next-phone-be

<comment><USER2> I love my iPhone, but I realize how much of what I love about it is due to lock-in. Personally, I'm happier to be locked into Apple's ecosystem than in any of the other competing ones, but the switching cost, even setting aside app purchases -- stuff like where my calendar data lives, and who stores the canonical copy of my contacts -- means that I'm basically Apple for life.

Full disclosure: I'm an alumni of Apple, so take the above with the appropriate amount of salt.

<comment><USER3> Even with an iPhone you can make your calendar and contacts live on Google's servers. Not that's necessarily an improvement for some.

For syncing contacts check the SyncInABlink app (no affiliation).

<comment><USER2> If I were willing to let Google sell my info to their advertisers, I'd use an Android phone -- they work unbelievably well when you choose the Google lock- in. I guess the crux of my post was that I'm happier locked in to Apple than Google because I trust Apple more than I trust Google.

For a normal, I usually recommend iPhone, because the app selection is better, but the phones _qua_ phones are largely interchangeable these days, IMHO.

</comment></comment></comment><comment><USER4> Scoble is right on: "One thing is this shows how deep a hole Blackberry, Windows Phone 7, and Palm Pre are in."

</comment><comment><USER5> Given the title I was hoping for a wide ranging piece about the transition from phone to exo-brain and the implications for society.

</comment><comment><USER6> I'm actually thinking of getting a basic flip phone next. My iPad does 150% of what I wish a smart phone to do. I have it with me more than my current smartphone. It's a waste of money.

<comment><USER7> I tentatively agree that a tablet is better than a smart phone even on the road although a device with a 10.3-inch screen is too big to hold securely in one hand while using the other hand to input "gestures".

I tend to expect Apple to eventually sell tablets with 7-inch screens (and 15-inch screens) as well as the current 10.3-inch screens.

<comment><USER6> > 10.3-inch screen is too big to hold securely in one hand while using the > other hand to input "gestures"

I disagree, must have bigger/stronger hands? 7" is too small to be usable and too big to be handy and is utterly worthless (to me).

<comment><USER7> By "hold securely in one hand", I meant with the thumb on one side of the tablet and 3 finger on the other side. You must have very big and strong hands if you can hold an iPad that way without quickly getting tired.

P.S. video of a chick holding an iPad and a 7-inch Galaxy Tab: at 0:50 in <http://www.g4tv.com/videos/50269/Samsung-Galaxy-Tab-Review/>

<comment><USER6> If I had to do it for more than 5min (which is never since I'm near table/desk/bed/armrest/carseat/horizontal plane of some sort 90% of my life) I'd hold it resting on my palm/forearm with my fingers curled around it's top. Thumb and 3 finger on one side is not secure nor sustainable.

</comment></comment></comment></comment></comment><comment><USER8> For people who don't want to vote (and therefore cannot see the color key) The values are purple == iphone and blue == android, roughly equal with a combined 90% of the vote.

</comment><comment><USER9> Android. I own an android phone since a short while and I love it.</comment>


Making simple software and charging heaps because we are hip and edgy... - <AUTHOR> http://67signals.com/ I didn't make this. <comment><AUTHOR> Note: I didn't make this

</comment><comment><USER2> oh boy!</comment>


Georgia Tech: Startup Semester - <AUTHOR> http://www.startupsemester.gatech.edu/

<comment><USER2> As someone who started a startup during undergrad at Georgia Tech, and received some funding from the university, it's nice to see these kinds of efforts.

But the shocker was when I saw "weekends". This initially sounded like a full- time thing, which would be amazing. And why not have some more hard deliverables and have it count as a 3-4 hour elective credit?

As for "You do have a chance but you would need to find a technical founder yourself."

Harsh. Georgia Tech has a ton of great minds on campus. Setup a site with the CoC allowing students to create a simple profile and express interest in potentially pairing with others for Startup Semester. Like the "I'm looking for a job" checkbox on github.

(For those reading this, Georgia Tech also has an incubator called Flashpoint <http://flashpoint.gatech.edu/> )

<comment><USER3> Hey PStamatiou, thanks for your comments! As I mentioned in a reply to a previous post, this entire program was literally hacked together in the past 3 months by two undergraduate students with no money and almost zero reputation with the school. From the very beginning we've always wanted the Startup Semester program itself to be recognized as a full-time internship (Akin to simply withdrawing for a semester to work on their startups, what many students are actually doing). Unfortunately, we haven't been able to sway Georgia Tech administration to our side. What we're left with is a "pilot program" to test our hypothesis.

You're right. It is a little harsh that non-technical founders will have to look for someone technical themselves. We really wish we can implement a feature like that in the future. For now, a minimum viable program is all we can do with our own full course loads.

At the end of the day, we gauge our success on changing attitudes, not having our startups appear on Forbes. If we can change the culture at Georgia Tech just one cohort of entrepreneurs at a time, more students at Georgia Tech will begin to think much like you.

</comment></comment><comment><USER4> It's great to see my school doing this, but looking at it doesn't seem very different from the senior design/capstone projects that many of the technical majors have already. I assume the big difference is not taking other classes along with this program and you don't have a customer lined up before starting?

For perspective my senior design project was a semester long "class" that met once every week or two for milestone updates from the groups, and occasional lectures/instruction from industry folks. My groups project was 4 of us designing and implementing a group management system for social orgs. Basic stuff like shared calendars, sub groups, email<->forum integration, permissions/views for officers and such. Obviously not the most ambitious project, but the kind of thing that a few college kids could feasibly do in a semester on top of a full course load.

<comment><USER3> Hey dpeck, glad to hear your views on Startup Semester. Just to put our side in perspective as well - Startup Semester was the result of two undergrads at Georgia Tech who were frustrated at the silos of "schools" that never work together and a culture that seems to look forward to "getting out". We spent all of the last 3 months putting this program together for less than $50 with the goal that we ourselves would be able to learn from it and simultaneously benefit the community.

To answer your concern more directly, our long-term mission is to create a physical entrepreneurial hub on campus that all majors are welcome to participate in. The purpose is to connect the entrepreneurs of all the schools at Georgia Tech - Industrial Design, Computing, Engineering, Business etc.. - to really build great products and businesses backed by an effective cross- functional team. In our experience, we've never encountered a senior design team with business students, designers, and engineers working together. We may be wrong, but it definitely seems like students are agreeing. At the very least, we're hoping this program could help us, and perhaps a few other misfits like us. :)

<comment><USER4> Great to see happening, didn't want to seem like I was downing on it.

The cross major/school stuff would be great, especially getting the CoC kids out of their bubble. The senior/grad level Video Game Design (that still around? it was a ball buster, but a great class) was supposed to include CoC and kids from SCAD and arch/industrial design schools but I'm not sure how many actually had that happen. My team recruited a my comp engineer buddy who was serviable with photoshop.

Agreed on the "getting out" culture, needs to change, but I'm not sure Tech would be Tech without it. My favorite times were always early in semesters and after finals where over, plenty of time to work on some projects with friends without the feeling of "talking shop" that happens during the intense workloads of mid to end of classes.

</comment></comment></comment><comment><USER5> I may have been slower than others, but my weekend time at GaTech was spent on laundry, groceries, and lots of CS homework.

Just give them some money and the summer term to focus. Being clever just makes this harder.

</comment><comment><USER6> I'm not sure how I feel about this. From one point of view, I think this is an awesome idea, get energetic, smart students down the entrepreneurship path early. Then my experience of running an actual startup, the ups-and-downs, the intricacies of building a viable _business_, etc come to mind and I think this is a bad idea. It doesn't matter how much mentoring one has - unless you've been in the trenches of a real world business, you have no foundation upon which to base your own. Not everyone can be Zuckerberg (hell, even Facebook isn't profitable yet). I would much prefer an apprenticeship type of setup - or even better offer this course to alums, or be part of the executive MBA program - those in an executive MBA program have industry experience, come with ideas on how they can improve the vertical(s) they worked in, and understand the real world better than a student who has zero experience. Don't get me wrong - if I were a GATECH student right now, I would love to be part of this program!

</comment><comment><USER7> University of Michigan already has a course that does something similar. Also, they introduced a 'Master in Entrepreneurship' focusing on all the aspects of Entrepreneurship. They are getting into it in a big way. I bet all the big universities already have courses, clubs or incubators serving similar purpose.

<comment><USER8> I received a Master's in Entrepreneurship at Lund University in Sweden. I am not sure how I feel about it honestly. The big advantage was being in a room full of people who wanted to do stuff. The negative side was the course was trying so hard to balance the study of entrepreneurship versus actually doing something. It leaned very heavily towards the study in my opinion and the doing was exceptionally undervalued. What exactly one would expect from a master's in entrepreneurship, I am not sure, but I honestly expected to get my hands a lot dirtier.

I don't know what other programs are like across the world, but I think a focus on actually doing stuff rather than simply studying it would be nice. Our thesis equivalent was a business plan, which is a grand set of ideas graded by how good it sounds and well reasoned it is. There was little value in actually going out and creating and testing.

<comment><USER7> Agreed. The key here is to make science out of art, just the way everything 'education' aspires to do. I do agree with you that getting hands dirty is probably the best way of learning but it is up to people to figure out how much effort they want to put into it. The course is just to mold their thinking to be a successful entrepreneur.

</comment></comment></comment><comment><USER9> An innovative college needs to make this a four year concentration!

It will offer the students skills in design, development, online and regular marketing, PR, public speaking, team building, as well as internships at VC firms, other startups and more.

I graduated with a degree in the Recording Industry from a school in and around Nashville, which offered internships at labels and other industry focused businesses.

I'm surprised there isn't a web start-up concentration offered at any colleges similar to the Recording Industry concentration I studied. There should be!

</comment><comment><USER10> I'm glad to see this spreading. A lot of people here are too young to know. Just a few years back, the zeitgeist in the CS/Engineering community was not about startups, which was a real shame. I bitched/ranted about schools not doing more to promote technical people to start companies. pg stated that over time it would invade from the ground up, which seems to be happening: <http://news.ycombinator.com/item?id=37850>

[EDIT: Grammar, wording]

</comment><comment><USER11> A little context: this appears to be an attempt to emulate UT Austin's 1SemesterStartup at Georgia Tech.

[ <http://techdrawl.com/content/put-me-home> ]

</comment><comment><USER12> The University of Texas at Austin has had a similar class for a few semesters now. Glad to see the idea spreading.

<http://www.1semesterstartup.com/>

</comment><comment><USER13> This is a good idea but why the limit of 30 or strict requirements? It's not like this program using up limited school resources like Flashpoint.

<comment><USER14> As a Flashpoint alum, I can certainly say that the resources that area limited are not those of the school. The most limited resources are those of appropriate mentors and advisors, and the time of the members of each team during group gatherings.

Much the same case here. The availability of suitable mentors and coaches is limited, and you don't want spend too much time in very large group gatherings.

</comment></comment><comment><USER15> "make entrepreneurship much more accessible to undergraduates" = We'll focus on web startups because everyone can make websites (right?)

"We're dedicating an entire workspace just for teams to work, collaborate, and bounce ideas off each other." = We have a room with chairs and computers.

"Workshops on lean principles, peer teaching, individualized team deliverables" = We'll teach you what a to-do list and a convertible note is. It's not easy.

"Mentorship: Veterans entrepreneurs, business developers, specialists." = Unnamed people who don't know what they're doing tell you they know what they're doing.

<comment><USER16> Hey dreamdu5t,

Just curious but have you actually seen the mentor list?

[http://www.facebook.com/notes/startup-semester/startup- semes...](http://www.facebook.com/notes/startup-semester/startup-semester- mentors/280987678683465)

You're welcome to your opinion of course - just thought you might be curious.</comment></comment>


Tizen 2.0 Magnolia SDK and Source Code Release - <AUTHOR> https://www.tizen.org/blogs/tsg/2013/tizen-2.0-magnolia-sdk-and-source-code-release

<comment><USER2> I'd love for there to be some more competition in mobile space, because currently there's just iOS and Android beating it out, and honestly, looking at the stats Android is crushing iOS flat.

It wont be long before we have a complete Android monoculture. And that is bad.

So far RIM's BlackBerry 10 and MS's Windows 8/RT ventures haven't made a single dent in the mobile space and we _do_ need some serious competition to keep all players fit and the market healthy.

While I'll be honest and say I'd rather see something truly free and open like FirefoxOS gain traction, I'll be pragmatic and welcome any sort of competition as good. So I have to welcome Tizen as well on general principle.

All that said... I can't really say I feel very _excited_ about this. I've yet to see a single Tizen device. I've yet to see a single presentation telling my why this is better than what we already have. Why this is something I should get invested in (neither as an OEM, developer nor user).

It's just a name which I associate absolutely nothing with.

If they are really serious about becoming a viable third option, they really need to up their marketing effort as they're not even on the radar of the techies.

And how does that speak well of their future chances of success?

<comment><USER3> > _and honestly, looking at the stats Android is crushing iOS flat._

As an Android user, I think you've misanalyzed the stats:

\- Despite being a far smaller population, iOS users represent a majority of mobile internet users

\- Despite being a far smaller population, iOS users represent a majority of mobile spending on apps

I don't know what Android you're using, but my Android still has over half of it's entire install base (IE, more than all iPhone's out there) using Android 2.x or less and will never be updated.

Keeping (hundreds of) millions of devices stuck on old operating systems is not "winning" anything except install base numbers.

As an Android user-- where's Mailbox? Where's Vine? Where's any of the cool new apps that iOS users got months ago? (Heck, I have a Note II -- where's Android 4.2? How long do I have to wait to get a normal update! How long do I have to wait to even get an announcement that the update is coming?)

Android isn't "winning" anything outright except for the budget smartphone market. I'd love if it did win -- I want the good apps first!

<comment><USER4> _Despite being a far smaller population_

You're conflating markets. iOS is a marginally smaller deployed base of mobile smartphones, but is neck and neck if not in the lead when you factor in the iPads and iPod Touches.

As to actual web usage, however - [http://gs.statcounter.com/#mobile_os-ww- monthly-201202-20130...](http://gs.statcounter.com/#mobile_os-ww- monthly-201202-201302)

For over a year now Android has held the lead. So what now?

 _As an Android user-- where's Mailbox?_

Why would you want Mailbox? Mailbox is essentially a clone of the Android gmail client on iOS where a decent client wasn't available. Mailbox is a non- starter on Android because the need isn't there.

 _Android isn't "winning" anything outright except for the budget smartphone market._

You quote "winning" in John Gruber style despite it not even appearing in the post you reply to. Further the "budget smartphone" nonsense is nonsense, as the top Android smartphones, time and time again, are the top tier devices like the GS3 and the HTC Ones.

EDIT: I can see your reply however you are marked as DEAD criley (there are a rash of dead people all across HN for some reason today. Technical malfunction? Zombie day?). However to your response, firstly I merely responded to your incorrect facts so I'm not sure why you retort as if you're put off by a fanboy. Secondly, the #1 description of Mailbox is simply as a better gmail client for iOS, oft compared, exactly as I mentioned, to the Android gmail client (with swipe to archive, etc).

</comment></comment></comment><comment><USER5> This all nice and dandy, but can we install Tizen yet to any actual devices? Or even better, buy Tizen devices?

I mean, what am I going to do with a SDK for a platform that has not a single device even announced yet? Start building apps for something that _might_ have users in what, 2015?

</comment><comment><USER6> I've been rooting for Tizen (EFL on top of Linux) but it appears to be crap:

<http://reviews.cnet.com/2300-13970_7-10015946.html>

</comment><comment><USER7> The offset of Maemo that turned into Meego and now had another name change to Tizen. To be fair, Intel always knew they couldn't do this project alone, and when Nokia dropped support for Meego a few years ago, the whole project looked dead. Samsung came along, took up the mantel, and then rebranded the project to Tizen. Frankly, Meego prototype UI looked better.

Mobile carriers want something less restrictive than iOS and Windows Phone... but something that differentiates themselves from Android.

<comment><USER8> Thanks for providing some context, I had no idea what this was and their blog is having popularity issues.

</comment></comment><comment><USER9> I don't get all the development... so is this like an html5 player ? linux + some webkit ? what's the novelty ?

Again a bunch of developers working for free on Samsung (20% of SK GDP) plan C mobile phone OS ?

<comment><USER10> It seems they are moving Bada to Tizen.

The native SDK seems to be the former Bada C++ SDK, which is a brain dead idea as Bada C++ uses a C++ dialect similar to Symbian C++.</comment></comment>


Show HN: Self-hosted stack-based programming language - <AUTHOR> https://github.com/Drahflow/Elymas

<comment><USER2> I'm always impressed with people who invent things like this. Well done. It inspires me to push my own skills, particularly when things get complacent at work.

</comment><comment><USER3> I find the differing syntax between function and variable storage to be interesting. Is there any particular reason these aren't unified? Assuming anything in brackets is a first-class "function" object, something like this should be possible:

        2 /two define
        { two add } /addTwo define

<comment><AUTHOR> The storage is exactly the same, the difference is only in what will happen if the name is encountered somewhere.

{ 2 } /putTwoOnStack deff

{ 2 } /putClosureOnStack defv

putTwoOnStack dump # 2

putClosureOnStack dump # <function 0006002514AE5>

putClosureOnStack * dump # 2

<comment><USER4> I'm not convinced the distinction is valuable. Since you already have * and {} you don't really need two distinct variable types.

<comment><AUTHOR> I think it's a good thing (tm) that { x sin } could be valid code with x pushing the value of x whereas sin is executing the value of sin.

Theoretically speaking, I need at least the deff and defq distinction, otherwise { } could not be invoked during "parse" time. The defv case could in principle be removed, but as * needs to execute (otherwise nothing ever will), execution would need to be the default or I would need to decide based on dynamic type. The first option would mean a lot of superfluous {} (or | actually) around normal data variables, the second one would destroy the nice similarities between arrays, strings and functions with integer domains.

</comment></comment></comment></comment><comment><AUTHOR> The README claims easy Domain-specific-language creation. Here is a concrete example how code which utilizes these features looks like: [https://gist.github.com/Drahflow/c463717d5c72e114ac63](https://gist.github.com/Drahflow/c463717d5c72e114ac63)

<comment><USER5> For the love of brackets...

<comment><USER6> I miss semicolons ;)

<comment><AUTHOR> There are semicolons :) They do sequential function composition:

{ /foo dump } /f defv { /bar dump } /g defv

f g ; /h deff

h # "foo" "bar"

</comment></comment></comment></comment><comment><USER7> I also started toying around with a stack-based language [0]. It's surprisingly fun!

[0] [https://github.com/rbaron/stacky](https://github.com/rbaron/stacky)

</comment><comment><USER8> "Just because I'm not following the true path, doesn't mean I can't get it to work."

I have to ask: Is that basically self-targeted snark about how you're not doing this with Lisp?

I hope so, because I got a good belly laugh out of that interpretation.

<comment><AUTHOR> It is self targeted snark allright. Not just not doing it with LISP, but also ignoring pretty much everything I learned about compiler building in university.

<comment><USER9> I may only be a few years out of university, but over the last couple years I've learned that what I studied in university falls into three categories:

1) Incredibly out of date.

2) Far newer than what my job requires me to use.

3) Existing in some ideal world that matches nothing anyone actually created or uses in industry.

And yes, it's possible (and not rare at all) for both (1) AND (2) to be true at the same time.

<comment><USER10> All of above - at the same time - ends up in the middle of Gartner's hype cycles: a solution has been found 20 years ago and people are searching for problem it solves ever since.

</comment></comment></comment></comment><comment><USER11> This is great, and I'll definitely be playing with this tomorrow.

I also can't seem to stop myself going off half-cocked and writing language interpreters[1][2] and virtual machines[3]. It's really quite addictive, and gives you a "I really made something" feeling that a new backup script or CRUD app doesn't quite provide.

I too actually started off writing a stack/RPN-style language for the exact reason that I didn't want to do a proper parser, but then realized that, for properly recursive structures like in Joy[4], it really makes it easier to just write a parser. And it turns out that a recursive descent parser really isn't that difficult, conceptually, once you spend the brain-time to work one out yourself[5]. Like most things programmatic, it's tough to wrap your mind around until you've done it once, then it's just a matter a typing and bugfixing.

Along with the aforementioned Joy (which is a stunningly elegant language), some other languages I find inspiring are rhoScript ([http://www.rhoscript.com/](http://www.rhoscript.com/)), Pico Lisp ([http://picolisp.com/wiki/?home](http://picolisp.com/wiki/?home)), and the very clever WadC editor ([http://strlen.com/wadc- editor](http://strlen.com/wadc-editor)), which implements a DSL and interactive environment for describing Doom levels in code, rather than by dragging vertices in a purely graphical editor (This isn't as crazy as it sounds if you're unfamiliar with the limitations of Doom levels, since they are constrained to certain types of simplified geometry that lend themselves well to this).

In short, keep it up! I've never had to use any of these skills in my day-to- day work (I'm not even a professional developer, though I'd like to be.) but it's still a heck of a lot of fun to play around with.

[1] [http://billipede.net/2014/03/30/reverse-polish- cowgirl.html](http://billipede.net/2014/03/30/reverse-polish-cowgirl.html) [2] [http://billipede.net/2015/05/09/dawn.html](http://billipede.net/2015/05/09/dawn.html) [3] [http://billipede.net/2014/06/05/bedrock.html](http://billipede.net/2014/06/05/bedrock.html) [4] [http://www.latrobe.edu.au/humanities/research/research- proje...](http://www.latrobe.edu.au/humanities/research/research- projects/past-projects/joy-programming-language) [5] [http://billipede.net/2015/02/14/lets-write-a- parser.html](http://billipede.net/2015/02/14/lets-write-a-parser.html)

</comment><comment><USER12> Any chance that this is inspired by Forth?

<comment><AUTHOR> Define "inspired". I became aware of Forth while implementing Elymas. But the decision to make it stack based was actually because I was too lazy (after some attempts) to implement a correct LALR-parser-generator.

<comment><USER13> If you want a more conventional syntax, I'd suggest trying with a recursive- descent/precedence-climbing parser.

</comment></comment></comment><comment><USER14> Can I do this with strings as well?

"tsch" ==pa

pa dump

# "tsch"

<comment><AUTHOR> ;) Yes. It works exactly as you envisioned it. You can do it with pretty much everything, actually:

      |dump =*clap
      [ "pa" |dump /tsch < > 0.0 ] ==slow slow clap
      # [
      #   "pa"
      #   <function: 00006000001CCD00>
      #   "tsch"
      #   <scope: 00006000004B3360>
      #   +0.0e0
      # ]</comment></comment>


Show HN: SBA PPP Loan Forgiveness Calculator - <AUTHOR> https://ppploancalc.com/ <comment><USER2> If this is accurate, it could be very educational. I was discussing these "loans" with my Dad who owns a business with a lot of employees and was worried that he was taking on debt. He explained to my relief that a great deal of the loan would be forgiven.

Not being a business owner and having to know the details of the program, I had assumed that these were merely favorable interest rates. Seems like the politicians could have branded this program better. It sounded on the surface like they were just loading up small businesses with more debt.

<comment><AUTHOR> They are definitely favorable conditions, you get the loan at 1% interest and are eligible for forgiveness of up to 100% of the loan if you use it on certain types of expenses. Also, payments are deferred until after the initial period is up (June 30th). Overall a very positive program.

By making the funds loans, they also were able to quickly disburse them by using the existing legions of SBA lenders.

<comment><USER3> Though getting a loan through a big bank was neigh impossible. My fiancée's company banks with Wells Fargo and they didn't even get the application (after applying to get an application) until the first round of funds were gone. Thankfully they then applied with several smaller banks and was able to get one from with the new funding.

<comment><AUTHOR> I think that unfortunately this heavily depended on your bank. Wells Fargo really dropped the ball, but Bank of America was one of the first banks to accept applications and therefore disburse money. We used a regional bank whom we had an existing relationship with and it went pretty smoothly, better than if we had tried with WF.

<comment><USER4> >> Wells Fargo really dropped the ball

This implies that they screwed up and they might deserve forgiveness. They had no intention of lending PPP funds except for large preferred accounts they wanted to help.

<comment><USER5> Not defending Wells Fargo at all, but they were also limited due to restrictions placed on them for some of their criminal activity and therefore had a limited pool to lend with for PPP.

<comment><USER4> Legitimate. Thanks for bringing that up. Wasn't aware.

</comment></comment></comment></comment></comment></comment></comment><comment><USER6> Amazing work! This seems like a great way to clear up uncertainty around these loans.

It's worth clarifying that (unless Congress changes something), loan forgiveness counts as a taxable event. Meaning a business would have to pay income tax on the amount of the loan that was forgiven, typically at the time it's forgiven. This could be preferable to paying the loan, but might require taking on a new (smaller) loan to cover the tax liability.

<comment><USER7> Actually the CARES Act states loan forgiveness is not taxable (Act §1106(i)) [1], but also prevents businesses from then taking a deduction for expenses paid with the money (so no double benefit).

[1] - [https://www.congress.gov/116/bills/hr748/BILLS-116hr748eas.p...](https://www.congress.gov/116/bills/hr748/BILLS-116hr748eas.pdf)

</comment></comment><comment><USER8> Maybe I'm wrong about this, but the wording on the site makes it seem like those who make over $100,000 are exempt from forgiveness entirely, but it was my understanding that the are covered, just not beyond $100,000. So you can pay someone over the $100k annualized threshold, it just won't add to the amount forgiven. So the single person cap is effectively $16,666 (($100k/12)*2).

Am I wrong?

<comment><USER5> The SBA may release more guidance but as of now payroll costs over $100k are not included in the calculation of the eligible loan amount. They have not been excluded from forgiveness.

However, the forgiveness penalties for reductions of more than 25% in wages/salary for employees does not apply to employees making over $100k.

</comment></comment><comment><USER9> Nicely done! I really like how clear the UI is. This will clear up a lot of "how do we use the PPP money?" arguments that are going on.

</comment><comment><USER10> If you are self employed and no employees how does the payroll section work?

For example, I don't have a fixed payroll. I am setup as a single member LLC (disregarded-entity) and just transfer money from the business checking into my personal checking when appropriate. No formal payroll solution.

<comment><USER11> From my reading of the interim rules, it's based on your 2019 Schedule C Line 31 (Total Profit and Loss), capped at 100k.

For forgiveness it's: ($100,000 / 52 weeks) * 8 weeks = $15,384. The rules and new clarifications seem to change every week, I'd consult a CPA before assuming anything.

<comment><USER12> it's 10 weeks (2.5 months) not 8.

Therefore: ($100,000 / 52 weeks) * 10 weeks = $19,230.</comment></comment></comment>


Just How Important Is A Good Domain? - <AUTHOR> I am somewhat of a domain addict. I am always buying up domains "I" think are cool and have no idea what to do with them afterwards. Eventually, they just expire off into dead domain land or some squatter picks them up and tries to sell it back to me.
Sometimes, I have a really great idea for a domain of course someone has been squatting on it since '96 and want 2.5 million for it or some craziness.
My question is this... IF / When I am lucky enough to get some funding for one of my projects, just how important is the domain? I mean is it worth dropping a large chunk of your capitol on a domain? If you get 5 million ( oh ya baby! ) is it worth it to drop a Mil on a TLD like "blue.com" for example or if you get 10K is it worth is to drop 2K on a domain or better to just go for a webby 2.0; Ziggle-Zwaggle-Mangozr-twotozr-megoezr...
brandable kinda thing? ( Don't feel bad BTW if one of those are your actual domain. I actually own quite a few wiggle-waggle-ziggle-zaggle webby2.0 domains :P )
Obviously, I know domains are important, your gonna get more traffic and better recognition with blue.com as opposed to BlUEEEEEEEE.mobi But, is it worth it?  I stress a lot over the perfect domain, and I know it's fruitless ( especially since I don't have any money )But I do.
The price of a decent domains being as high as they are? is it worth it to stress over a domain? I mean if you have a real decent idea then theoretically the domain shouldn't matter...
Right?
Just Curious <comment><USER2> So far it has always been possible for the startups we've funded to find acceptable names that aren't taken. If there's some name that they really want and someone is willing to sell for under $3k, ok, but it's not really necessary.

<http://instantdomainsearch.com>

<comment><AUTHOR> Instant Domain Search Rocks! No more Register.com for me! :D this a YC project?

<comment><USER2> No, but it's by Beau Hartshorne, who founded Snipshot (<http://snipshot.com>), which was funded by YC.

</comment></comment></comment><comment><USER3> I think its important, but a few K interesting, not a few M. We got NewsCred for free (it happened to be available) and fit our business perfectly. You seem pretty obsessed about domain names... Channel that passion to building the actualy product/business, and you will be all set!

</comment><comment><USER4> Pick a domain name that works and is available. Then put all you energy into your product. Squatting is for those who can't build.

</comment><comment><USER5> Somehow I don't think it's that important anymore. The service seems to be far more important. But it probably depends on what kind of application you are building. Here's my take.

If it is a once-in-a-while application, then memorable is good. If it's daily, then it doesn't matter. This is because users will rely on the quickest path from recall. Anything that is written to long term memory will be quick, and anything you use on a daily basis will fall into this category.

I would say news.ycombinator.com isn't the most catchy name, but it doesn't matter because I access it regularly.

instantdomainsearch.com, however, is good because I use it once in a while. simpleweather.com also.

</comment><comment><USER6> I see Paul beat me to the Instant Domain Search plug. Here are a couple of other sites I found useful.

<http://www.nameboy.com> (takes 1 or 2 words and generates a list of potential domains related to them.)

<http://www.makewords.com> (A little complicated, but if you figure it out you'll find some pretty decent domains available. It takes 1 word and generates domain names that include that word, along with a prefix of suffix that comes from a theme, like actions, education, business, etc.)

</comment><comment><USER7> Which is more valuable: Amazon.com or store.com?

Which would you have guessed would be more valuable back in 1994? The actual service is more important. Yahoo and google are both stupid names.

</comment><comment><USER8> Some ballpoint pen vendor agonized for who knows how long to come up with the name 'Pen Island' only end up with the domain 'penisland.com', so don't sweat the small stuff.

</comment><comment><USER9> Now that the domain kiting free lunch is (FINALLY) over, I think it should be easier to find a good domain name that's not taken...

</comment><comment><USER10> Del.icio.us and Flickr. Hell, and Google.

I'd say you want something that is spelled like it sounds and, ideally, short. IMO, .com is pretty important too.

Bluedot.us (a Seattle startup that's kinda in the social bookmarking space-- about 1.5m uniques last time I checked) switched over to Faves.com in December. I checked Alexa, but it doesn't show data for the old URL. Might be interesting data if compete.com or someone else has it handy.

</comment><comment><USER11> InstantDomainSearch.com is great. Bustaname.com is also very good for testing various keyword combinations.</comment>


5th Anniversary: Dennis Ritchie, Father of C and Co-Developer of Unix, Dies - <AUTHOR> https://www.wired.com/2011/10/dennis-ritchie/ <comment><USER2> Note that this was a week after Steve Jobs died, so there was some resentment that Ritchie, who had at least the same effect on computing as Jobs did, wasn't getting the attention he deserved. Wouldn't mind seeing a retrospective of his life with the 5-year anniversary of his death as a newspeg.

Here's something from last year: [http://www.zdnet.com/article/without-dennis- ritchie-there-wo...](http://www.zdnet.com/article/without-dennis-ritchie- there-would-be-no-jobs/)

<comment><USER3> Ritchie > Jobs

</comment></comment><comment><USER4> This sentence[1] from his website always makes me chuckle:

 _Although my professional truck-driving career was brief, I did learn enough to do a nearly perfect double-clutch with a non-synchromesh transmission, while driving up a hill on a forest track, carrying a bunch of kids in the back of a dumptruck--the tippable, flat-bed kind, not one designed to squash garbage._

He left us too early.

[1][https://www.bell-labs.com/usr/dmr/www/otherlives.html](https://www.bell- labs.com/usr/dmr/www/otherlives.html)

</comment><comment><USER5> 5 years ago - 10/8/11

</comment><comment><USER6> (2011)</comment>


Monks Who Spent Years Turning Themselves into Mummies While Alive - <AUTHOR> http://www.atlasobscura.com/articles/sokushinbutsu <comment><USER2> This was discussed a few times earlier this year in an article that contains pictures of the monks:

[https://news.ycombinator.com/item?id=10892556](https://news.ycombinator.com/item?id=10892556)

[https://news.ycombinator.com/item?id=10650278](https://news.ycombinator.com/item?id=10650278)

Actual article: [https://www.damninteresting.com/sokushinbutsu-the-ancient- bu...](https://www.damninteresting.com/sokushinbutsu-the-ancient-buddhist- mummies-of-japan/)

Curiously similar wording too. Original article:

"Some of the monks drank tea made from the bark of the urushi tree during their fast. Also known as the Japanese Varnish Tree, its sap is normally used to make a lacquer varnish, and it contains the same abrasive chemical that makes poison ivy so unpleasant. Urushi is so toxic that even its vapor can cause a rash, and it remains in the body after death. Drinking urushi tea served to hasten the monk towards death as well as make his body even less hospitable to insects."

This new article:

"A kind of sumac, the Japanese lacquer tree is called such because it is used to make traditional Japanese lacquer, urushi. Its bark contains the same toxic compound that makes poison ivy so poisonous. If ingested by these monks, urushi tea would have both hastened death and made the body even less hospitable to the bacteria and parasites that aid in decomposition."

<comment><USER3> > Curiously similar wording too.

That happens quite often with such articles, they're usually cross-licensed, and just slightly rewritten.

If you really want to be freaked out, read gaming journalism – they all just copy the original press statement and slightly adapt it.

<comment><USER4> I thought "gaming journalism" was a book you were referencing about this practice and it sounded like a good read.

<comment><USER3> Ah, sorry. That was a bad choice of words.

There was a time when, to do let's plays on YouTube, you had to still get written approval from publishers, and back in the day, that meant getting into their press contacts program.

Which in turn meant I got their press statements, half pre-written articles, phrases that should be used in articles, etc.

When reading gaming magazines after that I always noticed the exact same texts being used, often only minor alterations being made.

Sometimes they even suggested a range in which the rating for the game should be.

</comment></comment></comment></comment><comment><USER5> _At the completion of a thousand-day cycle on this diet, practitioners were considered spiritually ready to enternyūjō. However, most monks completed two or even three cycles to fully prepare themselves._

Oh, come on. You know they just backed out like anyone would a couple times.

</comment><comment><USER6> Is there any real spiritual value here? It appears to me to be misguided if the objective is to preserve oneself for later reanimation.

<comment><USER7> At it's core, Buddhism is about learning non-reaction to both pleasure and pain, treating both as mere sensation. I suppose this practice could be defended in that vein. However, it reminds me more of the Buddha's early ascetic practices, that he himself renounced, declaring that there is no point in actively harming oneself, and that one should instead work to reduce craving and aversion (the two fundamental types of reaction).

There was another article about a small sect of Japanese Buddhist monks that had some horrible practices, like screaming at each other in the morning, and so on. Even stranger (and more horrible) practices exist. But I would not call them Buddhist.

<comment><USER8> Shingon is a Vajrayana-style mystic tradition of Buddhism: more similar to Tibetan Buddhism than more popular East Asian forms. Also, it has been basically isolated in Japan since about the year 800. Although there is a Chinese school, contact was apparently limited.

</comment></comment></comment><comment><USER9> As someone who grew up in a Christian culture that cherishes life, I find this sort of thing deeply disturbing. But I don't want to dismiss Buddhism. Even though I'm an atheist, I admire Buddhism's focus on compassion, and I think it has a beneficial effect on Buddhist cultures.

<comment><USER10> It's my opinion that most humans have to really try thinking outside the box to understand this particular case.

Western culture, for example, has this innate fear of death. This is not a fear that other cultures share.

One could call what these monks were doing mental instability, lack of education or being suicidal. However, from another perspective, one could call what these monks were doing an incredible act of mental strength, self-control and devotion, following their beliefs wherever they lead, for what they perceived to be a selfless act.

I prefer to think that these are people who had a different way of thinking, they lived (and died) ascribing to that, without seeming to cause anyone else harm in their lives. Death was part of a bigger picture for them, not something they feared (or they taught themselves not to fear it).

While I certainly don't ascribe to the belief system these monks shared, there is something that we can learn from this alternative way, and respect in its own way.

Ultimately, I think that's what all compatible belief systems enable... a way of living peacefully and honorably allowing people to explore their own beliefs from life through death, and who knows, potentially beyond.

<comment><USER11> "Western culture, for example, has this innate fear of death. This is not a fear that other cultures share." This seems incredibly broad and...just very off.

<comment><USER12> I also have this "off" feeling, but I have at least one specific example:

[http://news.nationalpost.com/holy-post/we-love-death-more- th...](http://news.nationalpost.com/holy-post/we-love-death-more-than-you- love-life)

"These grisly words are as foreign to Western sensibilities as they are all but sacred dogma for Muslim radicals at war with the West—and with Western sensibilities.

The sentence originated with a 7th-century Muslim commander who threatened his enemies with the prospect of "an army of men that love death as you love life." As if to prove that, at least in the Middle East, there is nothing new under the sun, Hassan Nasrallah employed the phrase in a 2004 interview to explain why Hizballah, the organization he heads, is destined to prevail over Israel"

"How to understand this macabre sentiment? Martyrdom has played an important role in Islam since its inception, and a number of chapters in the Quran mention the rewards of those who fight and die for God."

<comment><USER13> That's for armies, though. The West is the culture that produced "I only regret that I have but one life to lose for my country" and "Dulce et decorum est pro patria mori," both in the context of war.

And there have been many, many religious martyrs in the history of Western civilization, and lots of veneration of those martyrs, mostly in the context of battle. Not just in Christianity - the Eddas say that all who die in battle will be guaranteed a place in Valhalla (or either Valhalla or Folkvangr, depending on the source).

I think the interesting distinction here is that my examples and yours are all related to battle, and the context here isn't about battle. Is some culture unique in its lack of fear of death _outside of battle_?

<comment><USER12> > That's for armies, though. ... Is some culture unique in its lack of fear of > death outside of battle?

At least staying with my example, there's an explicit "duty" for the "jihad" (which can also be translated as the "battle" [http://www.thesaurus.com/browse/struggle](http://www.thesaurus.com/browse/struggle) and which is exactly so understood by the majority of scholars) to be performed by every believer:

[https://www.al-islam.org/a-muslim-in-society-al- balagh/jihad...](https://www.al-islam.org/a-muslim-in-society-al-balagh/jihad- holy-struggle-obligatory-duty)

"a holy duty made obligatory upon all Muslims by Allah"

"Allah made jihad obligatory, in all its forms"

<comment><USER14> Jihad isn't obligatory, that's a perversion of the verse. The only obligations are the 5 pillars of Islam - Belief in the Oneness of God, Salah (Prayer), Hajj (Ritual Pilgrimage), Charity and Fasting during the month of Ramadan.

Also, Jihad doesn't refer to a violent battle. Jihad means struggle, struggle to follow their faith. Violence is only the last step and often only in self- preservation. Even then there are rules of engagement and not a barbaric manner as depicted.

Struggle for self-preservation to follow Islam is no longer applicable IMO. The West doesn't limit their citizens or visitors from following their faith. Freedom of religion is a fundamental right, and as such no Muslim can claim to be fighting for their religion when killing Innocents which is one of the biggest sins.

<comment><USER15> Jihad was invented by Muhammad who was political and military leader in need of big army to enable his conquest of Arabia. So when Muhammad spoke about Jihad he meant it quite literaly: kill the infidels.

That "spiritual struggle" interpretation was invented later, by some imams, who turned out to be better, more peaceful and compassionate human beings than the prophet himself.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER16> If time can be divided infinitely you can live any moment forever

<comment><USER17> I forget the man's name, but he died a couple of years ago and was an amateur chemist who used himself to test a bunch of different psychedelics that he discovered. In one case, he swore that him and his wife spent an eternity within one second. They were looking at a clock and the second hand was frozen, they both confirmed this happened independently of each other. Take it for what it's worth, but the mind may control time.

<comment><USER18> There is nothing exceptional in having the perception of time altered. This happens usually in accidents and such [https://en.m.wikipedia.org/wiki/Slow_motion_perception](https://en.m.wikipedia.org/wiki/Slow_motion_perception)

I felt this in a car crash once. It feels really strange.

To have this same experience triggered by a chemical is not hard to believe.

</comment></comment></comment><comment><USER19> I'm doing something similar, but with cigarettes and coffee.

<comment><USER20> Amen

</comment></comment><comment><USER21> Jesus this is freaking morbid, I can understand suicide(side note: Apple won't auto fill/correct suicide this is interesting) but how can you mummify yourself pulling organs and draining blood sounds messy as hell.

<comment><USER22> _but how can you mummify yourself pulling organs and draining blood sounds messy as hell._

I read the article and I didn't see anything about that. It was more about the diet before death that allows the mumification.

<comment><USER21> Ok so it did end at starvation and poison tea then, slightly relieved, I had the image of egyptian mummification in mind in addition to that.

</comment></comment></comment><comment><USER23> I can understand why many would fail to see the value of this or classify the practice as morbid, most of the people here are from a capitalist upbringing. Here you are taught materialism is eveything. The idea to disconnect from the material and ultimately release yourself from your ultimate possession (your body) is an interesting spiritual practice undertaken by many ancient philosophies. In fact, in India, there is a law that prevents devoted monks from fasting to death for that very reason.

<comment><USER24> You fail to show that it _has_ any value.

      > disconnect from the material and ultimately release yourself from your ultimate
      > possession (your body) is an interesting spiritual practice

Humans have done that to each other since the very beginning, usually to others but also to themselves. Why you would see that as something of value would surely be interesting for us to read here, also what the difference is between doing it to yourself compared to doing it to others.

I would like to point out though, as a mere materialist but with Eastern Bloc communist upbringing instead of a capitalist one actually, I won't see a reasoning that is based on some state changes happening inside the person's brain as a useful justification, unless that has a (demonstrable) influence beyond that person.

It's not that I'm greatly concerned about what people do to _themselves_ , just that you say we fail to see the value, which is very different and goes far beyond arguing for letting people do what they want if it only affects themselves.</comment></comment>


IBM: Back to the Bad Old Days? - <AUTHOR> http://esr.ibiblio.org/?p=1889

<comment><USER2> Duplicate - earlier submission here <http://news.ycombinator.com/item?id=1245898></comment>


Browser breakdown of who's using Basecamp Mobile so far - <AUTHOR> http://37signals.com/svn/posts/2763-basecamp-mobile-whos-using-it-so-far

<comment><USER2> Really? Browser usage metrics after 24 hours? While this might have been interesting if they did it, say, a week from now, this kind of data is practically worthless.

<comment><USER3> I'm sure they will, but 24 hours after a decently-publicized launch is a good starting point. I'd be more concerned with how the measurements were taken, because hitting the page to see how it looks or to bookmark it doesn't really qualify as 'using' I'd say.</comment></comment>