1,784 karma · joined October 1, 2015
If you embed the source in your project, the terribleness is about adding to your Makefile:
funkylib.o: funkylib.c
$(CC) $<
myfinalexe: ... funkylib.o ...
# your existing executable creation (linking) commandSome even made slideshows of SO screen captures and put that on Youtube, with a fake video or spoken intro to make believe an actual content will be discussed... A number of shameless people would go any length to grab bits of money anywhere and anyhow, and I've hit those links a couple of times.
I cannot say the same of the website of my French bank and its multiple rewrite over the last 8 years, which still provides less features and make them harder to reach each time.
Or the website of the national lottery and its countless rewrites, each of them getting slower, more inconsistent, and displaying less information on each screen.
Or the website of the national weather forecast, which gets worse at each iteration: now there's a 'weekly' view that shows 5 days; and I cannot for the love of God find the curves of snow and other parameters from the automated altitude weather stations any more (at each iteration, they have become harder to find, but with last iteration there is no access any more; someone's got direct links to the pictures URL on a website, but for how long?). Each time they make an update, the site is completely broken for days or weeks, before they sort out their crap and return the new shit to a more functional state.
Or the website where I did put my bicycle recordings for years without a problem and without feeling the need for any extra feature, which all of a sudden cannot be displayed any more by my old browser.
In all those cases (except the last, which is probably more recent), the needed features have been implemented for at least 15 years. They were working 15 years ago. Yet they got rewritten multiple times, and not for the best. Oh yeah, sorry, for the weather forecast website (which is a public service belonging to the legal type which is the most integrated with the State), there is a new feature added at each iteration: more advertisement, and now more tracking too! The site has become unbrowsable without and ad blocker.
And BTW now, I am met more and more often with the infamous "your browser is not compatible with this site, please update to Chrome / Edge / ..." messages. I thought this kind of things were dead and buried. They were dead and buried, for 10 or 15 years, but now dreadful times are starting again and they rise from their grave.
The mass, thus the normal user, is indeed the enabler.
It has always amazed me how finding something which originally seemed a trivial little thing, usually meant going through a chain of #defines and typedefs across many header files. It's the same with GLibc, by the way. It' a bit like when you hike to a summit by following a crest path: you always think the next hump in sight is the right one, your destination, the promise land; and when you reach it, dammit, it wasn't, your goal is actually the next one. Or perhaps the next after the next. Or...
Tell that to most of my browsers which refuse to display any Gitlab content (they only ever show the side bar).
"Gourmet", "Chef", "Cuisine" and dozens of other terms: even in the English culinary vocabulary, the French words have a predominant role. It ruled the world of 'proper' cooking at some point. But I was more thinking about how, from the USA, the French are presented as having a balanced diet, eating a bit of everything but not eating too much of anything, cooking by themselves and not resorting to mostly ready, industrial, over-processed meals, how they would be a sort model in those matters related to food.
What was very fashionable at some point in the discourse on healthy food (10-15 years ago, maybe), was the Greek/Cretan diet; which was often extended to the whole Mediterranean, including Italy indeed, and south of France. Traditionally the butter & cream you mentioned are associated with northern France: the South was supposed to be a land of oil (olive oil in the most Mediterranean part, other oils in other parts) and the North a land of butter.
In France ("the land of delicate and healthy food", as it is sold to you), obesity rate was multiplied by 3 since the 80s. Overweight rate raised by 50%.
Diabetes has also been on the raise: double or tripled since the 90s.
You know, in general all the crap that develops in the USA reaches other countries after a while. Depending on which specific 'crap', it is just a matter of variables delays and variable intensity, but it surely comes one day.
Never in modern times have we worked less. It is not that much the 7 or 8 hours of not-quite-daily work which make us tired, it is that on top of it come the 2 or 3 hours of not-really-interesting-but-designed-for-addiction serials watching, the 1 hour of news article browsing, the 2 hours of reading and sometimes writing hundreds of comments about what makes us rage on whichever form of forum or social media or newspaper comment section, the 1 hour on social media of keeping-connected-with-family-and-friends you wouldn't have cared about before, the 1 hour of wanking off to the hundreds of thousands of hours of free porn available in 1 click while you would never have bought a porn magazine before, the 1 hour of browsing online shops for stuff you don't really need of for which you could just have bought the first item at your supermarket without spending hours of research to get the very best one or to save 10 cents.
For most people, at least half of this time spent connected to Internet would have been free 15-20 years go. Free to cook, free to rest, free to read, free to get bored, free to do something a bit more productive or interesting than indulging into one's vices or immediately yet falsely rewarding consumption, which is what the new Internet-backed face of consumerist capitalism excels at providing.
A lot of Internet leisure now occupies many hours a day, and gets placed at the same level as work and duties, instead of being considered as one way of occupying one's free time, so now the free time seems to be only starting after all this leisure consumption has be done, thus it appears extremely reduced.
Here is a starting point, miles and miles away from the historical centre of Toulouse: https://www.google.fr/maps/@43.537841,1.2268468,2639m/data=!...
Now it is not only happening around cities, around big towns, around small towns, it also happens at unprecedented speed around the tiniest villages.
A site that puts side by side aerials from now and from before urban sprawl: https://remonterletemps.ign.fr/comparer/basic?x=1.212446&y=4...
Back in huge cities. The city of Paris is much less populated than one century ago. Now it represents only 1/6th of the population of its urban area, an ogre which has swallowed almost 2000 municipalities (two thousand!).
Elsewhere in the country, you see urban areas from cities multiple dozens of miles apart joining in a continuous sprawl. Heck, even in my deep and remote area disconnected from any city or even town, there is now 5 miles of sprawl joining the 3 villages of the valley in continuous strips along the roads; before the sprawl, population of my municipality was 50% higher, and yet 80-90% of the now occupied space was free.
People like to share things they hate, especially on the Internet of the last decade
My national subreddit was a perfect example of that, most of the posts were posted by people opposing what was said in the linked article and willing others to rage about it too.
Well, you/they practised at least C++98, C++11, C++17... That's many different languages already ;-)
Then in 2012 or 2013, they 'modernised' it into the current one: glued pictures with almost no separation and 100% screen occupation making an irregular patchwork; no title/description if you don't hover, I guess to accommodate a growing number of people who dumped their memory card without captioning their photos, and often without sorting them.
You are just lucky with your number. We get an average of 10 calls a day. Yes, in France. Stuff like Bloctel do not work, it isn't respected. I don't even know if fake caller numbers are now finally disallowed, it doesn't look so; anyway they were allowed for a long time.
Each time the government grants subsidies for whatever, it is immediately diverted by an enormous amount of companies which deal with the grey areas of the laws (laws concerning that subsidies and laws concerning solicitations), and if you have a residential number, you get spammed with commercial robot calls all the time (and then there are the 'empty' robot calls, too).
I am not sure this (both the self-direction criterion and the 'complete to the end' criterion) applies to a majority of PhDs .
There are dedicate headers fields for that purpose, they are set automatically.
It is the same as in politics: saying 'because security', is a very convenient and easy way to get about anything accepted, little by little.
Yes, but where? :-) Because those large plates and the attached isolation plates fly damn well when there is a bit of a tempest.Those exists in macro assemblers, for they are extremely thin abstractions, no thicker than jumping to a label instead of jumping to an absolute or relative address.
> no exposure to IO unless on a CPU with MMIO.
Well, since not all processors have I/O instructions (or dedicated I/O pins), the easiest way to implement portability is simply to not provide a direct access to them in the language, and let library functions handle it.
Last time I looked for a study of a similar subject (I think I was looking for speed comparison between T9 and multi-tap input), it was something like that too: 30 or 50 students given a short exercise. And then subdivided in several categories (T9 / multitap x novice / average /expert), which brought the size of each group way below 10. The measuring criteria were also a bit weird, concentrating on the number of errors and not on the time to get a correct result. They were surprised that they were getting sensibly different results from a former study they were quoting, which was also using ridiculously low sample size...
I didn't find a proper study on that subject. I thought it would be easy to find, as it didn't seem to be a niche subject at all: on something that was in use by 100 of millions people... I was a bit appalled that such crappy papers were published, but even more by the fact that no good one was. No-one decided to run a proper one after seeing the poor ones. And don't get me started on 'meta' studies (there was one) which push the limits of laziness even further since they do no study at all and even don't reproduce or improve a former one; packing a variety of crappy studies doesn't make a good one, no more than running bloody abstract statistics over figures which were not harvested using similar methodology in the first place.
I'd rewrite this as "People who want to make money from GPL software should ...", because GPL software in general doesn't have to have a commercial goal.
Here's what he wrote in order to complain about it:
if (mode == ambient) {
// handle pixels as ambient...
int steps = right.a.x - left.a.x;
float dv = (right.a.ambientLight - left.a.ambientLight)/steps;
float currentIntensity = left.a.ambientLight;
for (i=left.a.x; i<right.a.x; i++) {
WorkOnPixelAmbient(i, dv);
currentIntensity+=dv;
}
} else if (mode == gouraud) {
// handle pixels as gouraud...
int steps = right.g.x - left.a.x;
float dred = (right.g.red - left.g.red)/steps;
float dgreen = (right.g.green - left.g.green)/steps;
float dblue = (right.g.blue - left.g.blue)/steps;
float currentRed = left.g.red;
float currentGreen = left.g.green;
float currentBlue = left.g.blue;
for (j=left.g.x; i<right.g.x; j++) {
WorkOnPixelGouraud(j, currentRed, currentBlue, currentGreen);
currentRed+=dred;
currentGreen+=dgreen;
currentBlue+=dblue;
}
Nobody should do that. We use a temporary variable of the correct type. For example this way (but it could also be done with pointers to access directly the union variable): switch(mode) {
case AMBIENT: {
PixelDataAmbient l = left.a;
PixelDataAmbient r = right.a;
int steps = r.x - l.x;
float dv = (r.ambientLight - l.ambientLight)/steps;
/* ... */
break;
}
case GOURAUD: {
PixelDataGouraud l = left.g;
PixelDataGouraud r = right.g;
int steps = r.x - l.x;
/* ... */
break;
}
/* ... */
default:
show_error("Illegal mode");
}
There is no need to cart all the .a. and .g. around and clutter the code. And there is no possibility to accidentally access the wrong fields the wrong way: trying to access l.ambientLight in the second block (GOURAUD) will fail at compilation since a PixelDataGouraud doesn't have an ambientLight field. It is also not possible to do PixelDataGouraud l = left.a; since left.a is not a PixelDataGouraud.Much cleaner, much more readable and avoids most of the possible errors he complains about.
They keep on adding things, experimenting things, sometimes removing things, changing engines. If they think of a feature or someone asks for it, they implement it right away as a fix. They are very nice and helpful, but the problem is that those small features and fixes are not sufficiently thought out to maintain consistency. They are just there to get things done on the moment.
The documentation is mostly at introduction level, whether it is named that way or not. It is almost never exhaustive, it is often not up to date. Often, the options are not described, you just have their name: no idea about what they do, let alone how they interact.
Because things interact there too, and as with LaTeX, it doesn't always interact well, despite the more integrated approach that ConTeXt proposes.
It (more and more?) shares some of the problems of LaTeX. LaTeX has many different packages for the same thing (let's say tables) and none of those is complete? Same thing in ConTeXt nowadays, there are several table environments, and none of them is a pure improvement upon the others. So a package/environment adds a feature compared to an existing one, but it doesn't include all the features of existing ones. So you often end up with the same category of problem:
-- I want to do A => use this package/environment! -- I want to do B => use that package/environment! -- I want to do A and B => you're out of luck!
Yes, I am a bit, no, a lot pissed at the moment:
a. by my constant or growing struggles to get some stuff done on ConTeXt and LaTeX, stuff which doesn't look from outerspace and seems it should be handled out of the box, without needing to get dirty with low-level macros just to get stuff to behave consistently (because often said stuff actually works in some cases);
b. by the lack of robustness those tools are still showing, despite decades of massive time and energy investment by people who have a much better understanding of these shenanigans than I have. This is emphasised by my recent attempt to come back to LaTeX and the subsequent finding that I am hitting the same kind of exhausting inconsistencies I was hitting 10 years ago.
I am so depressed about the situation that I think that it must be impossible to build something robust upon TeX as a programming language. TeX the composition algorithm is probably fine, but building something based on this fragile, clunky macro language is probably destined to end up being fragile and clunky, in spite of the original intent. The automation of composition is already a difficult subject with a great many moving, interacting pieces; having to deal with such a rough language on top of this...