1. 6

    My experience mirrors the author. It’s great for things like programming. You can’t be too distracted by the Internet or tempted by games because this machine lacks the resources for many of those things, at least while running other things as well. Netflix doesn’t run because there is no Widevine plugin for ARM64 (yet).

    It is fast enough to do one thing at a time. I’ve been writing Rust and Go code on it, using emacs & lsp-mode (so continuous recompiling in the background), and running a browser for docs and youtube playback in the background. This works fine, but is probably at the limit of what this laptop can handle.

    1. 4

      Have you tried a lighter browser like netsurf for documentation? And is there any difference when you use mpv+youtube-dl instead of the official site?

      1. 1

        I haven’t tried either. It works just well enough as is not to bother.

      1. 4

        How’s the battery life on this thing? This is THE selling point for Chromebooks for me: 10+ hour battery life, not a problem. It’s hard to get that out of refurbished Thinkpads.

        1. 7

          TBH, I don’t know what the battery life is, and I’ve been using one off and on since January. The only times it has run out on me were when I forgot to plug it in overnight. It goes all day for me. I plug it in at the end of the day. I’d ballpark it at 10 or 11 hours. I don’t use it for longer than 8 or 9 at a stretch regularly, though. I’m using Manjaro plasma with the kwin-tiling extensions, in case that makes a difference.

          It does charge slower than other laptops I’ve used.

          1. 4

            I get very good battery life out of it with brightness turned down a bit. I recently tweeted about this and it seems my numbers are on the high en of the spectrum, but most people report at least 7h+ of battery life. I get over 12 hours of moderate to heavy use with low brightness (streaming youtube in the background while compiling Go or Rust code and using emacs).

            Like most people, using Manjaro with KDE Plasma desktop.

            https://twitter.com/wvdschel/status/1255838511258914816 for context of that discussion.

            1. 1

              It’s hard to get that out of refurbished Thinkpads.

              A lot of this is due to the dire ThinkPad battery management, that unless you micromanage it, will kill the batteries. My friends with Let’s Notes and MacBooks get almost like new battery performance out of a few year old cells, so…

              1. 1

                I guess that’s why TLP was initially developed for Thinkpads?

            1. 0

              This is ridiculous. The iPhone SE is not a commodity. If you want to compare it to the automotive industry, it’s an entry level Porsche.

              It starts at a price high enough that most people can’t afford for a superfluous expense such as a smartphone.

              It might be cheap from the perspective of a software engineer making good income and having high job security, but that’s not most people. For it to be a commodity, shouldn’t most people be able to afford it easily?

              1. 2

                Unless you only consider Apple devices, then it’s kinda cheap. Total cost of ownership is important too – I’ll gladly pay a bit more for a phone that lasts longer. Apple’s commitment to recycling is important as well.

                1. 1

                  I understand that total cost of ownership and recycling are different stories. But I know many people with lower incomes (or no interests in technology) that will do longer with an $80 than most iPhone users. I will also bet you $1000 that if we pick 100 random iPhone owners, no more than 3 will cite recycling as a reason for buying Apple on their own.

                  Your argument about only considering Apple can easily be countered with extending my analogy to “unless your only considering Porsche”.

                  1. 1

                    Apple devices only last longer in the sense of Apple supporting the hardware for a longer period of time. Android vendors often only offer 2-3 years of support but the slack is often picked up by AOSP-derived Android distributions, extending the useable lifetime way beyond those 2-3 years. Distributions like LineageOS offer OTA updates which makes them just as useable by non-technical people as stock distributions. There’s a Samsung Galaxy Tab 3 from 2012 and a Galaxy SIIIneo from 2014 in use here which are running LineageOS with OTA updates, after I installed the original image I have not had to do anything other than to press ‘OK’ to keep them up to date. Battery life is still OK, the SIIIneo lasts for about 2 days of use as a phone and media (music/netcast) player, the Tab 3 has a standby life close to 3 weeks, screen-on about 7 hours. Not bad for an 8 year-old device which never had its battery replaced. The battery in the SIIIneo can be changed in a few seconds if needed so even if it were to go dead I could replace it easily.

                  2. 1

                    I feel your analogy is a bit wrong. To me, SE isn’t an entry level premium, it’s a middle class phone. You don’t have premium features at all here.

                    1. 1

                      A commodity is something made to a standardized quality that can be traded in bulk. Manufacturers then don’t have to worry what well their oil came from, or what farm grew their potatoes. Conceivably, you could apply this label to the affordable Android phones - they all use similar chipsets, have similar capabilities, and run the same OS; the logo on the outside matters very little.

                    1. 3

                      I love how this guy is going like “Linux isn’t secure, because I can elevate arbitrary code execution into full system compromise, provide the user types in their sudo or root password”.

                      Well of course you can. This applies equally to all computing systems.

                      1. 6

                        Well of course you can. This applies equally to all computing systems.

                        Not really, no. In many systems, it is not possible to gain privileges, only discard them.

                        Try Genode’s Sculpt sometime.

                        1. 5

                          Does it though? IIRC on Mac OS there are some filesystem locations and executables that you can’t run with sudo, thanks to SIP.

                        1. 18

                          I’ve preordered it back in … jeez, 2017? What makes the Librem5 a major improvement (imo, of course) in comparison to Android or iOS is that it is actually free software and hackable. Those security features (someone called it security-LARPing recently–I think that fits here) always felt like they are to generate more press around it, and looking at how it was covered in the relevant media, it worked.

                          1. 4

                            I sadly had to refund my order a few months ago to pay for repairs on my car :(

                            1. 1

                              I’ve preordered it back in … jeez, 2017?

                              Same here. That’s a long time ago. I hope to receive it sometime this year.

                            1. 5

                              I have a secondhand Lenovo ThinkPad Compact USB Keyboard with TrackPoint‎ which I usually use at work (I brought it from home). I also have a IBM SpaceSaver II, which also has a trackpoint (it’s really old and still has PS/2 instead of USB). Then, I have a mechanical Cooler Master MasterKeys S with brown switches and black, blank keycaps.

                              I’m pretty happy with all of them. But then, I also enjoy typing on the keyboard on my tiny Dell Latitude laptop. By which I don’t mean that keyboards are not important to me. It’s just that you don’t necessarily need a mechanical keyboard.

                              Actually, the more expensive keyboards have more gimmicks which usually only annoy me. For example, the Cooler Master keyboard has macros and some other fancy things. Sometimes I accidentally hit a button, which changes a keyboard state and my keyboard goes all weird. Then, I have to restart the system to have it usable again (makes you wonder why I spent so many bucks on a keyboard in the first place).

                              1. 2

                                I’ve used one of the earlier ThinkPad USB keyboards to the point that it broke. I really like trackpoints, what can I say. Good keyboards, excellent value. If you kan find them with the old ThinkPad layout (not the chiclet ones), they look pretty nice as well.

                                1. 1

                                  I also use the ThinkPad Compact USB Keyboard. I swapped out both of my mechanical MX Brown keyboards for them. My dream keyboard would be that ThinkPad keyboard, with a bit better build quality, backlights and with a trackpad, just like how they are on the laptops.

                                1. 2

                                  I really like the Happy Hacking Professional Keyboard in it’s Japanese layout. I’m not sure if there’s a second gen one. The Japanese layout has arrow keys. I really like my arrow keys. Picture: http://i.imgur.com/crKGrM5.jpg

                                  Other than that, I’ve bought the Vertex Race 3 (https://images-na.ssl-images-amazon.com/images/I/71v7YUUDpXL._AC_SL1500_.jpg) and Keychron K4 (https://ph-files.imgix.net/e7457560-64d5-47dc-bc85-116f65121b84). Of all of these, I’d rank the HHP Japanese edition the highest, followed by the Vertex, and lastly the K4.

                                  The K4 is really quirky with regards to the F-keys on Linux. You can work around that with some sysfs hacks and using it as an Apple keyboard, but honestly, I don’t want to have to bother with those kind of things for a keyboard. It should just work.

                                  All of them are really solidly built, but the Vertex Race 3 is in a whole other league. Despite it’s small size, it is superheavy, so don’t get one if you intend to take it with you all the time.

                                  1. 1

                                    Is this satire?

                                    1. 3

                                      It’s clearly instructional and not satire, as far as I can tell. What’s makes you think so?

                                      1. 1

                                        I just thought opening with “Diagonal layouts are great” sounds like it’s insincere. Diagonal layouts use a ton of space for conveying very little information, and they are often combined with weird scroll-highjacking effects in my experience, the slide deck exposé scrolling effect? Or is that just my own experience?

                                    1. 10

                                      Well, to begin with, don’t use Google Chrome. And do yourself a better favor and get off all Google products as reasonably possible.

                                      Secondly, for a legal side, this sure seems like AI-automated libel.It would be nice if, say, the EFF could take a shot at them for libel.

                                      1. 2

                                        Firefox also uses Google’s safe browsing to block sites though, and probably so do a lot of other browsers.

                                        1. 2

                                          Wikipedia says that the Google Safe Browsing API is used by Safari, Firefox, Vivaldi, and GNOME Web in addition to Chrome. That doesn’t leave a lot of alternative browsers.

                                          1. 3

                                            I’m not sure, but I believe at least Firefox uses it but is a lot less aggressive with how it deals with different classes of “threats” reported by the GSB API.

                                            Firefox will block things that are clearly malware, but it will not block niche unsigned binaries etc.

                                          2. 1

                                            Libel is definitely a thought that crossed my mind when claiming my site contained “harmful content.” But their lawyers are infinitely more expensive than mine =/

                                          1. 1

                                            I’ve been using an existing piece of software that does the exact same thing for years: https://www.zhornsoftware.co.uk/caffeine/

                                            1. 1

                                              There are many tools that do this indeed. Before, I always used Noise: https://www.dcmembers.com/skrommel/download/noise/

                                            1. 1

                                              Similar to a toy gist I made a few years back: https://gist.github.com/wvdschel/2250827

                                              Thankfully, C++17 has removed them, and you will get compiler errors if you use sane & modern compilation flags. Not sure about C.

                                              1. 1

                                                Bellard is such a prolific developer. Does anyone know if this supports stuff like the Webworkers API for multithreading?

                                                1. 2

                                                  It does not.

                                                1. 21

                                                  Decentralise! Look at what the CCC does with their content here: https://media.ccc.de/

                                                  1. 3

                                                    My first thought was “they can host it elsewhere”, but that doesn’t solve the discoverability. Many of these channels are about getting people to take they’re first steps in the security space. These newcomers won’t know to look on a dedicated community, or even a smaller universal video platform, but they sure watch YouTube.

                                                    YouTube does a decent job of showing thumbnails and titles to people who might be interested, and without that tease, I’m sure the reach of infosec videos would be much, much lower.

                                                  1. 6

                                                    Unclear what problem you’re solving. Firefox shouldn’t write anywhere else than the profile directory (see @jefftk’s comment). If you don’t want it to access your user configs in ~/. config. you can redirect $HOME though. But maybe you also want to chroot then?

                                                    If you want to separate all sorts of history and site data and settings and extensions and password storage etc, use different profiles. If you want separate cookie jars (e.g. online identifies) to work in parallel, use the Multi Account Containers Extension.

                                                    1. 8

                                                      The problem this solves is that some websites are now detecting private mode browsing, and using it as an opportunity to be a dick.

                                                      1. 6

                                                        Ugh, that’s bad. Can you give an example of those?

                                                        1. 10

                                                          Nytimes does private mode detection as part of their paywall.

                                                        2. 4

                                                          How do they detect it, and how are they being a dick? I’ve honestly never noticed anything weird in private browsing mode, but I don’t use it all that often either.

                                                      1. 26

                                                        While spreading yourself overly thin is definitely a bad idea, this article is basically about the generalist vs specialist debate, and goes all-in on the specialist side.

                                                        While there is value in being very knowledgeable in a certain domain or technology, it also makes you less flexible with regards to possible employers or different projects within a single company. I’ve worked with plenty of developers who refuse to learn a new technology stack, because they think they’ll start as beginners again and it will hamper their career growth (more specifically, they fear that they will not grow their income at the same rate they would if they continued working with the same thing).

                                                        However, the technology landscape changes, perhaps not overnight but definitely over the course of an entire career. Sticking to what you’re experienced at may lead to a dead end some years in the future.

                                                        Additionally, I believe that many of the important skills that make a developer more valuable are not related to using specific technologies or tools, but rather in generic skills that are transferable across languages, tools and frameworks.

                                                        Using and learning new technologies might also prevent you from forming tunnel vision. If all you have is classes and inheritance, everything starts looking like it should be an object, for example.

                                                        You probably shouldn’t use a different language for every project, the same way you shouldn’t use a different Javascript framework for every project just because it’s the hot new thing. But I also think you shouldn’t bet the house on a single language and/or framework just because you consider yourself an expert in that niche.

                                                        1. 10

                                                          While spreading yourself overly thin is definitely a bad idea, this article is basically about the generalist vs specialist debate, and goes all-in on the specialist side.

                                                          I don’t agree. I think the article is trying to signpost a danger for new folks coming to our field - that is the temptation to feel like I MUST LEARN ALL THE THINGS! rather than realizing that there is tremendous depth at play here and that while having a broad skillset is good, you MUST be able to go deep on some small subset of things, whether or not you’re a specialist or a generalist.

                                                          I’d also argue that being a generalist can make it damn hard to stay employed, because the entire recruiting machine wants to plug discrete shapes into discretely shaped holes, and if you don’t fit that model you’re gonna have to work 10 times as hard to make it past said machine rather than working with it.

                                                          That’s my experience, anyway.

                                                          1. 3

                                                            Yes, recruiting machines want developers with specific boxes checked on their resume. But I generally find it pretty easy to write a resume for a specific position highlighting the stuff I’ve done they want to hear while only mentioning others in passing.

                                                            There is also a shortage of qualified workers in our field, at least for now, so as soon as you can match a few of the qualities they’re looking for, you can land an interview, and from there it’s easier to convince a hiring manager that you’re a capable worker.

                                                            1. 2

                                                              I think it’s possible we’re talking about two different things here.

                                                              Landing a job is one set of skills - thriving in a job is quite another.

                                                              I’m talking about the latter.

                                                              1. 2

                                                                I’m replying specifically to your remark about recruitement looking for specific profile features to fill certain positions in your parent comment.

                                                            2. 3

                                                              Breadth & depth are not in contradiction, once you get beyond a very beginner level – particularly in terms of the kind of tech that gets used in our industry, since programming language design for ‘general purpose’ languages & best practices for ‘enterprise’ system is extremely intellectually incestuous. If you know two C-like languages, you can read and write fifty more without actually learning them, or learn them as well in an afternoon as a beginner could in two months.

                                                              It’s possible to go deep into a domain that doesn’t have broad applicability, but you have to look hard for such a thing. Extremely deep and seemingly-disconnected subjects like cryptography & type / category theory are having a big impact, and weird and previously-obscure languages like haskell are starting to influence how normies write their java.

                                                              The strangest statement here is where OP says that “even experienced developers don’t know that much”, for a list of technologies that looks like what somebody would put down as the minimum requirements for applying for a junior web dev position. It’s one thing to go all-in on specialist knowledge, but it’s another thing entirely to define the domain so narrowly that everybody with a bachelor’s degree and a vague interest counts as expert.

                                                              Since this article is aimed at junior devs & folks who are still in college, let me be clear: at this stage of development, you lack the background to determine what is and is not likely to be relevant to future tasks and projects, so your job (first and foremost) is to learn everything. Doing ‘professional’ work with the kind of attenuated understanding that comes from only studying things that are obviously applicable to outsiders is the source of many problems, ranging from merely wasteful and stupid to actually dangerous.

                                                              1. 1

                                                                Since this article is aimed at junior devs & folks who are still in college, let me be clear: at this stage of development, you lack the background to determine what is and is not likely to be relevant to future tasks and projects, so your job (first and foremost) is to learn everything. Doing ‘professional’ work with the kind of attenuated understanding that comes from only studying things that are obviously applicable to outsiders is the source of many problems, ranging from merely wasteful and stupid to actually dangerous.

                                                                I don’t disagree, but I also think it’s super important to learn how to learn the necessary skills to accomplish your goals.

                                                                Maybe that’s key - create goals for yourself. Build things. Meaningful things, not just variations of Hello World or examples of the particular pony tricks your new pet language can do well.

                                                                In learning what you need to actually build projects that you can be proud of, you’ll achieve many goals people have stated here - learning the important stuff that’s not language or tech driven, and learning how to learn in a focused way to achieve a particular task / goal, and also getting used to the idea of having projects for yourself that you design, build, test and “ship” for whatever values of “ship” you’re comfortable with - maybe putting them on your github page for example.

                                                                1. 2

                                                                  not just variations of Hello World or examples of the particular pony tricks your new pet language can do well.

                                                                  This is a good point. You don’t learn much by catering to a toolset’s strengths.

                                                                  In college (and, to a lesser extent, as a junior dev – and to a greater extent, before college, if you are lucky enough to get coding that early) you’ve got time to do things the hard way, and there are a lot of lessons that are best learned by doing things the hard way. So, this is the time to intentionally use the wrong tool for the job, be perverse, and jump into projects that are way above your skill level and way outside your comfort zone. The more you do this, the better you’ll become at not being discouraged by technical and social hurdles, & the bigger your comfort zone will become.

                                                                  A pattern I see with colleagues who learned to code in college is that they’re very precious about sticking to their preferred tools & idioms. They did all their exploration in four years, and ever since, they’ve been under pressure to perform, so new tools and techniques are not just alien but represent a (only mostly imaginary) threat to their livelihoods. They become hyper-specialists. They have never learned the lessons that can only be gained from doing the maximally-wrong thing, because they have never been secure enough to be willing to waste their time, and as a result they’re stuck in a lower grade of expertise than they could attain.

                                                                  The case I typically make for being a generalist, which all these things feed back into, is that the utility of knowledge is weighted by rarity, and rarity is affected by expected utility. Utility and expected utility have little to do with each other outside of situations where nothing is being discovered – if you’re a code monkey writing trivial mashups of big existing libraries, insulated from users, it’s possible to do your work for years and never be surprised or need to learn a new concept, but if you’re doing non-trivial work then you will frequently run into problems that you couldn’t have predicted, and those problems will be ones whose best solutions rely upon knowledge that you couldn’t have previously predicted you would have needed. General knowledge (like a background in common data structures and algorithms) is broad enough to solve a lot of problems, but it’s also standardized – everybody with a CS degree has at least vague familiarity with a bunch of sorting algorithms & their time complexity, can implement a linked list or a binary tree, knows that tree rebalancing is a thing and can look up how to do it, has some basic graph theory under their belt & can write a greedy graph traversal algorithm, etc. So, your value as a developer (whether you are somebody’s employee or just writing your own projects) is based around how you’ve deviated from the norm: if you know MUMPS or J or Idris, or you can write a bootloader or a prover or a compiler, or you know category theory or fast fourier transform or fast inverse square root, or you can write professional-quality prose or can translate between russian and korean.

                                                                  It’s a high bar to set, for every programmer to know enough things that nobody else knows as to be sure, statistically, that at least a couple of them will unexpectedly come in handy. But, we don’t need as many professional programmers as we have, and folks who pass this bar are going to be a lot more useful (not in the ‘10x programmer’ sense of straight linear productivity but in the sense that some obvious-but-ultimately-bad plans will never be attempted). Anyway, such folks have more opportunities & are less replacable, so I recommend everybody endevour to become such a person.

                                                                  1. 1

                                                                    The case I typically make for being a generalist, which all these things feed back into, is that the utility of knowledge is weighted by rarity, and rarity is affected by expected utility. Utility and expected utility have little to do with each other outside of situations where nothing is being discovered – if you’re a code monkey writing trivial mashups of big existing libraries, insulated from users, it’s possible to do your work for years and never be surprised or need to learn a new concept

                                                                    This is the danger of over-specialization. You don’t learn how to learn quickly and effectively, and never gain that intellectual suppleness which will allow you to adversity and new situations.

                                                                    It’s a high bar to set, for every programmer to know enough things that nobody else knows as to be sure, statistically, that at least a couple of them will unexpectedly come in handy. But, we don’t need as many professional programmers as we have, and folks who pass this bar are going to be a lot more useful (not in the ‘10x programmer’ sense of straight linear productivity but in the sense that some obvious-but-ultimately-bad plans will never be attempted). Anyway, such folks have more opportunities & are less replacable, so I recommend everybody endevour to become such a person.

                                                                    So there’s how you build your skill set and how you market yourself. These do not necessarily need to correlate closely :)

                                                                    I am definitely in favor of priming ones self to be a generalist, but I also think it’s important to be able to market yourself to at least a particular broad area of our industry.

                                                                    For instance, I tend towards “Devops” work which is a CRAPPY designation for anything involving infrastructure and not generally solving hard computer science problems, but still code-centric.

                                                                    So, yes build a generalist’s skill set, but be prepared to sail your career ship in a particular direction or you may find that there are no winds to propel you.

                                                                    1. 2

                                                                      Sure. Few companies will give roles to junior devs that entail broad responsibilities. I don’t think that means you need to hide those skills. The broader your skillset, the more likely it is that any given narrow specialization will fall within your wheelhouse.

                                                                      That said, I’ve been at the same place since my intership so maybe the market for candidates is allergic to the ‘overqualified’ & I’m just unaware.

                                                              2. 2

                                                                you MUST be able to go deep on some small subset of things, whether or not you’re a specialist or a generalist.

                                                                Where do you find this “MUST”? As far as I can tell, speaking at such a level of generality, the only must is what is needed to do a job, solve a problem, achieve an aim, etc. One needs to be as specialized as the circumstance requires. But I’m struggling to make the leap from that to some categorical imperative of depth, your MUST.

                                                                1. 1

                                                                  And how might one attain the level of depth needed to do a given job if one spends one’s time chasing bright shiny new languages and tools?

                                                                  You’re right, we’re speaking in generalities, and I’m sorry my use of the word MUST seems to have triggered you, but my general point still holds, even if you downgrade the word in question to, say, a lowercase ‘need to’?

                                                                  1. 1

                                                                    Haha, I’m not triggered. I think you’re setting up a false dilemma. If I have a job that requires a superficial understanding of a bunch of tools, then I would not be “thriving” in my job if I was trying to cultivate specialization in a few of those tools. I think the real distinction is between stuff that is necessary to do the job and stuff that isn’t. It’s not between depth and breadth. For example, I was recently talking to a friend who just founded a consulting company. In the past few months, he’s worked with several new languages, none of which he plans to specialize in. Working with those languages is what he needed to do to get the job done. Beyond getting the job done, learning more about those languages has diminishing returns. Specializing in anything is only a good idea if the specialization has utility. I think a better principle is to invest time in things proportional to their utility. That really depends on the context and could result in specialization or generalization.

                                                              3. 2

                                                                many of the important skills that make a developer more valuable are not related to using specific technologies or tools, but rather in generic skills that are transferable across languages, tools and frameworks.

                                                                This ^.

                                                                Or, as they say, “learn weightier shit”.

                                                                1. 1

                                                                  This is something different again - you can’t learn “the weightier shit” unless you choose a language or two and stick there. Humans, even the most intelligent ones, can only learn so many things at once.

                                                                  So, my point stands. Choose a subset of tools and go deep. Go deep means, in addition to mastery of that particular tool or language, that you learn “the weighty shit” :)

                                                                  1. 2

                                                                    Oh no, no, no, it’s the other “weightier” stuff. It’s things that make sense in engineering in general. Like, a function that does one thing and doesn’t affect surroundings in unexpected ways is as good a thing in Java, as it is in Scheme. Or, say, the idea that you need a queue in between producers and consumers. Or various implications of forks vs. threads vs. polling loops. Or understanding why you can’t parse HTML with a regex.

                                                                    Knowledge like this weighs more than knowing how do you sort an array in your current language/framework.

                                                              1. 17

                                                                There’s no reason you have to choose one of them up front. Why not learn both to an elementary level and then choose one to focus on based on that experience?

                                                                And FWIW, Lisp-1/Lisp-2 and macros aren’t worth worrying about as a beginner (IMO). They don’t make much practical difference as long as you know which one you’re using, and each has trade offs.

                                                                I personally use Common Lisp, and think it’s great. It’s very fast, there are a lot of libraries available (and easily installable with Quicklisp), and I like the development environment (Slime and Emacs).

                                                                Another thing I like is that with Quicklisp and Slime it’s very easy to jump to library code, make changes, and reload, and I’ve ended up contributing several small changes to different projects after initially experimenting with bug fixes this way.

                                                                1. 4

                                                                  Why not learn both to an elementary level and then choose one to focus on based on that experience?

                                                                  Do people really have that sort of extra time in their hands? I’m envious.

                                                                  1. 9

                                                                    I would say everyone who hangs on the net forums does, it’s a matter of priorities.

                                                                    1. 1

                                                                      Depends on their pattern of access. If, as a completely made-up example, someone checks on lobste.rs while on conference calls, it’s probably using a lower cognitive load than learning new programming languages.

                                                                    2. 1

                                                                      In my experience (raising two young kids and working), you can do it if you are mentally and physically well and choose to focus on it.

                                                                      1. 1

                                                                        Yes, I should probably work on those latter items you mentioned :)

                                                                      2. 1

                                                                        If you plan to invest in learning a piece of technology, you’re better of spending 4-8 hours each with different options you’re considering, and picking one that suits you best afterwards, rather than investing hundreds or thousands of hours in a single one to come to the conclusion that you chose poorly.

                                                                        I guess it depends on what you plan to do with the language.

                                                                      3. 1

                                                                        I’d imagine because to become productive in a new language, you have to spend some time exclusively with it. One of the worst things you can do from a productivity standpoint is learn two similar languages at once. (Also goes for natural languages – my semester of simultaneous Italian and Spanish was a set-up for failure.)

                                                                        1. 1

                                                                          Yes. Focus it’s important. First one, later another. Context-switching has a high cost for learning; even better if happens too often.

                                                                      1. 1

                                                                        People are going to hate this, but my prompt is multi-line, full width, and colored. It’s a little hard to copy-and-paste because it uses underlined text, so I’ll link a screenshot at the bottom.

                                                                        [wim@WDC-Mansa-Musa ~]                                   [13:10:08]
                                                                        ✔ ls foo
                                                                        foo
                                                                        [wim@WDC-Mansa-Musa ~]                                   [13:10:14]
                                                                        ✔ ls foo2
                                                                        ls: cannot access 'foo2': No such file or directory
                                                                        [wim@WDC-Mansa-Musa ~]                                   [13:10:20]
                                                                        ✕
                                                                        
                                                                        • At the front of the first line, there’s the straightforward [username@hostname current-directory]
                                                                        • At the end there’s a timestamp that can be used to determine when any command in the scrollback buffer finished executing.
                                                                        • The first line is always full-width in the terminal, an serves as an easy visual marker when scrolling through a ton of output if you want to find the beginning of the last command’s output, for example. I know you can pipe through less, but sometimes you get surprised by a large blurb of output, or forget to first redirect stderr to stdout, so it’s nice to have some comfort in your scrollback buffer.
                                                                        • The second line simply contains a green checkmark or a red cross indicating success or failure of the last command. This is the only colored element I’ve got.
                                                                        • Additionally, if a command runs for more than 30 seconds, my PS1 triggers a desktop notification. This is not really part of the visual prompt but it’s triggered through the prompt expansion so I thought I’d mention it. This is super-useful because I used to work on C++ code which takes FOREVER to compile, and whenever I started compiling I’d never sit around staring at the shell to wait for the result. It’s convenient to be notified as soon as the compilation finishes, otherwise I’d most likely only remember to check back after half an hour of working on something else (cough or watching YouTube cough).

                                                                        All of this is contained in my .bashrc (which does almost nothing else), and can be found here if you want to include any of this stuff into your own prompt.

                                                                        While I think a lot of this is personal preference, I can highly recommend the notification bit if you tend to have long-running commands.

                                                                        Screenshot with colors and underlines

                                                                        1. 41

                                                                          It doesn’t encourage growth. A developer working in Go and only Go will help his business’s bottom line, and the shareholders will be happy, but he will always be a mediocre programmer which is why mediocre coders are so fond of Go.

                                                                          Saying that someone, by deciding to use a tool over other, will be forever a mediocre coder, is just wrong at so many levels, this is disgusting.

                                                                          1. 12

                                                                            Exactly. Growth is not just about coming to grips with terrible programming languages, or with brilliant but complicated languages.

                                                                            It comes from learning to work together with others and learning to build complicated, often interconnected, software. This has inherent complexity, both on a technical and human level.

                                                                            You don’t need to use a terrible language to grow in those things.

                                                                            1. 11

                                                                              I’m reminded of the cliche, it’s a poor craftsman that blames his tools.

                                                                              1. 2

                                                                                The Law of the instrument, may be a relevant concept to bring up though, in conjunction with your noted cliche.

                                                                                “I suppose it is tempting, if the only tool you have is a hammer, to treat everything as if it were a nail.”
                                                                                – Abraham Maslow

                                                                                That said, I do more strongly align with your stated cliche. I think we are lucky to have such a wide range of quality tools to pick from these days.

                                                                              1. 7

                                                                                That one seems way more convincing though - every time I listen to it I find myself wanting to lean in because I can’t quite make out what he’s singing about. Catchy, too. Here’s another one that’s pretty convincing.

                                                                                The Markov generated version in the post is interesting, but it sounds choppy and clipped (although, admittedly, that could be due to the synthesized voice)