Hacker News new | past | comments | ask | show | jobs | submit | tavoe's comments login

This article seems to break down into 3 parts - why multiple return values are bad, why go error handling is bad, and opinions about what to do about it.

The part that feels wrong to me is their issue with multiple return values. They argue that multiple return values are a special case in the type system, so they don't compose well. But, as far as I can figure, function arguments are also a special case, in the exact same way. I think if the author wants to argue go should only have one return value, then use tuple destructuring to simulate multiple return values, they should also argue functions should only take one argument, and use tuple destructuring to break it apart within the function.

I don't think having a special case for either the input or output of a function is particularly weird, and I can't think of any language (except haskell?) that limits you to one argument.

I don't know. I don't think they're particularly wrong about multiple return types being ugly, but it also doesn't feel like some great tragedy to me the way it does to the author.


> they should also argue functions should only take one argument, and use tuple destructuring to break it apart within the function

You say that as an hypothetical, but that's exactly how code is written in Standard ML; and the rest of the ML language family supports it to some degree, although they lean more on currying, like Haskell.


Align the incentive with the actual work done?

Eg - fundraise to cover the cost of producing the movie and paying the salaries of everyone involved, because physically making a movie costs money. Then give the mp4 away for free because copying a digital file costs nothing. Piracy is only a problem because companies are trying to charge money for copying a file, which is fundamentally free.


Fundraise does not mean what you think it means. Asking your mom for money to make a student film is not the same as making an actual film. People raise funds for movies from investors. Investors want their money back. Nobody goes to the theater any more, so how else are they going to pay back the investors if they can't sell the product they made. This isn't Uber just burning investors cash. Why does nobody expect to get free rides from Uber, yet expect free videos?


Fundraising doesn't mean what you think it means. Investors aren't looking for their money back. They're looking to make additional money. Fundraising is saying that the money goes towards the creation of that end product and that's it.


If you're a developer looking for a 3D reference game, this might be helpful - https://github.com/gdquest-demos/godot-4-3d-third-person-con....

If you're curious what a 'good looking' godot game can look like, PVKK might be a good touchstone - https://godotengine.org/showcase/planetenverteidigungskanone....


Wow. Other than the fantastic name "Planetenverteidigungskanonenkommandant", that is some seriously good 3D, as well as great storytelling.


I was wondering why the GCC Machine Description language was such an outlier, especially considering I've never heard of it before. I googled it, and it turns on machine description files use the extension ".md".


Epic bought artstation, bandcamp, and, sketchfab. I don't know for sure, but I don't think any of those are very profitable. They're almost like resume hosting websites for game developers. 3d artists show off their work on sketchfab, artists show off on artstation, musicians show off their work on bandcamp.

My impression is that epic bought them for sort of the same reason Microsoft bought linkedin. They don't make tons of money, but they enhance the pipeline of artists and musicians available to the game industry.

Of course I have no idea if that's why they did it, but epic has definitely shown interest in steering the direction of the game industry in the past, and aligning the talent pool with their way of thinking is maybe a good way to do that.


> musicians show off their work on bandcamp.

That would be SoundCloud. Bandcamp is a marketplace and a pretty good one.


Bandcamp was profitable since 2012 apparently.


It makes me wonder if microsoft now has the upper hand - it can now ask chatgpt/bing: who should we hire?


A few months ago, I watched some videos by Brett Victor and decided I wanted to develop a visual programming language. That led me to https://futureofcoding.org/ and its slack channel.

There was some cool stuff happening on the server, and the admin was doing his best to elevate things, but that slack channel was also the last stop for some people before they descended into templeOS levels of madness.

Right around the time I was joining, the admin posted in the meta channel that, with a heavy heart, he had finally banned [the developer of beads, I feel weird calling him out by name]. Apparently he had been too argumentative and stubborn for the server to further tolerate.

It left a weird taste in my mouth about the future of coding slack channel. On one hand, you don't want toxic people in your community. On the other hand, the server was clearly a channel of last resort for a lot of people with a lot of crazy ideas. Kicking out one if its more prominent members to toil in solitude felt kind of gross.

Its interesting to see that, a few months after being banned, the beads project seems to be materializing.


I don't think you're fully appreciating the context here... The moderator of that community had been trying over and over, both privately and in public, to get this person to follow community norms for years, but they just would not do so.

