1,599 karma · joined November 23, 2012
I really don't see the advantages of dynamic languages. Supposedly you develop faster, but in my experience that's absolutely not true.
It's very telling that extensions like OpenShell and 7+ Taskbar Tweaker are so common. Also, I'm still salty at the removal of the Windows Classic theme and of the detailed. I use WindowBlinds as a patch of sorts, but there is still a lot of customisation missing. Customisation that used to be available in older Windows.
I don't know if it's just me, but I'm seeing a lot of urge to change everything even in more conservative big enterprises, which used to be the safe space of sorts for people who wanted to build products in stable technologies, maybe not so hot but still really solid and well-functioning. I can understand if enterprise desktop applications are seen as obsolete and everything has to be web now (to me it still sucks, though, both as a developer and as a user. I assume I'm obsolete as well), but since a few years ago, now everything has to be Everything as a service, and machine learning must be shoehorned in some way, no matter whether it's well suited to the problem at hand or not. It's being so bad that higher management starts demanding rewrites of 100K-1MLOC applications in new languages, with every component of the full stack being new, because trusted technologies are apparently not evolving fast enough.
As I've said above, I assume that I'm just obsolete. But I'm pissed off at the current state of the industry, not only because I have to switch jobs for my mental stability, but also because I used to be at least partially in sync with many aspects of the industry, but that has stopped in the last 5 years or so. I don't see myself being a developer for too long... it's too much bullshit and I have non-software skills that I can put to good use in a job that doesn't make me insane, even if the pay is lower.
For some of this software there are reasonable alternatives (emulators, for example. I care about the ROMs, and they are not tied to any operating system). Others, not so much (like my Winamp with 20+ input plugins, some of which can play audio files that I haven't found how to play in Linux, at least using a single player for all the formats). Admittedly, Windows' bullshit is making it harder and harder to justify compliance. I assume that at some time in the future I will finally switch and eschew all the bullshit of aggressively anti-user behaviour (ads, forced updates, changes in UI or in the default applications because of said forced updates, and so on) that Windows seems to love since 8 or so.
I know I'm not alone. If Windows gets rid of all this compatibility, there is no fucking way that users are going to accept it. Let Windows be Windows and Linux be Linux.
Hmmmm... I "discovered" this method when I was like 14, but I didn't think it was a big deal, since it was equivalent to the standard formula. I'm very sure that I'm not among the first million people who "discovered" this on their own. Also, while this allows some quick calculations in your head (the example equation, x^2-2x+4=0, is certainly faster to do with this method than with the standard formula), for more complicated equations it loses it appeal very quickly, especially if the main coefficient is greater than one (think of something like 3x^2+2x+1=0, which is still not very complicated, and you will realise the usefulness of the standard formula).
As someone who has loved math since forever and who has discovered a million of "neat tricks" like this one (mostly useless, though), I've sometimes wondered whether some of them could actually be useful. Over the years it has become clear that all the "neat tricks" that are actually neat and useful are indeed widely shared everywhere, while the not so neat remain obscure despite being relatively easy to be discovered, because they don't have much application. And people like me who are willing to spend the time rediscover them again and again, only to discard them because they aren't a big deal.
An example of an actually good trick: I was so proud of my novel algorithm to find the gcd of two numbers when I was in high school... then, in my first year at the university, I learned that it was called "Euclid's algorithm" and, as the name implies, it was pretty old :) .
I don't go for being the fastest or anything, I just want to do everything in a way that I like. Last year I did everything on the same day it got out; I plan to do the same this one, unless there is a particularly bullshitty problem that puts me off.
I guess that in part it's a matter of mentality or personal style (I know that I think mostly in terms of guarantees, invariants and so on, which is why types are so useful to me; I feel like other people think more in terms of operations when they program, and maybe dynamic programming suits them more). But there are some huge advantages as well. The tooling is far better (like the incremental compilation in Eclipse, also available in IntelliJ but turned off by default IIRC, which highlights compilation error while you are still writing the code); there are fewer unit tests required because there are fewer things that can go wrong, since a lot of them can be enforced by the type system; most important of all, reading someone else's code is far easier because mandatory documentation, in the form of type names, is all over the place (yep, not a fan of type inference either). And there are more and more advantages.
I just don't see myself working on even a moderately sized code base in a dynamic language. The pain is too real; I have been there.
I've found that there is a sweet spot in the middle of both competencies, where you can teach the least experienced members of the team and people appreciate you for that. It's something that must not be overdone, but there are plenty of opportunities (like, say, during code reviews), and in my experience most people appreciate it as long as the explanations are brief and clear. Think something like "doing things this way can be problematic, because of X and Y. I recommend using this alternate structure, which doesn't have these problems, although it still has the minor inconvenience of Z".
For context, the first computer we got at home was a PC at some point in '94 or '95. We had MS-DOS 6.22 and Windows 3.11. Some years later we moved into Windows 95. While I didn't really use these kind of GUIs (DOSShell and so on) as often as I would like, I always thought they were very pleasant to use. There is something about that DOS font that makes me happy each time I see it, and there is a certain feeling of being a stereotypical movie-style hacker when you use these instead of modern, actually graphical UIs. And yes, the reminiscence of simpler times with simple software, way before the surveillance capitalism and the brutal omnipresence of ads, is easy to appreciate.
The nice thing is that early versions of Windows supported these GUIs as well. So, a few years later, during my degree in Computer Engineering, I learned some x86 assembly (using Turbo Assembler as a compiler); this was during the early 00s, and we still used EDIT.com as the main text editor, although there were some others available. I loved it since the first day, both in concept (super low level programming with direct access to the hardware, managing interruptions and so on) and in execution (everything was in that text mode I loved, since modern Windows and their restrictions didn't play nicely with such low-level programming). I learned a lot from Ralf Brown's Interrup.lst, and wrote a few simple GUIs of my own, using box drawing characters and all that. Aside from those I wrote for academic work, I mostly spent a lot of time creating a silly GUI that allowed you to modify the look of the console. There were a few resolutions available, from 40x25 to 132x60, and you could change the colours of the text, the background and the border (yes, there is a border, which you can set to a different colour than the background. And my program could get 2^18=262144 colours available, not just 16! Although 16 was the max simultaneous on-screen limit IIRC), plus the font (I was able to add an edition screen where you could see the aspect of all 256 characters, yet I could use box drawing and so on for the interface in this screen. Did you know that DOS allowed two different sets of characters in screen at the same time?). There were some other additions like pixel-level scroll as opposed to the usual line-level scroll, and background "music" using the PC speaker. It didn't have any practical purpose aside from these silly customisations (which, in the case of Windows, went away when you closed the windows, and some times, also when you moved from full screen to a window), but man, did I have fun coding it. It's still one of my best memories of programming, nearly 15 years later.
Then, in 2009, my last Windows 98-capable computer stopped working, and current hardware only supported Windows XP and newer, so all of this fun basically stopped being possible (especially considering that basically all state of the art hardware was already 64 bits, and 16-bit applications like EDIT.com weren't supported any more). With emulators it's not the same, because I know I'm not really accessing the low-level hardware registers. By that time I already had a job and there was less time for this kind of hobbies, so I eventually stopped. Currently my recreational programming is mostly oriented towards math (Project Euler and so on), which is very different, but I still remember those days very fondly. I still have all that code somewhere.
Yeah, it's all nostalgia, but that doesn't mean it doesn't hit hard.
Most often I use unicode strings in unexpected alphabets (i.e. from languages that are not supported by our application and that are not used by the mother tongue of any developer from our team). This includes Chinese, Malayalam, Arabic and a few more. There was a time when I wanted to test the "wrong data" cases for some deserialising function, and I was part annoyed and part amusingly surprised to discover that doing Integer.parseInt("٤٣٠٤٦٧٢١") in Java does parse the arabic digits correctly even without specifying any locale.
As a n=1 data point I'd like to add that I watch youtube mostly for music, and it that sense the algorithm is not so bad (since there isn't much room for "viral" clickbait), and my only complaint is that it usually shows me the same videos over and over, but it still shows me related videos that I usually like. Whenever I commit the mistake of clicking on a non-music video, my recommendations get polluted for something between one day and one week.
I never log in, so if for some reason my cookies get deleted or corrupted I suddenly get a fuckton of shit with celebrities, "outrageous" political opinions and so on. The recommendations don't get back to normal until at least 3 or 4 weeks. This has happened 2 or 3 times, and it's so infuriating that I wonder if youtube does it on purpose to nudge me into logging in and have a view history associated to my account.
Not all codebases are equal and maybe I was lucky, but in my experience, using dynamic languages (or, to be exact, any language where the compiler doesn't nag you when there is a potential problem) doesn't scale well.
EDIT: Ok, after reading the comments, it seems that Winamp does indeed work in W10. So I guess that this "update" is not really necessary and this is just PR. I understand the reasons, but personally I've never felt the need to update.
When I'm studying anything, I've found time after time that writing a summary of the lesson is one of the best ways to remember everything afterwards. Usually I don't even read it afterwards, since the benefit comes from the writing process. YMMV.
SaaS, and streaming in general, is very much anti-consumer, especially for those of us who value reliability over quantity. It's sad, but in most cases piracy really is the most pro-consumer option, even without considering the price (although in my case I usually just don't bother and go for other forms of entertainment).
The next generation of consoles already seems to include two versions, one with support for discs and another one (cheaper, of course) which is digital only. I'm tempted to rant about how this is a ploy to incentivise people to eschew physical games and go digital only, but I would be fooling myself, since physical games are also DRM-riddled and they might just stop working if some software update so decides.
I really, really despise advertising. It can't disappear soon enough.
To make this comment a bit less ranty, I'd like to add something: some people believe that ads don't work on them. I very much disagree. Ads DO work. That's exactly why I don't want anywhere near me.
Anyway I'd rather not use public transport right now. I don't think it's safe.
On the other hand, I don't particularly miss the office. Sure, it's nice to have breakfast with my workmates from time to time, but I can live without it.