Hacker Newsnew | past | comments | ask | show | jobs | submit | the_spacebyte's commentslogin

As an Emacs user for ~10 years the greatest deterrent is it being single-threaded and lisp. I just can't understand the love for it. I've spent countless hours customizing my own configuration and I just can't enjoy lisp. Emacs's source code is also hard to understand and contribute to (let's not talk about lisp.h).

I'd rather have a new editor (or emacs fully re-written) with the same mindset as emacs - near-full customization via a modern scripting language (lua?) and/or c/cpp plugins, and text-centric. I don't care for fancy UI or buttons it could even have the same look and feel which I love


That an emacs user holds that opinion is a bit surprising to me, as to me most of the reason for me using emacs is to develop in lisp-inspired languages. I think lisp development is the raison d'etre for emacs in the modern times.

As someone who loves fennel, clojure, scheme, etc., I find myself drawn to emacs because the (repl driven) workflow is so good. That said, I've found that I can't give up vi-style modal editing. The interface matters to me. So neovim it is, for now.


I'm going to go out on a limb and suggest that Lisp is, in fact, an albatross hanging around Emacs neck.

Using Lisp (and especially elisp) is not okay. Lisp has some very sharp corners that simply are not acceptable in modern languages. I use Lisp when I'm very resource constrained but still need an interpreted language--otherwise I use anything else.

Dynamic scoping is just stupid (fault of elisp). Not being to operate on a sequence is stupid. cons pairs to build everything is stupid. nil() terminated to signify lists is stupid. The pervasive necessity of metaprogramming macros is stupid. An inability to type things is stupid.

Lisp/Scheme encased itself in amber in the 1980's and refused to keep up with genuine improvements in programming languages. Sure it meant they missed out on the collective brain damage that was design patterns and object oriented--but it also meant that it missed out on good things, too.

Take a very hard look at Clojure and look at what parts of Lisp/Scheme Rich Hickey put a bullet in and which parts he kept. The Lispers still excoriate Clojure as "not a Lisp" and that perfectly sums up the problems with Lisp nowadays.


> Not being to operate on a sequence is stupid. cons pairs to build everything is stupid.

There are other sequence types than lists in elisp and pretty much every other lisp out there. And what do you mean with "Not being [able?] to operate on a sequence"? [0] contains a bunch of functions for operating on sequences, and it's notable they don't say list but sequence in their signature. They work on multiple types of sequences, not just lists.

I do agree on dynamic scoping by default, that's a major weakness in elisp.

[0] https://www.gnu.org/software/emacs/manual/html_node/elisp/Se...


Lisp "lists" (cons pairs with terminating nil) act kinda sorta like sequences (although the elisp names don't agree with Common Lisp names)--until you need length() and your algorithm blows up to O(n^2) or you replace a value and your list walker blows itself into a mess. This is part of why Clojure shot the idea of building lists up from cons pairs and gave explicit syntax for certain sequence types and made them fundamental.

Which would be fine if all the pedagogy didn't teach stupid cons-pair lists and recursion as THE fundamental pieces of Lisp when they should instead have a gigantic red klaxon saying "Don't use these outside of toy programs as they're a maintenance and abstraction nightmare."

Other grief: #() syntax makes read-only vectors. The syntax for what is basically [] is every other language: (make-array 5 :fill-pointer 0 :adjustable t) I can go on and on and on about the usability disaster that are sequences and collections in Common Lisp. And then let's add the joy of a Lisp-2 on top of everything else.

The problem is that the Real Lisp Programmers know to ditch those and go grab better abstractions when doing Real Programming. However, the extra abstractions are just annoying enough that stuffing things into an unlabeled list is too convenient. So, you see a small number of good abstractions and a bunch of little unlabeled "containers" passing data around with cadr and caddr. There is a reason why a "labeled struct" is a fundamental part of most languages and gets its own syntax.

And even "Practical Common Lisp," which like I like very much, introduces macros before collections. And look at how much time it spends on vectors and hashes (which are FAR more important to building most programs) vs cons-type lists (this ratio holds even as far back as Touretzky in 1986--it's gotten a little better over the years). And then people wonder why nobody uses Lisp for real programming?

So, sure, you can use the Common Lisp standard--and get saddled with a bunch of good design decisions from 40 years ago that now look absurdly stupid.

Or, you can use Scheme which has nothing built in and construct it all yourself. Oh joy.

Alternatively, you can just use a modern language that made design decisions in merely the last decade.


> Sure it meant they missed out on the collective brain damage that was design patterns and object oriented--but it also meant that it missed out on good things, too.

The "collective brain damage" and other similarly derogatory epithets that OOP regularly gets slammed with is AIUI actually Java "collective brain damage"; it doesn't necessarily apply to all forms of OOP.


Well, there are two levels to this:

1) It was in fact mostly C++ brain damage. "Design Patterns" predates Java by quite a bit.

2) OOP isn't a unified thing. There was a paper way back that mentioned something like two dozen "characteristics" of "OOP". And then proceeded to point out that "Smalltalk" chooses these, C++ chooses those, Java chooses these, and that there was a lot of disjointed-ness between the definitions.


Yup. So the vaunted "brain damage of OOP" is more a matter of the "brain damage" of C++'s / Java's choice of which of these traits to implement and call the result "OOP".

(Personally, I largely agree -- and I say that as a fan of a basically very similar OO language, Object Pascal [as seen in Delphi and Free Pascal / Lazarus], which could also be seen as an imperative language with bolted-on inheritable templates of records with method pointers called classes. It just made a slightly different, and better [IMO], choice of exactly which of these traits to implement, and that makes a all the difference to me.)


There is something weird about projects that choose a functional programming language as one of their pillars. When I read nixos documentation, there are constant references to how awesome and pure and functional their language is.


> lisp.h

Wow. Been using and extending Emacs for 40 years and I've never had to even look at lisp.h or hack the C code.


That was mostly a "tongue in cheek" joke : ) What I meant was that the code base is overwhelming both because it has some years on top and I don't like/understand lisp that much