To me, who has been in that community for years, it was entirely the correct action to take. Moderation is hard and no fun at all, but it needs to be done, or else a community will descend into madness.


I was kicked out of the future of coding chat group by Ivan Reese, who exercised his cancel culture powers to permanently ban someone for daring to say that Steve Jobs had cojones for ordering hundreds of millions of dollars in parts for his products before they even shipped and knew if people liked them, unlikes the cowards at HP who only bought 10k Idea Pads (which preceded the iPad). It is ridiculous to equate a colorful, and accurate, word "cojones" with a descent into madness. Steve Jobs by most personal accounts had a bad temper, but he was amazing, and I for one miss his great designs and inventions that he brought forth. To me, Steve Jobs is the most exciting inventor of my lifetime, an incredible example of masculine energy focused in a constructive and creative manner.

The community didn't vote on it, Ivan exercised his power, because has a personal dislike for me. I met a few nice people on that discord group, but didn't enjoy being followed around by word police.


I do remember this incident well. I guess each community has to decide how it wants to operate when people in that community feel disrespected and criticised. But I also remember this comment from Steve Jobs: https://greatresultsteambuilding.net/impact-teamwork-steve-j...


To me, the core of Haskell is that: "Haskell is C with one semi-colon per function."

This forces you to put all your code into method signatures. This, in turn, means Haskell (or C, if you follow the 1 semicolon rule in C) can understand almost everything about your program.

If you actually follow the 1 semicolon rule in C, you'll get very verbose syntax. All of Haskell's syntax is in service of making programming in this style palatable.


I'm definitely thinking of making a graph based text editor.

I think I could work off of code-highlighting files to figure out where to break code out into different nodes.

Then, I would look for matching terms in each node, and make connections. Connections could also be made based on containment (part of a class, or a child function, or a where clause).

One hotkey to follow a connection to it's destination (and select that node). Another to pull it in and make it share the screen with the current node (and select it). Pressing the "pull in" key would push a node off the screen if it were already on screen.

Of course, maybe you would only want to explode some of your code as nodes. You could highlight part of you file and hit "explode" to break it out into nodes for a minute.


I'm totally ignorant in this field.

If you're worried about messing up a file, why not just make a copy of it before you edit it?


It's not about a fear of losing the original, but losing each step in the process (which may be thousands of steps), having flexibility, and maintaining pixel information/quality throughout multiple edits.

Another way to think about it (in terms of programming) would be editing some code in an existing project, compiling it, and then losing the source code for your edits. Sure, you could keep patching the compiled version (not very easy) or use some kind of instrumentation to wrap/modify existing behavior, but if you can't easily modify the source of your past work (or just a single revision along the way), then all you're doing is piling more patches (in compiled form) on top of old work - not very efficient, and you lose flexibility.

In a non-destructive workflow, you may (for example) adjust the color balance of a single object in the scene, keep working, and then realize that the color adjustments are out of place. Since that adjustment is preserved and editable at any time independently of all other edits, then it only requires an adjustment of the parameters - and you don't lose any information.

If you were to do that kind of edit directly to the pixels (even if they're on a separate layer for the object in question), then each time you adjust color/levels/etc, you're losing information that was originally there. Similar to resizing an image very small and then trying to enlarge it to original size, destructive color edits will start producing nasty artifacts like color banding (you'll start seeing a "combing" effect in the histogram when adjusting color even after a single previous color adjustment).


Well, you're right. That sounds awesome.

Is there a good reason gimp doesn't support that? You make it sound like common sense.


over 9000 files names like myfile.backup.old.xcf myfile.other_edit.xcf myfile.tried-some-filter-10.xcf


Never used version control on your code?


I'm really enamored with haskell, and you're hitting on exactly the problem I'm having.

Any advise on learning haskell out in the wild?


Find a project to work on and someone to mentor you, talk to people at on #haskell and the mailing lists and at meetups.


I learned a lot about writing good Haskell code from working with Yesod. Since it's a framework it structures your code for you and exposes you to a lot of well-designed patterns. Yesod and Conduit are two of the best written packages I've come into contact with (though there are many many more) and simply following their guides has given me new insight into what high-quality Haskell code should look like.


Hard work and practice in your spare time. Probably not what you wanted to hear, but that's the way most people do it.


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

Search: