1. 5

    I’m continuing work on NewBusinessMonitor.

    I didn’t manage to roll out the letter-sending feature. Basically my users want to click on companies they want to advertise to, and for NewBusinessMonitor to automatically print, envelope, and send their sales letters to those companies. I’m still working on this, and hopefully it’ll be ready for everyone this week.

    Tech: Haskell, Elm, PostgreSQL, Redis, NixOps/AWS.

    1. 1

      What API are you calling to send letters automatically?

      1. 1

        Not GP, but I’ve used Lob in trivial cases twice before. And by “twice” I mean I literally sent two letters. Seemed fine.

    1. 2

      We need a manifesto website for complex tools that give us more power. The ideology of simple-is-better has so taken over how a common person thinks about technology that it’ll be an uphill fight to re-introduce this idea. I blame Apple for popularizing this idea.

      1. 2

        Maybe this ideology of simple-is-better is what has hollowed out technology to be more about content consumption and vanity rather than content creation.

        1. 5

          Or maybe it’s the other way around: “simple” and “easy” UI’s have succeeded commercially because they reach a giant pre-existing market segment of vain consumers who simply have no interest in creating anything.

      1. 4

        There is a computer program called Vim, based on software created in the 1970s. It is famously difficult.

        I stopped there.

        1. 7

          People over estimate how hard it is to learn Vim. You need about 10 commands to get most of your work done. Everything else is extra. There could be a much better intro screen so newbies aren’t intimidated. I know there is an extensive tutorial, but there needs to be a baby-step ladder that bridges the gap between not knowing anything to that tutorial. Even a sidebar cheatsheet would be better than the almost-blank screen we see now.

          The harder part of getting into Vim is getting around how certain basic operations are much harder than in, say, Notepad. I’m thinking of yanking to the system clipboard, search and replace (the %s syntax is arcane), and searching for selected text. Tabs and windows are way easier to use on a GUI compared to on Vim, just because the switching commands are so annoying.

          1. 4

            Why? Those are both true statements that don’t mischaracterize vim and are useful to introduce it to a general audience.

            1. 3

              I don’t agree with the second statement.

              And I realized the article was intended for a general audience, so I stopped reading it.

              Maybe I shouldn’t have commented that I had, though.

              Edit clarified syntax.

              1. 2

                I think vim is only hard compared to tools that works exactly like all other tools we already know do, thus we have already learned it, and it seems easy.

                Coming from Notepad++, Gedit seems easy, coming from Visual Studio, jetbrains seems easy. Coming from nowhere similar to vim, it’s all new and different. It’s not harder than something else you have to learn from a clean slate though. It’s just that it’s not often we have to learn from a clean slate, so it seems relatively harder, compared to coming from sublime text to visual studio code.

                1. 1

                  Err, vi was created in the 1970s, Vim was written in the 1990’s.

              1. 0

                This might be another case of our intuitive aesthetic preferences being given weight over practicalities. Static typing is another example. As I recall, the few studies that exist show that static typing has negligible productivity impact.

                1. 1

                  It talks about magnet links present in the dump, some of which happens to be active. Can a magnet link tell what you are downloading or the file(s) it points to without downloading it?

                  1. 5

                    You can fetch the metadata from peers in the swarm without having to actually download the files, but as far as I know you can’t get the filename without downloading the metadata. Some magnet links encode the filename along with it though.

                    1. 3

                      Yes, magnet links may optionally include a “dn” parameter for the display name.

                      https://en.wikipedia.org/wiki/Magnet_URI_scheme#Parameters

                  1. 7

                    I think Go and Rust did a lot of work towards helping people think about construction, by not having it!

                    Both allow you to instantiate a struct by it’s fields. If you want to do something more complicated, you write a function, with a normal signature.

                    1. 2

                      And this is what you end up doing even in C++ if you an initialization routine that can fail: a static function that constructs an object or fails. You mark the constructor as private so it can only be created with these static functions.

                      The problem with this approach is that it leaves inexperienced programmers with another gun to shoot themselves with. If they neglect to handle failure cases in the constructor, the object can get into a state that was not reasoned about.

                      Best to keep it simple by having only one way to create objects, like in Go and Rust.

                      1. 1

                        I think this situation would be avoided in C++ if it allowed either an initializer list, or a constructor body, but not both. As a rule of thumb, if I already have an initializer list, and I need to do something in the body of my constructor, I do my best to factor that into a separate class.

                    1. 2

                      There’s also the closely-related “a11y” for “accessibility. It’s neat that “a11y” looks like “ally”. You’re an ally if you write software for people with different needs!

                      1. 6

                        This sort of smallholder, yeaoman-farmer artisanal website is just like organic food. It’s cheap to buy industrially-produced food. It promotes large food companies and reduces prices for consumers, but has incredible negative externalities - concentration of power, tasteless food, bad health, low nutrition. It’s cheap to start a Facebook page, a Medium site, a Wordpress site, or a Twitter account. Easy for the user, easy access to others on the same platform, immense profits for the ones that control the platforms. The market has eaten away at the commons that could have been the internet, just like it has turned millions of acres into corn fields for feeding chickens in factory farms. We should start thinking of cyberspace as space, space that has been exploited and colonized just like real land has been.

                        I admire those pushing for a simpler, healthier web. But unless we change our economic system, nothing major will change.

                        1. 2

                          It’s not at all difficult to create a website like this. Far easier, in fact, than making a Wordpress site or Medium site. Why do people not? Partially I think it’s that people expect it to be very difficult, so they don’t try. But I think it’s mostly because there’s no advertisement and promotion of it! Nobody makes money from you putting a few static pages on github pages or a similar completely free host.

                          People encounter Facebook pages and Wordpress blogs every day, so that’s the first thing they think of when they need to make some sort of website.

                          1. 1

                            Oh come on! I don’t think it’s easy to learn HTML/CSS, find a hosting provider, upload your files, configure the web server, buy a domain, set up domain records.

                            But I do agree with you that this process is much harder than it needs to be and it’s not easy to discover. And there’s not a reason why some money can’t be made in this process - so making it sustainable. Create a site that hooks up to a bunch of registrars and a bunch of hosts. Push-button deployment. Charge an extra few dollars on top. The value-add is centralized billing, less hassle, support.

                            1. 2

                              I don’t think it’s easy to learn HTML/CSS

                              I learnt basic HTML when I was about 7. Here’s some HTML: <html><head><title>My personal website</title></head><body><h1>My Website</h1><p>Hi this is my website hope you like it.</p></body></html>. That’s all you need to make a ‘personal website’.

                              But I do agree with you that this process is much harder than it needs to be and it’s not easy to discover. And there’s not a reason why some money can’t be made in this process - so making it sustainable. Create a site that hooks up to a bunch of registrars and a bunch of hosts. Push-button deployment. Charge an extra few dollars on top. The value-add is centralized billing, less hassle, support.

                              The thing is, there’s no real reason why you should have to pay for very basic web hosting. Facebook pages and Youtube profiles and reddit profiles and such cost way more to provide than basic web hosting, but they’re free and basic web hosting is dollars every month. Any cost at all is a big barrier to entry.

                              1. 2

                                Yes, basic HTML is not too hard. Perhaps it would be good to have local libraries providing easy/free hosting. It really can’t cost much to throw up a Geocities-esque webpage on the Internet.

                        1. 28

                          That is a very reductionist view of what people use the web for. And I am saying this as someone who’s personal site pretty much matches everything prescribed except comments (which I still have).

                          Btw, Medium, given as a positive example, is not in any way minimal and certainly not by metrics given in this article.

                          1. 19

                            Btw, Medium, given as a positive example, is not in any way minimal and certainly not by metrics given in this article.

                            Chickenshit minimalism: https://medium.com/@mceglowski/chickenshit-minimalism-846fc1412524

                            1. 13

                              I wouldn’t say medium even gives the illusion of simplicity (For example, on the page you linked, try counting the visual elements that aren’t blog post). Medium seems to take a rather contrary approach to blogs, including all the random cruft you never even imagined existed, while leaving out the simple essentials like RSS feeds. I honestly have no idea how the author of the article came to suggest medium as an example of minimalism.

                              1. 8

                                Medium started with an illusion of simplicity and gradually got more and more complex.

                                1. 3

                                  I agree with your overall point, but Medium does provide RSS feeds. They are linked in the <head> and always have the same URL structure. Any medium.com/@user has an RSS feed at medium.com/feed/@user. For Medium blogs hosted at custom URLs, the feed is available at /feed.

                                  I’m not affiliated with Medium. I have a lot of experience bugging webmasters of minimal websites to add feeds: https://github.com/issues?q=is:issue+author:tfausak+feed.

                              2. 3

                                That is a very reductionist view of what people use the web for.

                                I wonder what Youtube, Google docs, Slack, and stuff would be in a minimal web.

                                1. 19

                                  Useful.

                                  algernon hides

                                  1. 5

                                    YouTube, while not as good as it could be, is pretty minimalist if you disable all the advertising.

                                    I find google apps to be amazingly minimal, especially compared to Microsoft Office and LibreOffice.

                                    Minimalist Slack has been around for decades, it’s called IRC.

                                    1. 2

                                      It is still super slow then! At some point I was able to disable JS, install the Firefox “html5-video-everywhere” extension and watch videos that way. That was awesome fast and minimal. Tried it again a few days ago, but didn’t seem to work anymore.

                                      Edit: now I just “youtube-dl -f43 ” directly without going to YouTube and start watching immediately with VLC.

                                      1. 2

                                        The youtube interface might look minimalist, but under the hood, it is everything but. Besides, I shouldn’t have to go to great lengths to disable all the useless stuff on it. It shouldn’t be the consumer’s job to strip away all the crap.

                                      2. 2

                                        That seems to be of extreme bad faith though.

                                        1. 11

                                          In a minimal web, locally-running applications in browser sandboxes would be locally-running applications in non-browser sandboxes. There’s no particular reason any of these applications is in a browser at all, other than myopia.

                                          1. 2

                                            Distribution is dead-easy for websites. In theory, you have have non-browser-sandboxed apps with such easy distribution, but then what’s the point.

                                            1. 3

                                              Non-web-based locally-running client applications are also usually made downloadable via HTTP these days.

                                              The point is that when an application is made with the appropriate tools for the job it’s doing, there’s less of a cognitive load on developers and less of a resource load on users. When you use a UI toolkit instead of creating a self-modifying rich text document, you have a lighter-weight, more reliable, more maintainable application.

                                              1. 3

                                                The power of “here’s a URL, you now have an app running without going through installation or whatnot” cannot be understated. I can give someone a copy of pseudo-Excel to edit a document we’re working together on, all through the magic of Google Sheet’s share links. Instantly

                                                Granted, this is less of an advantage if you’re using something all the time, but without the web it would be harder to allow for multiple tools to co-exist in the same space. And am I supposed to have people download the Doodle application just to figure out when our group of 15 can go bowling?

                                                1. 4

                                                  They are, in fact, downloading an application and running it locally.

                                                  That application can still be javascript; I just don’t see the point in making it perform DOM manipulation.

                                                  1. 3

                                                    As one who knows JavaScript pretty well, I don’t see the point of writing it in JavaScript, however.

                                                    1. 1

                                                      A lot of newer devs have a (probably unfounded) fear of picking up a new language, and a lot of those devs have only been trained in a handful (including JS). Even if moving away from JS isn’t actually a big deal, JS (as distinct from the browser ecosystem, to which it isn’t really totally tied) is not fundamentally that much worse than any other scripting language – you can do whatever you do in JS in python or lua or perl or ruby and it’ll come out looking almost the same unless you go out of your way to use particular facilities.

                                                      The thing that makes JS code look weird is all the markup manipulation, which looks strange in any language.

                                                      1. 3

                                                        JS (as distinct from the browser ecosystem, to which it isn’t really totally tied) is not fundamentally that much worse than any other scripting language

                                                        (a == b) !== (a === b)

                                                        but only some times…

                                                        1. 3

                                                          Javascript has gotchas, just like any other organic scripting languages. It’s less consistent than python and lua but probably has fewer of these than perl or php.

                                                          (And, just take a look at c++ if you want a faceful of gotchas & inconsistencies!)

                                                          Not to say that, from a language design perspective, we shouldn’t prize consistency. Just to say that javascript is well within the normal range of goofiness for popular languages, and probably above average if you weigh by popularity and include C, C++, FORTRAN, and COBOL (all of which see a lot of underreported development).

                                                  2. 1

                                                    Web applications are expected to load progressively. And that because they are sandboxed, they are allowed to start instantly without asking you for permissions.

                                                    The same could be true of sandboxed desktop applications that you could stream from a website straight into some sort of sandboxed local VM that isn’t the web. Click a link, and the application immediately starts running on your desktop.

                                                  3. 1

                                                    I can’t argue with using the right tool for the job. People use Electron because there isn’t a flexible, good-looking, easy-to-use cross-platform UI kit. Damn the 500 mb of RAM usage for a chat app.

                                                    1. 4

                                                      There are several good-looking flexible easy to use cross-platform UI kits. GTK, WX, and QT come to mind.

                                                      If you remove the ‘good-looking’ constraint, then you also get TK, which is substantially easier to use for certain problem sets, substantially smaller, and substantially more cross-platform (in that it will run on fringe or legacy platforms that are no longer or were never supported by GTK or QT).

                                                      All of these have well-maintained bindings to all popular scripting languages.

                                                      1. 1

                                                        QT apps can look reasonably good. I think webapps can look better, but I haven’t done extensive QT customization.

                                                        The bigger issue is 1) hiring - easier to get JS devs than QT devs 2) there’s little financial incentive to reduce memory usage. Using other people’s RAM is “free” for a company, so they do it. If their customers are in US/EU/Japan, they can expect reasonably new machines so they don’t see it as an issue. They aren’t chasing the market in Nigeria, however large in population.

                                                        1. 5

                                                          Webapps are sort of the equivalent of doing something in QT but using nothing but the canvas widget (except a little more awkward because you also don’t have pixel positioning). Whatever can be done in a webapp can be done in a UI toolkit, but the most extreme experimental stuff involves not using actual widgets (just like doing it as a webapp would).

                                                          Using QT doesn’t prevent you from writing in javascript. Just use NPM QT bindings. It means not using the DOM, but that’s a net win: it is faster to learn how to do something with a UI toolkit than to figure out how to do it through DOM manipulation, unless the thing that you’re doing is (at a fundamental level) literally displaying HTML.

                                                          I don’t think memory use is really going to be the main factor in convincing corporations to leave Electron. It’s not something that’s limited to the third world: most people in the first world (even folks who are in the top half of income) don’t have computers that can run Electron apps very well – but for a lot of folks, there’s the sense that computers just run slow & there’s nothing that can be done about it.

                                                          Instead, I think the main thing that’ll drive corporations toward more sustainable solutions is maintenance costs. It’s one thing to hire cheap web developers & have them build something, but over time keeping a hairball running is simply more difficult than keeping something that’s more modular running – particularly as the behavior of browsers with respect to the corner cases that web apps depend upon to continue acting like apps is prone to sudden (and difficult to model) change. Building on the back of HTML rendering means a red queen’s race against 3 major browsers, all of whom are changing their behaviors ahead of standards bodies; on the other hand, building on a UI library means you can specify a particular version as a dependency & also expect reasonable backwards-compatibility and gradual deprecation.

                                                          (But, I don’t actually have a lot of confidence that corporations will be convinced to do the thing that, in the long run, will save them money. They need to be seen to have saved money in the much shorter term, & saying that you need to rearchitect something so that it costs less in maintenance over the course of the next six years isn’t very convincing to non-technical folks – or to technical folks who haven’t had the experience of trying to change the behavior of a hairball written and designed by somebody who left the company years ago.)

                                                        2. 1

                                                          I understand that these tools are maintained in a certain sense. But from an outsider’s perspective, they are absolutely not appealing compared to what you see in their competitors.

                                                          I want to be extremely nice, because I think that the work done on these teams and projects is very laudable. But compare the wxPython docs with the Bootstrap documentation. I also spent a lot of time trying to figure out how to use Tk, and almost all resources …. felt outdated and incompatible with whatever toolset I had available.

                                                          I think Qt is really good at this stuff, though you do have to marry its toolset for a lot of it (perhaps this has gotten better).

                                                          The elephant in the room is that no native UI toolset (save maybe Apple’s stack?) is nowhere near as good as the diversity of options and breadth of tooling available in DOM-based solutions. Chrome dev tools is amazing, and even simple stuff like CSS animations gives a lot of options that would be a pain in most UI toolkits. Out of the box it has so much functionality, even if you’re working purely vanilla/“no library”. Though on this points things might have changed, jQuery basically is the optimal low-level UI library and I haven’t encountered native stuff that gives me the same sort of productivity.

                                                          1. 3

                                                            I dunno. How much of that is just familiarity? I find the bootstrap documentation so incomprehensible that I roll my own DOM manipulations rather than using it.

                                                            TK is easy to use, but the documentation is tcl-centric and pretty unclear. QT is a bad example because it’s quite heavy-weight and slow (and you generally have to use QT’s versions of built-in types and do all sorts of similar stuff). I’m not trying to claim that existing cross-platform UI toolkits are great: I actually have a lot of complaints with all of them; it’s just that, in terms of ease of use, peformance, and consistency of behavior, they’re all far ahead of web tech.

                                                            When it comes down to it, web tech means simulating a UI toolkit inside a complicated document rendering system inside a UI toolkit, with no pass-throughs, and even web tech toolkits intended for making UIs are really about manipulating markup and not actually oriented around placing widgets or orienting shapes in 2d space. Because determining how a piece of markup will look when rendered is complex and subject to a lot of variables not under the programmer’s control, any markup-manipulation-oriented system will make creating UIs intractably awkward and fragile – and while Google & others have thrown a great deal of code and effort at this problem (by exhaustively checking for corner cases, performing polyfills, and so on) and hidden most of that code from developers (who would have had to do all of that themselves ten years ago), it’s a battle that can’t be won.

                                                            1. 5

                                                              It annoys me greatly because it feels like nobody really cares about the conceptual damage incurred by simulating a UI toolkit inside a doument renderer inside a UI toolkit, instead preferring to chant “open web!” And then this broken conceptual basis propagates to other mediums (VR) simply because it’s familiar. I’d also argue the web as a medium is primarily intended for commerce and consumption, rather than creation.

                                                              It feels like people care less about the intrinsic quality of what they’re doing and more about following whatever fad is around, especially if it involves tools pushed by megacorporations.

                                                              1. 2

                                                                Everything (down to the transistor level) is layers of crap hiding other layers of different crap, but web tech is up there with autotools in terms of having abstraction layers that are full of important holes that developers must be mindful of – to the point that, in my mind, rolling your own thing is almost always less work than learning and using the ‘correct’ tool.

                                                                If consumer-grade CPUs were still doubling their clock speeds and cache sizes every 18 months at a stable price point and these toolkits properly hid the markup then it’d be a matter of whether or not you consider waste to be wrong on principle or if you’re balancing it with other domains, but neither of those things are true & so choosing web tech means you lose across the board in the short term and lose big across the board in the long term.

                                            2. 1

                                              Youtube would be a website where you click on a video and it plays. But it wouldn’t have ads and comments and thumbs up and share buttons and view counts and subscription buttons and notification buttons and autoplay and add-to-playlist.

                                              Google docs would be a desktop program.

                                              Slack would be IRC.

                                              1. 1

                                                What you’re describing is the video HTML5 tag, not a video sharing platform. Minimalism is good, I do agree, but don’t mix it with no features at all.

                                                Google docs would be a desktop program.

                                                This is another debate around why using the web for these kind of tasks, not the fact that it’s minimalist or not.

                                          1. 1

                                            Related: How Hard Is It to Draw a Brand Logo From Memory? Much, Much Harder Than You Thought

                                            People have a lot of trouble even with Apple and Starbucks logos.

                                            Also, imagine the hell it must be to be an icon designer for a graphical language like LabView.

                                            Code is so abstract. Hard to turn it into graphics.

                                              1. 1

                                                Is Timeless Way your first Christopher Alexander book? How are you liking it?

                                                1. 2

                                                  I read Notes on the Synthesis of Form before, which I loved the first half, the second half sounded like a formalization of the first and wasn’t that interesting.

                                                  Regarding “The Timeless Way” I like it, I haven’t read “A Pattern Language” yet, but I have the impression this one is better since it explains the concept of patterns and some examples without going to the formalization that “A Pattern Language” seems to go, which was the part I didn’t like about “Notes on the Synthesis of Form” :)

                                                  1. 2

                                                    I enjoy the conceptual stuff too, although I’ve been reading Alexander’s later books and not the early ones. Pattern Language is interesting, but it’s mostly a collection of ~200 specific patterns for physical buildings.

                                                    I once read an book review that described The Timeless Way of Building as “underbaked,” A Pattern Language as “just right,” and The Nature of Order as “overbaked.” I’m inclined to agree, but overbaked is how I like it! Design patterns are already abstractions, but in TNOO Alexander really digs in and tries to determine what makes a good pattern. Here’s a thread from a couple years ago.

                                                    1. 2

                                                      A Pattern Language gives you examples of patterns from the level of countries all the way down to rooms in your house. It’s filled with fascinating, humanistic reasons for each pattern. Some of my favorites:

                                                      1. Have little hiding spaces in your house because kids like to hide in things.
                                                      2. As a teen gets older, give them a space of their own, perhaps a room they can go into without coming through the rest of the house. That approach develops independence with age.
                                                      3. There’s a really beautiful passage about building a marital bed and how it symbolizes coming together for the long future.
                                                      4. It’s better to build cities where cars move slowly until they get to a fast highway. Not every little road needs to be super fast or wide. You actually end up losing little time in this situation, but you gain quieter and nicer spaces.
                                                      5. Mixed residential and commercial development is the way to go. Downtowns are death because they are unused for half the day.

                                                      etc etc. I recommend getting it and reading a bit at a time, like a work of poetry.

                                                      1. 7

                                                        Alexander wrote the following in his preface to Richard P. Gabriel’s book Patterns of Software:

                                                        In my life as an architect, I find that the single thing which inhibits young professionals, new students most severely, is their acceptance of standards that are too low. If I ask a student whether her design is as good as Chartres, she often smiles tolerantly at me as if to say, “Of course not, that isn’t what I am trying to do. . . . I could never do that.”

                                                        Then, I express my disagreement, and tell her: “That standard must be our standard. If you are going to be a builder, no other standard is worthwhile. That is what I expect of myself in my own buildings, and it is what I expect of my students.” Gradually, I show the students that they have a right to ask this of themselves, and must ask this of themselves. Once that level of standard is in their minds, they will be able to figure out, for themselves, how to do better, how to make something that is as profound as that.

                                                        Two things emanate from this changed standard. First, the work becomes more fun. It is deeper, it never gets tiresome or boring, because one can never really attain this standard. One’s work becomes a lifelong work, and one keeps trying and trying. So it becomes very fulfilling, to live in the light of a goal like this. But secondly, it does change what people are trying to do. It takes away from them the everyday, lower-level aspiration that is purely technical in nature, (and which we have come to accept) and replaces it with something deep, which will make a real difference to all of us that inhabit the earth.

                                                        I would like, in the spirit of Richard Gabriel’s searching questions, to ask the same of the software people who read this book. But at once I run into a problem. For a programmer, what is a comparable goal? What is the Chartres of programming? What task is at a high enough level to inspire people writing programs, to reach for the stars? Can you write a computer program on the same level as Fermat’s last theorem? Can you write a program which has the enabling power of Dr. Johnson’s dictionary? Can you write a program which has the productive power of Watt’s steam engine? Can you write a program which overcomes the gulf between the technical culture of our civilization, and which inserts itself into our human life as deeply as Eliot’s poems of the wasteland or Virginia Woolf’s “The Waves”?

                                                        1. 3

                                                          This passage is really beautiful and encouraging, thank you!

                                                      2. 1

                                                        Sounds like I will skip A Pattern Language and go with The Nature of Order then :)

                                                        Thanks!

                                                1. 3

                                                  Blow-up by Julio Cortazar - a magical realist/surrealist Argentine short story collection. The title story “Blow-up” beautifully captures what it means to take a photo, from preparation, the spontaneity, your intrusion in the scene, the ethics of taking photos of other people, how we see photos after we take them, how they have a life of their own.

                                                  1. 2

                                                    Hopefully going on a long bike ride to train for a bike race, meeting someone in my apartment complex for lunch, maybe read some stories by Julio Cortazar, also a good-looking movie.

                                                    1. 5

                                                      The amount of pearl-clutching in this Twitter thread is barely short of astounding. People have some quaint assumptions about how software services collect and use usage data that originates inside the platform. What service wouldn’t want to measure how people use it? What company Spotify’s size got there without measuring things?

                                                      1. 6

                                                        Spotify’s discovery weekly playlist, trending charts, song/album-based radio, daily genre-based playlists, “popular in this location” charts, artist suggestions, playlist auto-extend - all of these would not be possible without data collection. And these are actually things I use and help me find music from around the world I wouldn’t otherwise. The main thing is that there be enforcement inside Spotify that none of the employees are peeking at the data of a particular user. We need regular inspections and certifications for this sort of a thing. I’m fine with anonymized data analysis. (And de-anonymization falls under “not being able to access the data of a particular user”.)

                                                        1. 4

                                                          You must be a creator! Please don’t disdain the consumers’ responses. Just… observe. This is important.

                                                          To my eye, a good outcome of these GDPR Data Extracts will be that consumers/users demand control of their devices!

                                                          I’ve been trying to tell people for years what it means, what actually happens, when they use ‘free’ services every waking moment. They use them casually, and excitedly, and while in mourning, and on that day they fell in love.

                                                          Spotify knows when you’re drunk. (Well, they might, if they figured out how to extract that.)

                                                          Google knows when you’re aroused (Well, they might, if they figured out how to extract that)–and if you use their communication services, or Android, they might even put two and two together and figure out if you have a crush on any specific person in your contacts list…

                                                          Don’t get me started on politics!

                                                          I remember, about exactly twenty years ago, I got in the habit of running tcpdump constantly, and through that I identified which programs would talk on the network. In those days, my system didn’t generate a constant stream of traffic when it was idle, so it was easy. I was offended to see some apps “phone home” when there was clearly no benefit to me, the user. Since I had full control of my PC in 1998, I could block it, intercept it, delete the app, hexedit the app, whatever I liked.

                                                          You know what I mean? It’s one thing for Spotify to tell their app to tell your phone to send all that data. It’s a whole different thing that your phone DID it and does not offer you an audit mechanism!

                                                          1. 2

                                                            On the other hand some consumers give their data knowing that it’s an exchange for features they want.

                                                            Many people like FB’s targeted ads!

                                                        1. 4

                                                          One way I’ve seen daily standups work well is when you have an imminent release or a P0 bug that the team is working to address. The standup is set up for an explicit and temporary purpose and dissolves after the situation is gone.

                                                          Otherwise, I’ve seen standups devolve into people just mentioning what they’re working on, prioritizing looks over substantiative progress.

                                                          1. 3

                                                            Yep - even when I was in a 100% waterfall environment, when something really important was looming management would come past every morning and gather everyone to discuss the plan.

                                                            I feel like perhaps standup is at its most useful when you’re working on something that makes the C-level execs nervous.

                                                            1. 1

                                                              That’s a good rule of thumb. We had a daily standup for about a week when we were about to release our product.

                                                            2. 3

                                                              Exactly. Otherwise it’s just an annoying ping every day.

                                                            1. 8

                                                              I agree that we should reduce website bloat, tracking scripts, etc. But these essays are a bit like essays decrying factory farming. Everyone agrees its bad, but unless you can come up with an economic incentive for the companies to care, to change their business models, the situation wont change. It’s hard to change the world with just strongly-worded essays, no matter how right you are.

                                                              This is where I see Google ranking slow website lower is a benefit. Very few platforms have the same power to force websites to be more respectful of users’ time and resources. I suppose the other big social media platforms can do the same down-ranking for slow/bad websites. However, since these companies are all dependent on ad dollars, you don’t end up winning all that much at the global level.

                                                              1. 9

                                                                Well, there’s also regulation, the traditional solution for companies that are producing negative externalities. In this climate, at least in the US, no one really is willing to propose or implement much regulation of any kind. Ideology uber alles.

                                                              1. 6

                                                                I’ve been conducting whiteboard data structures & algorithms interviews for a few months now. (We also give them laptops if they want to type on them.) I think they’re somewhat fair, given alternatives. I don’t ask trivia questions. My questions are pretty simple, with a progression of several possible solutions, each more efficient than the other. They’re the sort of problems I have solved in the past. (No dynamic programming stuff or whatever.) I do expect a candidate to know their language and basic CS concepts really well. They should be able to give solid reasoning for big-O. I do think it’s necessary to know the basics of big-O analysis. Bonus points for knowing standard library APIs well, but no big deal otherwise.

                                                                I don’t read resumes before the interviews. I don’t want to add extra bias. I ask a quick question about their technical experience at the beginning. This question is just to gauge general communication skills. At the end of the interview, I write up a summary of what happened. Those are sent to a committee which makes the decision.

                                                                This approach is standardized, which means individual biases are minimized.

                                                                Requiring open source contributions or take-home work unduly burdens those with families or other care-taking work. I prefer not looking at resumes so I’m not biased toward good universities or companies.

                                                                1. 1

                                                                  They should be able to give solid reasoning for big-O. I do think it’s necessary to know the basics of big-O analysis.

                                                                  I’d argue that if someone is familiar with big-O but not with profiling, their knowledge is as good as nothing. Premature optimization is the bane of software development.

                                                                  I ask a quick question about their technical experience at the beginning. […] I prefer not looking at resumes…

                                                                  Couldn’t you glean the same knowledge by looking at their résumé?

                                                                  1. 2

                                                                    I’m with you on big-O. It’s only a starting point for real performance engineering. I try to get to the nitty-gritty details of how their solution would work in a real system after they finish the main problem. Hopefully, they have some real-world knowledge about how their solution works.

                                                                    Well, the way we do it, the question at the beginning is just for me to gauge communication skills and get them comfortable. By the time they’ve gotten to me, the resume has been vetted at a basic level. Later on, someone will take my feedback and the resume into account to make the final decision. I think the anti-bias reason for not reading resumes is more important than the slight changes I can make to my algorithmic questions to account for their experience.

                                                                1. 5

                                                                  I’m trying to convince my workplace to get rid of whiteboarding interviews, does anyone know if there are resources for ideas of alternatives? Anyone have a creative non-whiteboarding interview they’d like to share?

                                                                  1. 7

                                                                    The best that I’ve found is to just ask them to explain some tech that’s listed on their resume. You’ll really quickly be able to tell if its something they understand or not.

                                                                    My team does basic networking related stuff and my first question for anyone that lists experience with network protocols is to ask them to explain the difference between TCP and UDP. A surprising number of people really flounder on that despite listing 5+ years of implementing network protocols.

                                                                    1. 6

                                                                      This is what I’ve done too. Every developer I’ve ever interviewed, we kept the conversation to 30min-1hr and very conversational. A few questions about, say, Angular if it was listed on their resume, but not questions without any context. It would usually be like- “so what projects are you working on right now? Oh, interesting, how are you solving state management?” etc. Then I could relate that to a project we currently had at work so they could get a sense of what the work would be like. The rapid-fire technical questions I’ve find are quite off-putting to candidates (and off-putting to me when I’ve been asked them like that).

                                                                      As a side note, any company that interviews me in this conversational style (a conversation like a real human being) automatically gets pushed to the top of my list.

                                                                      1. 4

                                                                        Seconded. Soft interviewing can go a long way. “You put Ada and Assembler on your CV? Oh, you just read about Ada once and you can’t remember which architecture you wrote your assembly for?”

                                                                        1. 3

                                                                          I often flunk questions like that on things I know. This is because a question like that comes without context. If such a problem comes up when I’m building something, I have the context and then I remember.

                                                                          1. 6

                                                                            I don’t think any networking specialist would not know the difference between TCP and UDP, though. That sounds like a pretty clear case of someone embellishing their CV.

                                                                            1. 4

                                                                              So if you can’t whiteboard and you can’t talk about your experience, what options are left? Crystal ball?

                                                                              1. 3

                                                                                I like work examples, open ended coding challenges: Here’s a problem, work on it when you like, how you like, come back in a week and lets discuss the solution. We’ve crafted the problem to match our domain of work.

                                                                                In an interview I also look out for signs of hostility on the part of the interviewer, suggesting that may not be a good place for me to work.

                                                                          2. 5

                                                                            A sample of actual work expected of the prospective employee is fair. There are pros and cons to whether it should be given ahead of time or only shown there, but I lean towards giving it out in advance of the interview and having the candidate talk it through.

                                                                            Note that this can be a hard sell, as it requires humility on the part of the individual and the institution. If your organization supports an e-commerce platform, you probably don’t get to quiz people on quicksort’s worst-case algorithmic complexity.

                                                                            1. 7

                                                                              I certainly don’t have code just sitting around I could call a sample of actual work. The software I write for myself isn’t written in the way I’d write software for someone else. I write software for myself in Haskell using twenty type system extensions or in Python using a single generator comprehension. It’s for fun. The code I’ve written for work is the intellectual and physical copy of my previous employers, and I couldn’t present a sample even if I had access to it, which I don’t.

                                                                              1. 5

                                                                                Yup, the code I write for myself is either 1) something quick and ugly just to solve a problem 2) me learning a new language or API. The latter is usually a bunch of basic exercises. Neither really show my skills in a meaningful way. Maybe I shouldn’t just throw things on GitHub for the hell of it.

                                                                                1. 4

                                                                                  Oh, I think you misinterpreted me. I want the employer to give the employee some sample work to do ahead of time, and then talk to it in person.

                                                                                  As you said, unfortunately, the portfolio approach is more difficult for many people.

                                                                                  1. 1

                                                                                    I write software for myself in Haskell using twenty type system extensions or in Python using a single generator comprehension. It’s for fun.

                                                                                    Perhaps in the future we will see people taking on side projects specifically in order to get the attention of prospective employers.

                                                                                2. 3

                                                                                  I recently went through a week of interviewing as the conclusion of the Triplebyte process, and I ended up enjoying 3 of the 4 interviews. There were going to be 5, but there was a scheduling issue on the company’s part. The one I didn’t enjoy involved white board coding. I’ll tell you about the other three.

                                                                                  To put all of this into perspective, I’m a junior engineer with no experience outside of internships, which I imagine puts me into the “relatively easy to interview” bucket, but maybe that’s just my perception.

                                                                                  The first one actually involved no coding whatsoever, which surprised me going in. Of the three technical interviews, two were systems design questions. Structured well, I enjoy these types of questions. Start with the high level description of what’s to be accomplished, come up with the initial design as if there was no load or tricky features to worry about, then add stresses to the problem. Higher volume. New features. New requirements. Dive into the parts that you understand well, talk about how you’d find the right answer for areas you don’t understand as deeply. The other question was a coding design question, centered around data structures and algorithms you’d use to implement a complex, non-distributed application.

                                                                                  The other two companies each had a design question as well, but each also included two coding questions. One company had a laptop prepared for me to use to code up a solution to the problem, and the other had me bring my own computer to solve the questions. In each case, the problem was solvable in an hour, including tests, but getting it to the point of being fully production ready wasn’t feasible, so there was room to stretch.

                                                                                  By the time I got to the fourth company and actually had to write code with a marker on a whiteboard I was shocked at how uncomfortable it felt in comparison. One of my interviews was pretty hostile, which didn’t help at all, but still, there are many, far better alternatives.

                                                                                  1. 1

                                                                                    I’m a little surprised that they asked you systems design questions, since I’ve been generally advised not to do that to people with little experience. But it sounds like you enjoyed those?

                                                                                  2. 1

                                                                                    There are extensive resources to help with the evangelism side of things.

                                                                                  1. 1

                                                                                    “Shakti” means “power” by the way.

                                                                                    1. 2

                                                                                      Training for a bike race, going to an art museum - probably the MoMA, helping a friend move, seeing The Neon Demon, maybe heading to a jazz club.