There is a some effort in Nim, called moe[1]. Nim has a lot of features similar to a Lisp, and is both compiled and scriptable. Of course, it requires contributions to make it usable as a daily driver, but I guess that is somewhat the point. The vision is sound imo.

1. https://github.com/fox0430/moe


Neovim?


> History is repeating. Instead of investing into hard work and portability with programmers, the management decides to take the short part which looks cheap.

I agree with this point of view for bigger companies that do chat and music streaming apps. Nonetheless if you're a __much__ smaller company who needs to do cross-compat. applications and has problems hiring personnel (either due to lack of, or too expensive) technologies like Electron saves them a lot of trouble, money and time...


It's an absolute mess of a software, to get running and if you're not paying attention you'll install 15+GB of packages you won't need.

I've helped some friends with c++ assignments during college and with ROS they had to have dozens of terminal windows open running some command just to get things working.


This is the same for me barring the walking. Usually I'm at my best focus in front of a whiteboard and talking to myself out loud, because walking distracts me. I work in a busy office where there's a lot of noise (which I'm sensitive to) and where I can't speak to myself loudly, so I feel I'm not very productive. Teleworking has been awesome


Not adding much to the discussion, just want to say how great this website is and its articles! They have been a fun read and fantastic resource!


How so? Can't you do it from the Moon with low delta v as well? (honest question) And I think the Moon's proximity and "static" position relative to the Earth is another great advantage.


Escaping the moon’s gravity well requires a decent amount of effort.


1.73km/s to get into a low orbit. Another 0.68km/s to escape.


The question is not only escape velocity, if you want to fly away from the Moon, you still need to escape Earth and the Sun. The other part of the problem on Earth is atmosphere with its drag and the fact that some kind of propulsion, like ionic, is impossible.

Edit: hmmm... it seems that escaping Earth and the Sun would be easier from the Moon, since the Moon trajectory components include already the 9 km/s and 30 km/s of Moon and Earth's orbits. Once in Moon's orbit, with the right angle and a little push, you should be able to escape Sun.


With no atmosphere you could use ground-based accelerators


I think he means it as in "I'm not one to cater to people's feelings"


I've been developing a Game Boy emulator with a friend as well, and struggling a lot with the poor documentation. There's a very thorough PDF with lots of information online but when it comes to Opcodes (and cpu flags) it's quite inaccurate. Most often than not I have to skim through several github projects to check that the implementations match. (which sometimes don't)

Perhaps we'll start doing a Nintendo64 emulator instead which is more complex but from what I've heard/read has much better documentation.


I've been doing the same thing, with the same .pdf, and hitting the same errors :)

http://gbdev.gg8.se/wiki/articles/Main_Page is my current documentation of choice - which seems to be based on the same .pdf but has a bunch of updates and errors corrected


Ditto. My project is in Zig here: https://github.com/isaachier/gbemu.


Glad I'm not the only one : ) Thanks I'll go check it


The table here: [1] is very accurate. I wasn't able to find any bug either in the cycle counts or the affected flags list during the Coffee GB [2] development.

[1] http://pastraiser.com/cpu/gameboy/gameboy_opcodes.html

[2] https://news.ycombinator.com/item?id=17134668


The table in [1] has 0 in the carry flag for the SRA instructions, is that correct? I thought they shifted the lowest bit into the carry same as SRL.


I think you're right, see [0].

Furthermore E9 is not "JP (HL)" but rather "JP HL". If I remember correctly a few timings or instruction sizes are off as well.

[0]: http://www.devrs.com/gb/files/opcodes.html


Perfect, thank you. I've been using this image but only to cross-check the opcodes values and what they meant.


That can easily be part of the fun (and learning aspect), though: The detective work in researching what the real system does, based on analysis of a real system (if you have one) or just derived from what available software titles do and expect.

Some documentation is good to get you started, but at a certain point it’s the actual software that should be the guiding factor. Inaccurate documentation, which is not uncommon for the Game Boy, can be unnecessarily misleading though (on the other hand, there’s some satisfaction in essentially proving a different behavior, especially if you accept a piece of documentation to be likely inaccurate from the get go).


As far as Nintendo64 goes, https://github.com/yupferris/rustendo64/blob/master/README.m... has a bunch of good documentation links to get started with.


Have you looked at the Pan Docs [0] at all? They're pretty complete, though I've never used them for opcodes.

[0]: http://problemkaputt.de/pandocs.htm#cpuinstructionset


You might want to check Joonas Javanainen's work, who's doing great analysis of the CPU

https://gekkio.fi


The mooneye-gb project is the one I've been checking the most to make sure I'm getting things correctly. His work is massive regarding the game boy.


While playing with the result (working emulator) can be exciting, the process of developing itself sounds quite mundane.


It certainly starts off that way, but right about the time you have most of your opcodes written and can start stepping through your code, it becomes very exciting very quickly. "Ooh, now I have Tetris getting far enough that I think it's writing to tile memory; can I display that?" "Neat! I wonder if any other games are getting that far. How hard would it be to get the backgrounds working now?"

Suddenly every game you have in your library becomes puzzle box and either works (yay!) or much more often for a young emulator, breaks in a perplexing way. It creates a really rewarding feedback loop, where tiny changes to timers and status registers can have big sweeping effects on your tests. And all your tests are themselves games, and usually fun to explore anyway.


What makes you say that? Writing a Game Boy emulator is essentially implementing a whole computer system, in the case of the Game Boy one that can quickly give you gratifying results, but allows you to dive almost arbitrarily deep.

I’d state the opposite and claim that it’s actually one of the most fun and interesting things I’ve ever undertaken. In fact, I am more interested in the process than the actual product. There are tons of well working Game Boy emulators already.


But you're not creating a new computer system, you're not designing it. You have to exactly follow the specs, and the things mentioned by parent. Seems more like mundane and housekeeping stuff rather than creative.


Implementing a well-documented spec is fairly mundane, but figuring out that spec on your own is a fascinating puzzle. Emulators are full of curious little edge cases that can drive people to the point of obsession.

https://mgba.io/2017/05/29/holy-grail-bugs/


So? Just because you find it boring and mundane does not mean everyone else does. For me at least, there’s few things more thrilling than learning (and maybe mastering) a new thing. You think new systems start out in a vacuum?

Besides, part of the challenge is that there is no comprehensive spec for the Game Boy, so discovery through research and implementation is part of the process.

In contrast to the creativity that you can exercise along many dimensions of implementing an emulator, riding a bike or laying at a beach with a cocktail is hardly „creative“ at all, yet many people enjoy doing that as well (I certainly do). You said you might even enjoy playing with the resulting emulator, that seems even less creative to me.


Write your own spec. Then just start designing fun virtual machines. Make them do what they are not supposed to do in lieu of the hacker spirit :)


