1. 4
    • Keep looking for jobs, got a few interviews lined up this week. Due to the scarcity of job offers in my core field (GIS, remote sensing, geospatial data), I apply for a lot of adjacent data-oriented position where I feel almost dumb reading some job offers. Some of then could have been generated by a hype tech/stat dictionary putting random words together.
    • Go deeper in my understanding of Spark and Scala.
    • Try to finish to set-up a zola site and finish some drafts to begin to publish a bit.
    • Try to stop ranting for the rest of the week.
    1. 2

      You probably already know this but the list of required qualifications in job descriptions are not hard constraints. While HR filtering can be very inflexible and a hurdle to overcome, but the people who are actually looking to hire you are mostly flexible.

      1. 1

        Yes, I know. It is mostly mental fatigue at this point tbh. When after screening so much job offers looking like shopping lists, your mind will slip and ask itself “What if”.

        Reading the article The art of the cover letter :

        The cover letter is not written with any expectation of readership or audience. It is written with hope and desperation in equal measures. One writes under conditions of duress, anxiety, optimism, nausea, arrogance, and deep insecurity. And in these respects, the address to no one—writing for an imagined and idealized audience—might be the only redeeming quality of the whole endeavor.

        Some job offers seems to also be written without any expectation of readership or audience. A job offer has a one-to-many relationship with the expected audience and would gain to be design as an API with clear point of entrance and valid alternatives coupled with a story-telling for what can’t be conveyed by technical entry points. Like all subjects you may be actively exposed to, you just develop a strong opinion out of thin air, biases and a few data points :).

        I was thinking going back and try to compile job offers where, what I consider good practices, are used at some point.

    1. 4

      This is a great bit of computer forensics and a great article. It’s what I have lobste.rs for.

      That’s it. If you write code that is going to be run by others then make sure that it scales well enough to handle any conceivable data set – reasonable or not. Quadratic algorithms usually fail that test.

      I have a differing opinion. To write everything so that it can handle any size of input is wasteful. This is software engineering after all, not just programming. Rather it is important that a feature must not become unusable once the user goes out of bounds, and there must be a graceful failure.

      1. Design for the most likely use case and
      2. Have a failover when the user goes out of parameters

      In this case, once the number of files gets too large, or it’s taking too long to arrange the icons, fail back to a simpler solution that is not so fancy. For example, paginate: show the first 100 files followed by a clear UI concept that tells the user what is going on.

      1. 3

        I see two possible points of trouble with that approach:

        • judging what is ‘simpler’. In the example you give I think pagination is actually more complex than changing the layout algorithm to a non-quadratic one.
        • even if the alternative is ‘simpler’, it’s still am extra code path that hardly ever gets used and is likely to be ignored during testing, with the result that it is likely to have latent bugs.

        In my experience a single solution always beats (in terms of fewer bugs, fewer maintenance costs, …) two solutions for parts of the domain, especially if the single solution is basically an improved version of one of the two.

        1. 2

          In practice going from a less efficient algorithm to a more efficient one often involves additional complexity and resources. Say caching is needed, or the need to handle more edge cases. Once these additional complexities are built it is often costly to maintain them. It is often better to have a simpler algorithm with another simple failover (e.g. a simple algorithm + pagination) than one complex algorithm that has complex resource and maintenance requirements.

      1. 4

        Never understood the need for “markdown editors”. Isn’t it simple enough to use your everyday text editor?

        1. 4

          Because it’s super useful for someone non-tech.

          Using this app you send .md files to your coworkers. Alternatives are:

          • .txt (no formating);
          • .docx (requires a software using 2GB of RAM and that isn’t version control friendly);
          • LaTeX (requires huge software suite and even wysiwyg are complex enough that you need to get used to them);
          • ???.

          All in all I find it’s a good way to spread the use for markdown.

          1. 2

            That’s what I was doing for 4 years (vim), but live preview and easy copy and paste with the mouse makes writing significantly faster. Copy and paste is more annoying in Vim (because it’s modal and I use the terminal, not gvim), and I realized that the writing process involves extreme amounts of copying between different drafts, from the web, from code examples, etc.

            I’m fastest with vim for code, but not for writing blog posts

            1. 4

              For pulling copy/paste in from other environments, I’ve found the defining :Copy and :Paste commands to interact with the system clipboard to be really helpful. It’s taken me from “Vim is hard to copy/paste” to “I can copy anything up to, and including terminal output”.

              From my .vimrc

              command! Paste :normal "+p
              command! -range Copy :'<,'>y +
              
              1. 1

                With

                set clipboard=unnamed
                

                and xsel being installed you can share the Vim and X clipboards.

                1. 1

                  Thanks! I tried it and it does work. (It’s funny that after using Vim for 15 years I have no idea how any of that works :-/ )

                  Still I think I prefer mouse-based copy-and-paste for blog writing. I have a keyboard-only workflow for code, but writing pulls in content from many different sources, and the revision process is very different.

                  1. 1

                    Totally fair, just thought I’d share something I’d found very useful

              2. 1

                I use VS Code + the built in preview. Has worked excellently for years.

              1. 2

                What advantage is this over something like OpenSCAD

                1. 4

                  I think the author wants to describe models at a higher level of abstraction than OpenSCAD, with easy export to CAD programs. Exporting OpenSCAD to CAD programs is difficult, if you want to preserve the high level structure; it’s not really designed for this.

                1. 7

                  I would have liked to read this, but I didn’t want to make an account. Is this for monetization so that the author can get money? I’m ok with that but do sites really need me to create an account for that? Can’t they just track views?

                  1. 6

                    Whenever I see a page on medium, I just automatically go to archive.is and look for a cached copy.

                    Here’s this one.

                    If there’s no cached copy there, I request one and it takes about two minutes.

                    1. 5

                      Sadly that’s Medium… no idea why people use it, you can always read it with Incognito Mode in your browser.

                      1. 4

                        I’ve just started adding medium.com to my ad blocklist. I do wish there was a way to filter specific sites on lobste.rs like you can filter tags[1].

                        [1]: I realize it wouldn’t work for this url in particular, because the linked site uses several redirects (with cookies) under the hood, as well as cloudflare – e.g. medium “custom domain”. Still would filter out quite a few though.

                        1. 3

                          There’s a Greasemonkey script for blocking domains and stories.

                          1. 1

                            That looks pretty sweet. Thanks! <3

                      1. 3

                        I think this would be fascinating, and I’d be especially curious how much of an improvement it actually is on discovering new or relatively unknown authors.

                        This isn’t built on book texts as far as I know, but to the broader point of finding new authors, I have played around with https://www.literature-map.com/ in the past with decent results, in case you haven’t come across it yet.

                        I think to do what you are suggesting though, you could do it via public domain as the @dvaun suggested (but then you have a lack-of-content problem making it less useful), or get indexing agreements with publishers (which can be difficult).

                        We kind of do this for scientific articles at my current job, and beyond the challenges of getting more indexing agreements to make it useful, there’s a non-trivial infrastructure cost for storing & processing (and potentially re-processing) all of that content.

                        Would be neat if there was someone with a boat load of money willing to fund this! :)

                        1. 3

                          The https://www.literature-map.com/ resource and other Gnod tools have proven useful to me in the past. Though, the mapping of authors (or music, movies, and other Gnod projects) is quite broad in scope.

                          What would be neat to utilize is an engine that would work well in topic exploration within various subjects, including fiction categories (e.g. thrillers, fantasy, historical fiction) as well as fields of research.

                          Having a resource like that on-hand, paired with a community of folk interested in putting together curricula for entering and diving into new domains would be awesome. I’d imagine a resource that had the ability to analyze articles and other sources (e.g. Wikipedia entries) in addition to books, in conjunction with an ability to put together these “curriculums” or “paths” would be great for any auto-didacts exploring a new field.

                          I am out of my field when discussing this, as I don’t have any ML-experience. If there were a project that worked on this, though, I’d be happy to contribute in other ways.

                          Would something like this need to be monetized to be sustainable?

                          1. 2

                            There is the cost of hosting. However, text is cheap. I can see a tool suite that is as follows

                            1. There is a command line tool that, given plain text will spit out a feature vector
                            2. The feature vectors are submitted to a central repository and collected into a file of feature vectors, this could be github
                            3. You can checkout/download the feature vector file, run another command line tool (or a simple GUI or SPA) on it, mark out your favorite books and the tool will propose an ordered list of books you might like based on the content.

                            I really like the idea of trying this out on copyright lapsed books hosted on gutenberg, but surely someone must have done this already.

                        1. 2

                          I’m looking for a site/program that uses the actual text of books to match up your interests directly with books, rather than other peoples opinions of books.

                          How would one go about analyzing text from recently published books and books that haven’t entered the public domain? I can think of a few sources for retrieving digital texts…but those would be illicit and not permissible for use like this—I would think it would apply whether the project was for-profit or not.

                          That being said, it would be neat to use books in the public domain from sites like Project Gutenberg.

                          1. 1

                            I would imagine a tie up between publishing houses and the site. Maintaining the confidentiality of the text via algorithmic or legal means, the aggregator would analyze the full text of the book for the analysis.

                            As a POC the site would use publicly available text.

                            Another way is to have a program that takes the copyright text you have access to and then generates a feature vector. This feature vector can then be uploaded to the site. I don’t know if this legally constitutes a derived work, but from a common sense view I can’t reconstruct the original text from it, so it should be ok and not a copyright violation because it’s not a reproduction.

                          1. 3

                            it frees me from thinking about how to end a loop before I’ve even started writing it.

                            Interesting. Every time I code a function or a loop my first thought is “How am I going to get out?”. For recursive functions, for example, the base cases are the things I think of first.

                            1. -4

                              What is this?

                              1. 4
                                1. 2

                                  Not 100% sure on what the this is referring to, but if it is Gemini, here is more info on that: < https://gemini.circumlunar.space/>

                                  The tl;dr is that Gemini is a relatively young protocol somewhere in between http and gopher for serving text.

                                1. 25

                                  Let’s reframe this: maybe it’s more challenging to be an engineer (or a software manager) in a small company with a small customer base. Where building the wrong feature is a mistake that will cost you a year’s revenue. Where alienating your main client will lead to insolvency. Where you can’t just launch a new product and sunset it two years later.

                                  FAANG’s enormous scale and customer-lock in makes it very inconsequential for them make mistakes. I’m sure that’s very comfortable for the engineers working there. But I wouldn’t make the mistake of confusing the dividend of those companies’ enormous success with the source of it.

                                  1. 5

                                    This is an important point. The motivations of an individual engineer (learning, problem solving, building a CV) may not automatically align with the motivations of a company (sustainable operations). This is not to say that large slathers of management are needed to align the motivations, it’s just that this alignment is needed.

                                    1. 3

                                      I’m not sure size is the key factor here. I worked at Google and now I work at a series B startup (joined at 3, now at 50) and we do a lot more of “makers (engineers, designers, etc.) talking to customers” at the startup than at Google. In fact, one of my biggest complaints about Google was that the game of telephone between the person making something and the person using the thing that was made was so long that it was very difficult as a maker to get meaningful feedback on whether you were building the right thing (because feedback from customers got passed through various PMs, etc. and lost detail at each step).

                                      1. 1

                                        I’ve worked for a company that prided itself on its customer support. And to be fair, their people were really good at talking things over with customers, making them feel appreciated, maybe offer a little discount for the next month. Anything rather than admit there’s a bug and escalate it. I think that strategy worked well for the company, but it made product development rather frustrating.

                                    1. 5

                                      I’ve settled on Markdown documents + pandoc. Yes, even LaTeX turned out to be too fiddly for the pure english + no images writing I do nowadays for which Markdown is perfect.

                                      1. 2

                                        Do you have any formulas or graphs in your prose? Do you use references and footnotes?

                                        If not, then yes, LaTeX is pretty fiddly for simple use.

                                      1. 1

                                        Option 1: Don’t post a screenshot including sensitive information

                                        Option 2: Put black boxes over them and save the image in a format that doesn’t preserve layers. I use png or jpeg. I don’t know if there are formats that preserve the history of individual pixels (accidentally or on purpose) but that is what I do.

                                        1. 1

                                          I use GIMP, select the area with sensitive info, delete it, then fill the empty area with some solid color. No new layers created. I’m not 100% sure the info is ‘lost’ though with this method, but it seems like it is?

                                        1. 1

                                          This reminded me of the place TCL/Tk had for unix tools. Applications would often be written as command line tools, and then there would be a Tk based GUI on top of that.

                                          1. 12

                                            Yes, maybe? Most of the examples come from bioinformatics domain. If I look at remote sensing or GIS where C++ and Python reigns or in Epidemiology/Public Health/Clinical Trials where C++/R/SAS reigns, I am not so sure to see anything in Rust coming for a long time. It depends also of the research affinity, when I was looking at the uses of OCaml in scientific research, I found a researcher working on climate models. It only tells me that it is possible to do it not that it is a new trend or the norm. It is nice to see Rust percolating in scientific environment but that is the only thing that the article shows.

                                            1. 10

                                              I don’t think the article purports to show ‘all scientists everywhere are turning to Rust’. The headline isn’t even misleading. Yes, scientists (not all) are turning to Rust, and the why is explained inside.

                                              1. 6

                                                In science all the coding is done by graduate students and postdocs. It’s a great opportunity to try out the new shiny. No one is going to challenge you technically.

                                                1. 5

                                                  Then the grad student graduates and the new one is stuck trying to learn new_shiny_language that no one in the lab knows while under pressure to keep the research output going while trying to find a bug that is stopping an R&R to be done while working on their own research.

                                                  There is a reason why some scientific code is still written in Fortran. It is too costly to to a rewrite in some more modern program, there are no incentives for a student to spend time rewriting old code because that is not publishable, and the people that have written the code have long left the research lab and no one really knows what is going on in the code.

                                                  1. 2

                                                    Our experiences differ, not on the graduate/Phd/postdocs part but I have been constraint to use specific technologies in certain research projects. During your Phd or postdocs maybe, you may have the freedom to chose your tools but it is not certain. Anecdata and personal bias of course.

                                                    I am happy to see people using Rust in research, and fresh projects like WhiteBoxTools in GIS/Remote Sensing.

                                                  2. -5

                                                    The main motivation for scientists to pick C++ over and over seems to be related to the personality type, based on my observations.

                                                    They all think they are very very smart, so they think they can use C++ correctly¹; they feel the only problem with C++ is the people who are not as smart as them.

                                                    ¹ It turns out that, no, they can’t write C++.

                                                    1. 5

                                                      Ah yes, we use programming languages once again to extrapolate negative personality traits in other humans. If you’re going to make such a sweeping, acerbic judgement, can you at least back it up with some data?

                                                      1. 2

                                                        I’m a physics graduate student and I don’t think this is correct. From what I’ve seen most people don’t use C++, but those that do use it out of necessity (or ignorance, not knowing that Rust exists). I personally don’t have high performance requirements so I mostly use Python, but most labs I have experience with use Python, Matlab, or LabView. I only have experience with one lab that uses C++, and they use it because they need something very fast to process the absolutely enormous amount of data coming from the detectors in their dark matter experiments.

                                                        1. 2

                                                          “Everyone knows 70% of C++. It’s just that no one knows the same 70%.”

                                                          1. 1

                                                            In my neck of the woods (computational linguistics) and what I have seen in related fields, pretty much everyone uses Python and perhaps some R for statistics (plus historically Perl and some Prolog). Only people who are implementing core machine learning algorithms use C++ (which is a tiny < 1% subset).

                                                            I do not see much Rust either. I used Rust in some projects when I was still in academia and so were some of my students (some liked it and I guess some wrote Rust because they were making extensions to my projects), but I haven’t really encountered many other people in the field who use Rust.

                                                        1. 3

                                                          I made this shift 6 years ago now. It has been good. I was a neurophysiologist/electrical engineer in my past life.

                                                          Much of the qualities that make for success in academia also apply to industry. One thing that is important to emphasize in interviews and CVs is your familiarity and adherence to good software engineering practices such as versioning, CI, testing.

                                                          1. 1

                                                            Thanks for the advice, it seemed implied to me. I will put this aspect explicitly in my CV.

                                                            If I may, how was the shift in terms of work environment for you? What to expect to be really different from academia?

                                                            1. 2

                                                              I only have experience with one organization. I was in basic research, and I moved into software development. I used to write software to solve analysis problems. Then I wrote software to help other people solve analysis problems.

                                                              The key difference I think is that you make a tangible product that other people use in their daily lives. You get quick feedback about what doesn’t work. You have a finite time line and you have to throw things out to make things work in the time allotted.

                                                              Depending on the labs you worked in this may or may not be a big change for you.

                                                              1. 1

                                                                Thank you for the feedback. It is similar of one lab where I worked with a lot of projects going on for various entities with feedbacks and deadlines on the products we were delivering.

                                                                Just have to find a job now. Thanks again!

                                                          1. 2

                                                            Holy mother of God.

                                                            1. 26

                                                              One time I took my dog to a new vet. The vet talked to my dog like a patient. He talked to me like a dog. The vet used the words “tum-tum” and “owie” in response to my questions. I was probably 28 at the time.

                                                              1. 26

                                                                I hate people who dogsplain to me.

                                                                1. 1

                                                                  Is this like the voice they use for dogs and babies alike?

                                                              1. 48

                                                                Read the rest of this story with a free account.

                                                                Nah, rather not.

                                                                1. 29

                                                                  It’s irritating that this guy has a self-hosted version of this post, but decided to post (or self-promote) the medium version instead.

                                                                  1. 12

                                                                    I wonder what’s the criteria to get banned for self-promotion … I also submit articles I wrote here sometimes – am I on the danger list for that?

                                                                    1. 35

                                                                      He had zero site use outside of promoting his own posts even after I DMd to ask him to stop. I generally give at least one warning PM unless it’s something really abusive like the LoadMill spam ring.

                                                                      1. 6

                                                                        @pushcx I’m just wondering if the ban was a tad strict?

                                                                        I looked at their profile and while it’s all true (person only posts own articles, links only to medium though they have their own website versions) they do seem to have a high lobste.rs score (8.27) indicating some popularity here for their content (unless you tell me there has been some gaming of the score, in which case, what is wrong with people?)

                                                                        I don’t know how medium works, but I guess there may be some financial reason for the author to drive traffic there? It is a gray area, but the posts all seem to have technical merit and generate useful discussion?

                                                                        Anyhow, just wondering.

                                                                        1. 6

                                                                          I think it’s always the case that if you post more links than comments, that your score rises, since more people vote on posts than comments.

                                                                          1. 1

                                                                            Perhaps Karma garnered from posts should be balanced by the number of comments, or maybe comparing the ratio of people who click through (obviously this requires obnoxious tracking :( ) to those who upvote.

                                                                          2. 4

                                                                            I agree that his posts have generally been pretty good. The part you can’t see is that I sent him a note in June asking him to quit treating the site so exploitatively, and to take a break entirely from posting links to his site. (At this point a pretty formulaic note at this point.) He did not respond and continued.

                                                                            It’s a deliberate strategy of this author to post Medium links. Medium has a Partner Program incentivizing exactly this behavior: clicks = dollars. Another Medium-hosted spammer I’ve banned posted entreporn to YC News today to make money on the (sanitized) story of how he made money spamming links.

                                                                            1. 1

                                                                              @pushcx, thank you for taking the time to explain. I can see the long term danger of this behavior.

                                                                              1. 2

                                                                                Thanks for pointing out when I might be making a mistake. I’ve certainly made them before, and I’m glad to have the questioning and feedback.

                                                                          3. 3

                                                                            Ah ok, thanks!

                                                                        2. 6

                                                                          On the plus side, I can read the medium version without having to enable javascript…

                                                                          1. 4

                                                                            Ah, he’s been banned.

                                                                            1. 1

                                                                              It’s Time To Say Goodbye to MartinHeinz

                                                                            2. 1

                                                                              you mean this black page with “We’re sorry but frontend doesn’t work properly without JavaScript enabled. Please enable it to continue.” ? Sorry but I had to say this..

                                                                          1. 2

                                                                            I think a more positive discourse would be around how could the intention “Encourage more people to contribute to open source projects” be executed.

                                                                            As we can see gamification, with a T-shirt from an individual company, starts out with (yes, I will ascribe intentions here) an intent by a marketing department to increase SEO. Digital Ocean gets publicity either way. So, they are not incentivized to improve the strategy.

                                                                            Random individuals are being incentivized with a T-shirt. This too, I would say, is an impure incentive.

                                                                            Like all fairly complex social issues it requires a more deeply thought fix that requires attention, patience and perseverance all round. Not a marketing department gimmick.

                                                                            Here’s a suggestion:

                                                                            Have a month, call it Helptoberfest.

                                                                            1. Whoever sponsors this, puts out a webpage asking open source projects to join their advertising campaign socially conscious reawakening. In the instructions are clear parameters for eligibility. Perhaps fresh graduates, perhaps non-programming graduates, perhaps journalism majors, political science majors. Folks who normally don’t go around making PRs.

                                                                            2. Opensource projects join up and put out calls for help with issues: need a bug fix here and there, need help with docs here and there, marking them out for Helptoberfest.

                                                                            3. People make PRs. If the Project is happy with the PR they accept it (because it aligns with their incentives) and they write a recommendation for the PR maker. Why would they do this? Because …

                                                                            4. Then the sponsor, who is spending a lot less money now, because they aren’t giving out 100,000 T-shirts, gives the PR maker actual money for the PR and will offer them more to work short term on the project if they are in some short list of finalists, say 10.

                                                                            I’m just saying, don’t gamify this to the lowest denominator just because that’s what marketing is also gamified to do.

                                                                            1. 47

                                                                              A lot of programming is ritual. I know what I need to get done, I just need to get the magic incantation to get it done in language X or in framework Y or with tool Z. There is often not much thinking involved. I’m not looking at stack overflow for “how to do breadth first search”. I’m looking on stack overflow for “squash commits” because I don’t do it often enough that I’ve memorized the particular incantation I need to do it with the versioning system I’m currently using. Or, to paraphrase Holmes, I use stack overflow because I have more important things to put in my memory.

                                                                              1. 3

                                                                                I know what I need to get done, I just need to get the magic incantation to get it done in language X or in framework Y or with tool Z. There is often not much thinking involved.

                                                                                I think it depends. Each language, framework or tool has its own flavour, its own way of doing things. If you regularly use a language/framework/tool, you should understand clearly how a certain thing can be done with it and why it is done the way it is. The solution should not be a magic incantation, as you call it. On the other hand, if you use that language/framework/tool sparingly, it is perfectly acceptable to do something with it and treat it as a magic incantation.

                                                                                Other than that, I completely agree with everything else.

                                                                                1. 16

                                                                                  If you regularly use a language/framework/tool, you should understand clearly how a certain thing can be done with it and why it is done the way it is.

                                                                                  I am a long-time contributor to Django. I’ve written both code and documentation for it. I’ve served on the framework’s technical board. I’ve written articles on it and books on it. I’ve given advanced seminars on it that peek under the hood into how it works at a deep level.

                                                                                  I still routinely have the Django documentation open in a tab when I’m doing something that involves Django.

                                                                                  1. 1

                                                                                    Of course, you don’t remember everything, and that’s human. But I bet you understand what you search and find in the documentation, and that’s what I was saying in my comment.

                                                                                  2. 11

                                                                                    I don’t know; I’ve been programming Go daily for almost five years, and sometimes I almost know how to do something, but either 1) can’t remember something simple, like the specific package a function is in, or 2) just can’t be arsed to do it myself and it’s easier to copy/paste some lines of code from the first search result.

                                                                                    So, for example, I could write a simple function which, say, returns a random element from an array; it’s just a matter of looking at the documentation and finding the best function. Or … I can just look it up (and possibly choose the best option out of several). It saves me the time and brainpower about thinking about all of this, since there’s probably a few ways to do it wrong too I have a higher chance to get it right (not that SO is always correct either, of course, but at least it has some feedback).

                                                                                    With Python or Ruby this is even more helpful, as they have a larger standard library and many more useful helper functions for stuff like this. It’s hard to remember them all.

                                                                                    It’s a “magic incantation” not because I don’t understand it or because it’s “magic”, but because what I’m really focused on is not choosing random elements from an array, but solving some real-world problem. The “magic incantation” is just plumbing to get that job done and I’d like to spend as little time on that as reasonable, so I can actually solve useful problems.

                                                                                    1. 4

                                                                                      I agree, what you described doesn’t fall into the Stack Overflow Antipattern. During the process you understand what you’re doing, you’re just delegating some small tasks to other minds (users who had posted answers on SO, for example) in order to solve the problem you’re tackling faster.

                                                                                      Maybe I wasn’t 100% clear in the comment I made above (and in the post in general), however I was not arguing that programmers should remember everything they need and shouldn’t seek information online. What I was saying is that they should understand what they’re doing (at different degrees, it depends on a lot of different things: e.g. time available or, as you said, how much a problem is tied to the real problem I’m working onto) and not use online resources mindlessly. It is important to understand when searching is a good choice, and when it’s not. If you do that, then you’re using SO (and online resource in general) in the right way.