Happy drive C:
Sad drive D:
Duck drive A:

@tfb It depends on what you want to do. If you have simple shapes and precise constraints, hand-writing it is better than Inkscape. Inkscape is better when you deal with complex shapes.

@abbienormal Racket has a "group-by" procedure in racket/list. Chicken Scheme also have a different "group-by" procedure. Guile documentation doesn't mention it. I guess this procedure is specific to implementations, and not available everywhere.

@pureevil @hj The types intX_t are optional in the C specification, unlike the int_leastX_t and int_fastX_t which are mandatory.

Keep in mind that cross-compilation exists, and the build toolchain could target a different kind of hardware than the one on which it is running.
A cross-compiler targetting an exotic hardware (one with CHAR_BITS=9 or 24) or limited hardware (8-bit or 16-bit microcontrollers) may not have the types int32_t or int64_t for instance.

@loke China is a single-party state. It's the same for the US, but because of US exceptionalism, the US has two single-party.

@amirouche @hugoestr Scheme was developped to explore and implement the actor model, which is also the basis of object-oriented programming (objects == actors, methods == messages). The principles of object-oriented programming can be applied more broadly than just the object-oriented languages, and can be applied to Scheme (having user-defined types and user-defined functions are the minimal requirements to do object-oriented programming, and most languages used today can do that).
Furthermore, unlike a language like C, Scheme gives you the primitives to write a meta-object protocol, so you can implement the primitives of the object-oriented languages at a library level (though it's usually overkill when you can use modules to limit the visibility of functions).

@amirouche @hugoestr Sadly, from a manager point of view, it's preferable to stay in a mainstream comfort zone, as it's easier and cheaper to find people to maintain the code with widespread technologies, than to find people to maintain niche technologies.
However, it would be an error to not have someone to do technological watch for the future projects, or be future-proof for the current projects, especially as the block you use become unmaintained over time.

@amirouche @hugoestr How large is the code base you maintain in your projects ?

Once your code base reach a certain size, you need to abstract the data you manipulate into datastructures and gather the functions that operates on those in the same place, so that the code is easier to maintain. Also, you usually want to restrict the visibility of functions to only expose a public interface for your datastructures, because some functions are just implementation details that are called from the functions of the public interface.
What I have described here is what object-oriented programming is about : organizing your code around abstractions, with a datastructure storing a state and functions operating on that state. A class just groups those two kind of elements in the same place, but you can do object-oriented programming without it.

Object-oriented programming is rarely overkill, unless your code stays under a few hundreds lines of code, or if you just write throwaway code. When you maintain a large code base for several years, you must think with abstractions, and not just at a class-level, but at a component-level.

@hugoestr Especially when object-oriented programming and functional programming are solutions to different problems, and are complementary.
Object-oriented programming is about structuration of data and code and separation of concerns. It answers the "where ?" question.
Functional programming is about how to write functions and methods. It answers the "how ?" question.

@haskman Unlike the PM, the engineers do not have to deal with them on a daily basis.

@haskman "Easier" here is probably compared to its responsibilities. Less politics to do compared to project management.

@pureevil I've checked Racket by curiosity. There are the same subtilities between eq?, eqv? and equal?. However, the documentation tells that if two fixnum are =, they are also eq?.
So (eq? 3 3) returns in Racket.

The problem here is a problem of naming, eq, eql, equal and equalp are too similar while they don't have the same meaning : eq is "same instance" (identity), eql is "shallow equality" (non-recursive equality : structures containing the same things are not eql if they are not eq), equal is "deep equality" (recursive equality, what you usually mean by equality), equalp is equivalence.

@otfrom It doesn't solve all the troll problems, but it limits them to something manageable.
Anonymity can be reached even with small instances or personnal instances on a federated network. After all, the fediverse as a whole is large enough so that a single user is relatively anonymous.

@otfrom I did that kind of remark in the past about the fediverse : each instance should be limited to a small community of users, around 200 people max. For moderation, I read that there is usually only a very small percentage of toxic users in communities, I remember around 5%. For a community of 200 people, that's around 10 people, so that's manageable by one or two moderators. For a community of 2000 people, that represents 100 people, and it's harder to moderate by small teams of moderators. Mastodon.social has 706K users (105K active users), so potentially, it has 35K toxic users (5K active toxic users). So it's impossible to moderate.

@juliobiason Those so-called header-only libraries are just full of inlined methods and functions.

re: Some thoughts on programming 

@loke The horrors of programming I have encountered and endured are more often linked to bad management practices and toxic behaviours than to the development work itself. The presence of programming anti-patterns is often a good indicator of management issues (understaffed teams, high turn-over, too short or impossible deadlines, lack of maintainance, lack of directions, lack of long-term vision, everchanging priorities, lack of trust....).

@schaueho The release model of Debian is to blame here.
The reputation of being obsolete when released is really dangerous when it comes to security, as many open-source software don't have the man-power for the long-term support that Debian wants.

Show older
Functional Café

The social network of the future: No ads, no corporate surveillance, ethical design, and decentralization! Own your data with Mastodon!