That is not the hallmark of literate programming, but the hallmark bad/unhelpful code comments or docs. Like, you can also have bad/unhelpful function names or unclean and tangled implementations.
"TeX: The Program" is a joy to read.
HN user
[ my public key: https://keybase.io/fxn; my proof: https://keybase.io/fxn/sigs/v1923FtyV13AgJGrm9SgJ35upEHMVmLETRyA-xZ8UlY ]
That is not the hallmark of literate programming, but the hallmark bad/unhelpful code comments or docs. Like, you can also have bad/unhelpful function names or unclean and tangled implementations.
"TeX: The Program" is a joy to read.
The remontoire has a technical/practical modern use in the Zeitwerk.
Some links do not have information yet, others do, for example https://hotwire.io/frameworks/laravel or https://hotwire.io/frameworks/django.
No.
No, Hotwire is framework agnostic it is web components and JavaScript, basically.
You can Google Hotwire with Django, or Laravel, or many others (https://hotwire.io/frameworks).
The article section about interpreted vs compiled is incorrect.
.exs files are compiled just like .ex files are. The only difference between `elixirc` and `elixir` is that the former creates an artifact on disk, and the latter does not. See https://medium.com/@fxn/how-does-elixir-compile-execute-code....
Also, Ruby is as compiled as Elixir is.
Compiled vs interpreted is blurred the moment you compile to bytecode run by a VM. An artifact is not a fundamental difference.
This is not true.
In Ruby, tests are the same you'd write in any other language. You test that things do what they are supposed to do, not the types of parameters or return values.
The Atmos does not have a seconds hand. All models except two do not have minute indications.
I believe that is going to difficult measuring accuracy. You can approximate something if you compare it over a long period of time, perhaps at 12 o'clock, or as much 12 o'clock as you can tell by inspecting the hands alignment.
It is read-your-writes semantics, and the metadata is stored in the session.
It is your choice. You are in charge and freelancing gives you the opportunity to bill _less_ and leave space to other important things in your life for which a regular job would compete. Family time, sports, hobbies, learning new things, etc.
This project is wonderful. Dozens of cities over the world are opening their doors to its citizens thanks to it. In Madrid, inhabitants have a direct vote on how to spend _millions_ of the city budget.
I wish the future of our society goes in this direction.
I have tried a bunch. Notion is super cool, but doesn't do tables at this moment (though they seem to be working on it). Some apps have one level of nesting only, which is not enough structure for my use case. By now I have settled on Dropbox Paper.
Also, having a WYSIWYG editor is cool, in raw Markdown links and images just do not look good for my taste (and tables, and more, compared to Dropbox Paper or Notion). The number of files for which they support syntax highlighting is small though. In particular Elixir is not in the list as of this writing.
IMO an ORM is not a substitute for knowing SQL, much less studying the actual database.
To me, an ORM is a tool that allows someone that knows SQL to write statements they would write by hand using business-level vocabulary.
Also, you have to be savvy enough to know when you are hitting the max expressiveness of the ORM and need some powerful SQL you better write by hand. Active Record certainly provides API for that, and it is an API you are supposed to leverage when the circumstance arises (Rails team over here).
I have not watched the video, but for people reading only comments let me clarify.
Numbers go naturals < integers < rationals < reals. Reals are the union of rationals (quotient of integers) with irrationals.
Rationals may have an infinite decimal expansion, like 1/3 has, but it has a repeating pattern at some point. Irrationals have an infinite decimal expansion and has no repetition of that kind.
This characteristic of irrationals does not depend on the base, it is always the same way. The finitude or infinitude of the representation of a rational depends on the base, but if infinite, there is a repeating pattern.
This regexp is totally brilliant. It solves this problem in an unexpected way, because you think numbers, but the solution thinks strings. Not only that, the paradox, or its beauty, is that it goes to the root of the number abstraction: counting sticks.
I explored this technique some years later to solve a bunch of other problems, coprimality, prime factorization, Euler's phi, continued fractions, etc. (see https://github.com/fxn/math-with-regexps/blob/master/one-lin...).
I am sorry, those are programming languages whose name has one letter.
For a true one-letter programming language please check SuperPython http://search.cpan.org/~mjd/SuperPython-0.91/SuperPython.pm.
The author of the post had projects in SourceForge, also listed in Freshmeat.
But they were not hubs at the GitHub level, contributing to Open Source was fragmented.
All merged by now, more than 60 signatures ATM.
The post is assuming nothing about the motivations, which anyone but founders can't but at most conjecture.
Constructive feedback is fine, but "I have told you, you know that, but you are ignoring me, what's wrong" is a different story. My reaction to that is 1) it shows you already sent the feedback, what you want is to complain in public, and 2) I own you no shit.
Yes, in that case that's not your market. (Unless someone responsible for some of that budget hires you under those "local" conditions.)
But in general, as in any product or service, you have a market. Sometimes you may loose the lead, but it is important to say no to be true to yourself.
What I have found is that people and companies with which I get to work are clients of high quality themselves.
In practice, this starts with my availability. Since I don't work with estimations my gigs do not have an estimated end date, because what I only care is that what I am hired for finishes in its natural way.
In particular I don't tell my clients "I need to be done by time T", that would be putting a de facto deadline to the project and wouldn't be consistent with my view to focus on bringing the best value to what I am hired for.
So this is not a selling strategy, but it is just the natural way in which the conversation normally goes. Then, I explain why I work that way. Also, the corollary is that if that person or company hires me, I will be as focused on their problem and in the quality of work as I am being now with my current gig (the commitment that doesn't allow me to give a starting date.)
I have some public track record, so when someone hires me they know who are hiring. That, I am sure, also helps. Though I have to say when I started I didn't have so much exposure.
BTW, that for me includes Scrum sprints. No matter if you call it points, or whatever, you are estimating that something is going to take so much, and that by next week we could deliver A, B, and C. Is the same shit in the end.
Don't do that, talk about facts. Use past tense. Last week we DID A, B, and C. This project COSTED this much.
Some clients already work without that shit, pipeline and priorities. That's all.
Also, do not put yourself in a compromise by inertia. "I'll have it by tomorrow" and nobody asked. Try to avoid that kind of sentences. Then you absolutely have to do it by tomorrow no matter what, or else you need to excuse to fail the expectation. Be deliberately vague: "I'll have it soon", "I'll write back", "I'll prioritize this", often times that language is more than enough for communicating. But best of all: say nothing! Just work hard, let your work speak for you.
Working hard is key. Work hard and communicate often to have a close feedback loop. If you do that, in a few days your client already sees how it goes, it can feel the speed (as you do), it can feel the velocity, and that everyone is concentrated on what matters for quality. If you enter that flow, everything is so smooth and good for the success of the project.
I have been working non-stop that way for 5 years, and I truly believe it is the best way to deliver quality software.
I have been doing freelancing for the last 5 years without estimations or deadlines. Has worked so great, everyone involved is focused on the task, you iterate and concentrate on business value, quality of the solution, etc.
Nothing can be "late", there is no "I said that by X..." in your subconscious (because you like to do what you say in the end), no absurd negotiations or revisions, there is nothing to try to stick to, nothing artificial interfering with working hard to get the best out of the project or task at hand.
I wholeheartedly recommend it to anyone who can work that way.
I explored this technique applied to a few other problems just for fun, integer square root, coprimes, continued fractions, modulo, etc.
https://github.com/fxn/math-with-regexps/blob/master/one-lin...
Some time ago I wrote a post with a little bit of historical background and an outline of their formal construction: http://advogato.org/person/fxn/diary/475.html.
If you present a code with ten dots, he will probably say it is bad code. But he won't invoke law of demeter. That's the point I think.
Is like invoking SRP. Fuck that. When you are experienced, you develop a sense on delineating responsabilities in a way that fits your application.
I am not David of course, but I have participated in some discussions with him, and we think very much alike on these topics, I think what I say above is right.
Going to switch to myself now: When people invoke SRP a priori they sometimes end up with one class == one method in a theoretical a priori way.
I don't think that works. It goes in the reverse direction. SRP is inferred, it emerges, it is not applied as if it was a logical proposition.
Because he judges a series of dots by themselves, not because any law mandantes anything. He gives a shit about these grandiose names, show me the code and let's discus on that.
He does not say it is bad per se.
What he criticizes is using any of these "laws" and "principles" as if they were truths, as if the argument was based on an axiom or had the strength of science.
They are "inferred" from experience statistically speaking, but in each individual case you need to gauge and check yourself whether those three dots make or not make sense.
It is your judgement in particular code that matters, not the a priori invocation of any "law" or "principle".
Axioms are not beliefs. Axioms are a priori and you formally derive stuff from them using particular logic rules.
Generally speaking, nobody claims that the axioms of set theory are true in any ordinary sense of the word true. Does it makes sense in the real world to assert the existence of an infinite set, and have different sizes of infinities as a consequence? It is irrelevant, you assert the existence of an infinite set because it is practical from a pure mathematical point of view, because you want to model infinite sets like the natural numbers (an abstraction, do they exist? it doesn't matter to mathematicians generally speaking).
Mathematics no longer pretends to describe what is true, what holds in our reality. That idea was abandoned some time ago. A canonical example were non-euclidean geometries, that were studied in the XIXth century for the sake of it. They had applications later, but the motivation for their study and changing Euclid's axioms was formal.
I blogged in http://advogato.org/person/fxn/diary/498.html some key differences between Perl and Ruby regexp flags (which includes this gotcha).