While programming I don't need to be creative all the time. I find it very pleasing to understand how this systems work and emulate them. I do confess though, that after a while and after understanding them some Opcode families can get a bit boring. But in general I do enjoy emulators very much and don't find them boring at all.


And what did you do to help? He was asked if he could do anything and tried.


I didn't do anything to help- I don't think saving 12 people in a Thailand cave means a lot, globally speaking. Why do you say he was asked to do something? He offered to help. More realistically, however, he should have chosen to stay out of the way- he didn't get his device to the site until the rescue operation was already half completed. It wouldn't have worked anyway- it wasn't fit for the purpose. Getting a bunch of PR for somethign that wasn't really asked for and doesn't work seems pointless attention getting.


Tweet from Elon Musk in response to BBC article:

https://twitter.com/elonmusk/status/1016684366083190785

It shows correspondance with one of the dive team, urging Musk to continue with the sub.

Other teams from other organisations were also working on similar things: https://twitter.com/Jiradett/status/1016690284619599873


wow, he really is a jerk on twitter.


Why? I found his answer appropriate.


You think it's okay to debase the chief of the rescue operation, ignore the advice he took from multiple teams, and cherry pick a personal email correspondence with one guy that basically just says "keep trying" just so Musk can dance around, yet again, people pointing out a potential PR stunt?

I don't know what level of social ineptness is required to ignore not only the blatant insult against the chief, but Musk's presumably unintentional insult to the rest of the team that informed the chief what they thought about Musk's idea to carry a 300lb tube through volatile currents in a tight, murky cave system.

Talk about domain specialization.


This flamewar was ridiculous all around, but your account stands out as among the worst that made it so bad. This is the kind of thing HN exists to avoid, not perpetuate, so would you please not use HN this way in the future?

As I posted elsewhere, all this angry arguing about Musk, pro or con, is as meaningful as angry arguing about Spider-Man. Since you're on the con side, I'll add that all you're doing by venting like this is feeding the very PR you deplore, by giving it your attention and attracting others into doing the same. Go for it if that's what you want—but please not here.

https://news.ycombinator.com/newsguidelines.html


Please elaborate? I presented an actual perspective. You have gone around these threads and insulted and demeaned people with a different opinion than the majority and then even equivocated these criticisms to a debate about a fictional character ("You guys might as well be bickering about Spider-Man."). That's not only incredibly dishonest, you really should be ashamed to stoop to such a level publicly. Intentionally framing a debate as not important or just a "flame war" is exactly how you get mindless echo chambers. Musk is a public figure who has had substantial investment in his companies via U.S. tax dollars. He's not a Marvel character, you doughnut.

Not once have you called out people hurling personal insults towards people that have a minority opinion on this board, you've done the exact opposite.

You have implied my statements violate some aspect of HN, but you're going to need to specifically point out which statements do that. Dissent is not violation. You might not be interested in the dissent or critique but you can't use your position as moderator to quell it.

And if you're actually willing to be honest with yourself, or even devote some amount of diligent effort to pretend you're here to upload intellectual standards (despite discouraging dissenting opinions), you need to explain why blatant personal attacks are being allowed in threads you are most definitely reading.

> I'll add that all you're doing by venting like this is feeding the very PR you deplore,

Dang, that's a unsubstantiated view point and you know it. I'm honestly in shock you think that's a valid point to make (I'm not). Please explain how someone who gets public attention as a status quo is somehow actually being fueled by his critics. This talking point comes in up various contexts and is always meant to dismiss critique or even worse, victim blame. What the actual fuck are you on?

To recap since you most definitely again will side step any critique of moderating actions:

* What rules am I violating and where. A simple quote of my statement and the rule will suffice.

* Why are you framing the debate as if it's about a fictional character, when it's the CEO of a company who receives significant funding from U.S. tax payer dollars.

* How does critiquing a public figure's positive media coverage in a small thread somehow get the news to continue positive coverage?


It's simple: all this fever about GoodMusk vs. BadMusk has become bone-crushingly tedious. When that happens with anything, nothing can redeem it and it's off topic on Hacker News.

I definitely don't mean to pick on you personally. Dozens of HN users have been filling the threads with this lately and it needs to stop. We literally can't moderate it all, and the Elonian Provocation is large enough to be capable of swamping this site entirely.


Hmm. I don't agree. I think we're on the turn of the tide where the hacker community and the media will stop fawning over him if we repeatedly and politely point out that he's an attention-seeking person but that doesn't mean he needs to have news coverage.


I can think of at least two problems with that. One is that people don't really change their minds this way; all they do is dig their heels in and object harder. The other is that HN could be smothered under the weight of this material even while opinion is working itself to convergence. The Muskian Market can stay wrong longer than this site can stay solvent.


>nothing can redeem it and it's off topic on Hacker News.

That seems largely contradictory to the hacker ethos, no?


It's a fair question, but the answer is no, because of the tragedy of the commons. That is, you may be right at the individual level, but it's unfortunately common for the sum total of individual effects to become something completely contrary to what any of the individuals would want. We have to manage the site at that sum-total level. This means telling people "don't do the things that produce lousy systemic effects", even though any one of those things might be fine when considered independently.


Wouldn't the correct thing to do in that case then would be to wholesale delete pro/anti musk threads that specifically revolve around him as a CEO?

Right now it seems like current moderation tactics are encouraging a "lie hard and fast" mode, so the truth can't catch up -- so to speak. Essentially the moderation policy is acting as a floodgate that only closes when perspectives that negate the "pro" side of things are brought into play.

This is apparent in what was allowed to be posted without question and in how you, intentionally or not, only replied to anti-musk threads. There were at least 4 threads, that I just looked at now at the time of this post, that were both not flagged by the community nor set straight from a moderator that were purely composed of vague personal attacks (it would have been better if they had just been forthright with it).

I understand that HN has limited resources and you clearly value the integrity of this forum, I just think certain perspectives unfairly caught your attention more than they should have.


"Why do you say he was asked to do something?"

The question was put to him by random people on Twitter, not by the Thai government. His initial response that he thought the Thai government had it in hand.


[flagged]


The difference between the divers and Musk is that the divers did it without announcing their plans on Twitter. They just when there and helped. I think it's good that Musk tried to help, but the publicity he got with it makes me question his motivations. There is also no need for personal attacks


"think it's good that Musk tried to help, but the publicity he got..." If he got all that publicity, then hate the newspapers who kept giving it to him, not the guy who was just happy to help. He probably kept tweeting because that's where he first was "contacted" about the subject and had some cool photos and videos to show.



Is that the official Thai government, or some random person on Twitter? Just wondering.

Have you looked at Tweets directed at him? People ask him for all kinds of things.


How does it matter who the first person to ask for help is?

The later stages were coordinated with the local Thai rescue team. As proven by email exchange Elon published.


The divers were highly qualified in ways the Thai military was not. That's why they were there.

BTW, I'm not a neckbeard since I shaved this morning, but really, if you resort to attacks like that, it makes you look like a jerk


And Musk and his team (and I believe many others) are qualified enough to present other, engineering, alternatives parallel to the main one. Why shouldn't they? Why is that seen as attention-grabbing?


>yes that's the thing you're just a neckbeard who cares shit about others and feels smug about pointing fingers on the internet

Not a hint of irony, huh?

There it is, the crazy Musk fans going full out ad-hominem, just like they did on the BI journalist. Careful OP, these people are nuts.


Would you please stop posting obsessively about Musk? You're hardly the only one doing it, but you've been doing virtually nothing else. Single-purpose accounts aren't allowed on HN and we ban them, so please don't use the site this way.

These pro-and-anti-Musk flamewars are extremely low-quality discussion. You guys might as well be bickering about Spider-Man.


Nop, not because of Elon Musk per se. I would have lost my judgment and go "ad-hominem" if it was another person as well. I just hate the argument "He's just helping for PR, while I seat my ass doing nothing"

You conveniently cut short my phrase, when quoting, just to push the argument that I'm a Musk fanboy...


So, this is the second time you've said I don't do anything. There is no reason to be rude. My work is in scientific reesarch, and I've worked on projects that made significant improvements to drug discovery, possibly saving millions of lives.


"My work is in scientific reesarch..."

Good for you, but that wasn't what I meant. "Do nothing" in regards with the current situation, not in general.


I said above I didn't think this was a situation where anybody should do anything. It's 12 people in a cave. In the global context, that's noise. this is just classic news turning minor events into global news.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: