Threads for siddhantgoel

  1. 14

    Only very vague for me, but I am itching to do something different.

    After having done DevOps work for the last couple of years (Kubernetes, hashistack (to all thinking about learning: good idea!), cloud computing at large, ..), despite there being money in it and despite everyone offering more jobs, more pay, etc., I really want to learn something to get me out of that perceived insanity.

    I want to learn technologies again, rather than products. Basically I’d want to be the guy that would like to build these products, but I think it’s oversaturated and I really dislike how that whole part of the industry is basically littered with marketing and marketing terms that it has even become gross to lead a technical conversation. It’s just not fun nor particularly interesting anymore - only on rare occasions.

    I think the most interesting way is probably going to lower level stuff. Not completely sure about that though. Maybe the right way would be getting more distance, like management-y, but that feels a bit too far great from what I tried. I also tried that fit the last three, four years by doing consulting instead.

    Anyone here having a similar situation? I would really appreciate any recommendations.

    For lower level stuff I think about re-learning C, some assembly language, maybe try Zig, maybe play with hardware, toying with compilers, maybe drivers, etc. But since I don’t really have a concrete project in mind I might be ending up somewhere completely different.

    Worst case I’ll stick with cloud land and think about that again for 2023, after all it’s clearly a first world problem to have and there’s more important things in life.

    1. 5

      Anyone here having a similar situation? I would really appreciate any recommendations.

      Have you considered getting in touch with a mentor?

      I was in a similar situation a few months back and ended up talking to someone who had a lot more experience than me in the industry and that conversation helped me a lot!

      If this sounds interesting, I can recommend looking at https://www.mentoring-club.com/ (I’ve tried this one personally) and https://mentorcruise.com/ (haven’t tried this one myself but have heard good things about it).

      1. 1

        Thanks for sharing. I don’t think that’s what I am looking for though.

        Honestly this sounds like more like the stuff I went to get away from. It also feels more like something for people at the beginning of their careers. I’ve been there for a while, worked at some companies, worked on own projects, ended up consulting, etc.

        So my question isn’t really a career question. I think about significantly reducing my hours and do more fun stuff. It might have sounded like a career switch question, but I’m a bit worried that just switching to another field would mostly show me how that field is similarly bad in terms of everything being marketing, buzz, trend driven, people talking about things they seemingly don’t really understand.

        I want to avoid that hype driven environment. So the website with big company names, books on marketing and business, etc. seems like the stuff I’m trying to get away from.

        Thanks again for sharing. Maybe it helps someone reading about this thread. :-)

        1. 2

          Ah, then I misunderstood your comment. Sorry about that!

      2. 4

        Anyone here having a similar situation? I would really appreciate any recommendations.

        I have, sort of. Some of the things that worked for me in this situation – admittedly some of these may be a little esoteric… – were:

        • I’m not sure how else to put it but, uh, don’t stress it. The world is full of problems and no one in their right mind is enthusiastic about most of them. It’s hard to search for something cool to do without trying to do it and most of the things you do try turn out to be pretty boring. So… you know, don’t overthink your search for something nice to do. You’ll know it when you see it.
        • Completely and shamelessly ignore the matter of usefulness. It’s not 1961, there’s a good chance that anyone’s (including your) first attempt at anything is going to be bad and entirely useless. In my experience, no bit of knowledge, no matter how obscure, is useless forever. If something looks like it might be cool to hack on, just do it for a couple of afternoons. Of course it’s not gonna be anything grand, the age of amazing things hacked one afternoon is probably past us, but it doesn’t have to be grand.
        • This is also gonna sound like a cliche but what the hell: keep an open mind. You never know when and where something cool is going to pop up. I know you said “low-level things” but maybe your next big thing is going to be a JavaScript framework for holographic displays, you never know. If you stick only to the things you know you’re gonna be bored out of your mind.
        • Don’t let the cool things you read out there put you off. I know how it is to read something on someone’s blog and think man, this guy’s a wizard, and I’m barely getting my crap to compile. Everyone looks like a wizard if all you get to see is their “finished” code. Everyone looks pretty dumb when you see the work-in-progress version.
        • Our industry fetishizes enthusiasm and there’s a whole array of content mills out there to keep this insanity hype going. I found it’s best to ignore this stuff – there’s an endless stream of language blogs and Raspberry Pi blogs and whatnot out there, and they are absolutely a steaming pile of hot, self-important garbage, mine included, most likely. If you’re looking for something cool to do, don’t try to force yourself to like things a lot of other people like just because they might be useful. The Internet is a big place, if you’re passionate about something, no matter how weird or obscure, you’re gonna find someone to talk to about it.

        That being said… it’s worth keeping in mind that the grass always looks greener on the other side. There’s plenty of marketing garbage in the low-level side of this industry. Lots of low-level code written out there is of abysmal quality and powers things that should probably not even be a thing in the first place (looking at you, in-car infotainment…). Doing cool things might deliver your from professional insanity but in my experience switching jobs just gets you another job ;-).

        I’m sorry I don’t have anything more concrete to suggest, like a particular project to try. I suppose it’s something you have to figure out on your own, but if you got some more specific questions about the lower-level side of things, shoot! There seem to be a bunch of folks interested in this over here, maybe me or something else can give you a pointer (heh!)

        1. 2

          Thank you for your response.

          Yes, you are certainly right about the grass looking greener on the other side. It’s a bit what I intended to imply with probably just continuing to do consulting. It’s not a bad job per se, fun, often smart people, having different clients also helps with seeing different things, which is a big part of doing that in first place.

          Just when I start to reflect I can’t help but notice how this is really not the reason I got into IT in first place.

          This is oversimplified but maybe it helps to bring the point across. When I go to a company that needs help with improving their (typically cloud) infrastructure what I’ll be doing is helping them with understanding some technologies, some products, etc., but these feel very fast away from computers. It’s a bit like I’d explain Word or Photoshop to someone.

          Let’s say I’m using terraform. While for some people it’s fun to throw around with big infrastructure that can feel really fun and like having much power (lists hope they don’t throw around with it, but I hope you understand what I mean). However I see it as a hack to deal with some HTP API abstraction to make mostly orders, specifications of what you want from a given cloud service provider. So it’s a bit like filling out technical order forms. The actual work that I’d find more interesting is hidden behind a product and outsourced to the cloud provider. Just that no one usually calls it outsourcing, because we throw a lot of money at people like myself.

          Of course it’s a lot more complicated than that, and it’s not like this is uninteresting per se, I don’t end up there by chance and you need to know a lot more things, terraform is just a tiny piece, but I am trying to get across why I think going down the stack sounds interesting.

          For a while I thought, okay just apply for a job at a cloud provider then, but thinking about it more, also talking to people I realized that it’s (again oversimplified speaking) if it’s a new product, you end up writing some automaton scripts, bump the HTTP API over it, do maintained, etc. It’s not like you make interesting choices in many situations. It’s what cloud environments lead to. There’s standardized little building blocks. It’s someones a bit annoying if the blocks don’t quite fit what you are building, but having nice Interfaces and structures you can more easily repeat and software being aware of it is certainly a good thing and I’d argue that even if you build your own infrastructure from scratch, with zero cloud providers those not really codified standards software follows helps a lot. How much easier it would have been for sysadmins 20, 30 years ago if they could have said “funny store state outside of…”. That only was possible when it became a requirement to follow the trend of cloud computing.

          But that is going OT. The points ignoring usefulness strongly resonates with me. I think that’s something I’ve been missing a bit. It’s also part of why I mentioned lower level/hardware stuff. I don’t think I’ll quickly end up somewhere useful, so I don’t end up in that spot that I am in so quickly. Another reason is that it’s fun to be relatively new to something. Things have that magic touch and seeing new things and understanding new stuff and systems is even what makes many games and puzzles so fun.

          The other parts, especially fetishizing enthusiasm also very much resonate with me. Thanks a lot for sharing your thoughts.

          I think a lot is really a “first world problem” and just that I’ve been doing the same types of things for too long, feeling comfortable because one naturally ends up being the expert, which comes with certain perks.

          It can be a bit hard to then dare to jump into something new entirely. Not that I didn’t have to progress learning new things all the time, but more that maybe they were too close to what I understood and do it is very much repeating patterns.

          So then stuff doesn’t feel fresh for too long and what one is doing isn’t challenging in the same way as topics where you don’t know where to even start.

          So I went to for something with less hype that is somewhat new to me. Also it’s certainly enough for it to be a useless hobby.

          Just was wondering what people do in similar situations. Whether people just jump into another field or end up woodworking or gardening in their free time or something I didn’t think of.

          Again thanks for your response.

          1. 2

            Hey, you’re welcome! I hope some of this helps!

            So… I don’t know if this holds true for cloud and infrastructure projects, it’s far removed from my field and whatever sysadmin experience I have from years ago is irrelevant by now. But I can tell you that there are plenty of jobs that consist of nothing but putting standard things in standard boxes down the stack as well.

            For example, there are plenty of embedded Linux consulting shops out there whose model of business is effectively Googling for error messages as a service. All you get to do is move patches back-and-forth, mostly with Yocto or buildroot. It’s basically the lower-level equivalent of editing YAML files all day.

            I’m not saying this to discourage you – what I actually want to point out is that, while some aspects related to a job are inherent to the field it’s in (cloud, embedded, whatever), some are really inherent to each particular position, and to each company/client. Maybe you can find something interesting to do where you can reuse much of your existing skill set. I’m not sure what that might be given how far apart our fields are. But I imagine there are problems in distributed systems, for example, that can’t be solved by just configuring Kubernetes correctly.

            I realize big cloud vendors, and large cloud users in general, are likely to offer jobs that mostly consist of making existing building blocks work together. Maybe you can work on the building blocks? Maybe there are smaller companies out there that lack the large-scale experience and are willing to offer a large degree of autonomy to someone with the right experience there?

            Just was wondering what people do in similar situations. Whether people just jump into another field or end up woodworking or gardening in their free time or something I didn’t think of.

            When that happened to me, I jumped into another field. The jury is still out on whether it’s been a successful or not but it is looking good so far. I used to do embedded systems for a living, now it looks like I’ll be writing games for the foreseeable future. Not gonna lie, it’s been extremely scary and intimidating. It absolutely involved working for peanuts for a while, which I know not everyone can afford to do. It also definitely involved making all sorts of rookie mistakes and embarrassing myself in Slack channels and the like. It’s also not the kind of thing you can do anywhere, there are plenty of companies out there that are simply unable to cultivate an atmosphere where people can make the kind of mistakes that are inherent to making new things and own up to them and fix them.

            That being said, since you’ve mentioned gardening… I know, also from experience, that when your profession fill your whole time, not being able to do things as well as you think they should be done is draining, even when it’s not your fault, and even if you are perfectly aware of the line between your profession and something that’s just a job. It’s useful to have other things in your life.

      1. 10
        • web things: htmx and Hyperscript
        • programming languages: one or two of Common Lisp, Rust, Zig, Nim
        • devops: Hashicorp stack
        1. 3

          Htmx is super nice. I’ve been playing around with it over the last few days for a side project and it’s such a refreshing change from the complexity that the “modern” stack sometimes tends to introduce.

        1. 16
          • How to optimize PostgreSQL (@work)
          • How to repair a house I just bought in the countryside; Maybe wood work too.
          • More stuff surely, but I don’t know it yet !
          1. 8

            Woodwork is very rewarding. Even if you do crude things at the beginning, it’s still incredibly fulfilling to me.

            1. 5

              I’m curious, how did you start learning it ? A book ? Videos ? Just you trying things ?

              1. 6

                Well I started by trying first and only occasionally googling how a thing is done.

                I did have “second hand” experience from watching dad make things. He always made stuff with very low education and he instilled in me the fact that you don’t need school to make things, you need to make things to make things.

                But how I started is I wanted a really specific desk for my apartment and I just couldn’t find anything looking good enough to buy. So I drew what I wanted, figured out what kind of planks and stuff I needed and ordered them from a woodworking skip. They cut the stuff for me and all, and I mostly just glued it together. But the plans were mine and it was a start.

                Later on I did more and more things for myself. For example, the last piece was bunk beds for my kids. Where I sawed the wood, lacquered it, cut it, assembled, everything.

            2. 5

              Re: Postgres: may I suggest looking into https://www.pgmustard.com/ ? It’s a really neat query explainer explainer tool

              1. 1

                Thanks, I am going to have a look at it :)

                1. 1

                  +1 on the suggestion, I had a lot of success with pgmustard. It has a nice user-friendly hints associated with the highest costing things in your query plans, so you can really dig in and learn something about what makes queries efficient.

              2. 2

                How to optimize PostgreSQL (@work)

                Are you talking about queries or the DB itself?

                In either case, I can highly recommend really digging deep into the documentation and also their Wiki. And also make sure to not trust external stuff. Next to stuff changing between versions, sadly some information even on PG consulting company pages are outright wrong.

                But much fun to be had, with query analysis, understanding how memory is used, how much a difference locales can make (collate), when most don’t even think about it. Really interesting stuff.

                1. 2

                  Nice! How are you planning to tackle the Postgres optimization?

                1. 2

                  As with most Python packages, getting started is as easy as creating a virtual environment and running pip install beancount.

                  Just be aware that this installs beancount 2, while beancount 3 is a currently ongoing rewrite, with many parts in C++ and a not completely backwards-compatible design, see https://beancount.github.io/docs/beancount_v3.html

                  (just a happy beancount user, not a developer. So I might be misunderstanding)

                  1. 1

                    No you’re absolutely right. This targets the stable version which at this time happens to be v2.

                    As much as I don’t like breaking changes, I’m kind of curious about the v3 release. The authors seemed to have planned changes to the ingestion framework as well. Have you had a chance to look into the planned changes?

                    1. 1

                      The authors seemed to have planned changes to the ingestion framework as well. Have you had a chance to look into the planned changes?

                      No, not really, sorry. I am personally not using too many advanced features of beancount itself, just rather simple journals with a few tags. I am currently using a third-party tool for ingestion, not sure how that will work with v3: https://github.com/jbms/beancount-import

                  1. 2

                    Been working on a webapp for managing my financial stuff. The data part is the tedious part because my bank only spews out the transaction details as a .xls file and in an unorganised manner with the account details and all at the top. Had to manually clean that file and converts to csv which again has to be manually cleaned like removing unwanted commas and spaces then it fed to a Postgres db. It’s a lot of work but I get to improve my sql knowledge with it. Uses Go for most part and python for data processing part.

                    Really wished that the bank could have an API or a better transaction details system.

                      1. 1

                        Partially related, but have you also considered using Beancount for the second part of your task? You’ll still need to clean up the .xls but the rest can be handled quite elegantly using Beancount.

                        Ignore if you’re aware of Beancount already.

                      1. 2

                        Nice. I’ve been using systemd user services for making restic backups. Works really well so far.

                        1. 1

                          Neat. Restic is great. TIL systemd user space. :)

                        1. 3

                          Love It! I was just looking for something like this. Does anyone know of any other single file CSS frameworks that make simple sites look good with minimal work?

                          1. 5

                            Yeah PicoCSS and SpectreCSS are also really nice. I personally really struggle with CSS myself and would love to see something minimal with just the right stuff to get started building “native”(ish) looking apps too. Not sure if possible? 🤔

                            1. 3

                              Thanks for the links! I found https://terminalcss.xyz/ which I’ve started using for my tilde server. I love that I can use these simple CSS setups in combination with a Markdown parser and UNIX tools to make a simple templated site without a bunch of kitchen-sink frameworks and CLIs!

                            2. 2

                              Sakura is a minimal CSS theme that has been around for a while. It can be used as a drop-in.

                              1. 9

                                I hope you don’t mind if I take this opportunity to plug my parser, Lark: https://github.com/lark-parser/lark/

                                It’s written in Python (pro or con? you decide), and supports both Earley and LALR(1), and has a long list of features.

                                Unlike the package written by the author of the article, it’s not YACC-compatible, and I think it’s for the best :)

                                It actually improves on the classic LALR(1) algorithm, and can parse things that YACC (or PLY) cannot.

                                1. 3

                                  I used Lark for a recent project and it was an absolute pleasure, thanks for the hard work!

                                  1. 1

                                    Nice, the implementation looks very clean!

                                    Just one note, you’re using ambiguity="explicit", but doesn’t seem like there’s code to handle an ambiguity (although there probably shouldn’t be one). If it’s just there for debugging, maybe add an _ambig rule to your transformer that throws a nice error.

                                    1. 1

                                      Thanks. You’re correct about not correctly handling _ambig - it should throw an error.

                                      As author of Lark, what are your thoughts on the ideas in this blog post?

                                      Vis-a-vis my project: before I build something with it, I’d like to make the error handling better, and improve the performance - do you think these are both feasible whilst still using Lark?

                                      1. 2

                                        Re performance - absolutely. You’re using the Earley algorithm, which is strong but pretty slow. If you switch to LALR you will see a big improvement in performance (something like 10x if not more), and it should be capable of parsing your language. You might not even need to change that much of your grammar.

                                        Re errors - I’ll be honest, I didn’t read the article that deeply. But the examples it gives at the end (in the table), are definitely things you can do with Lark. Check out this example to see how: https://github.com/lark-parser/lark/blob/master/examples/advanced/error_reporting_lalr.py

                                        Error recovery is also possible. It’s still a new feature, but it’s already usable, and I believe it will become even better soon. See this example: https://github.com/lark-parser/lark/blob/master/examples/advanced/error_puppet.py

                                  2. 2

                                    Thanks for Lark!

                                    I’ve used Lark in the past to parse (a subset of) the LLVM-IR.

                                    1. 2

                                      Oh dang, lark is awesome, thanks for building and maintaining such a great project. The ability to swap LALR and Earley without having to change the grammar and the terse way of notating the grammar to elide unused nodes to keep the parse tree clean are pretty killer.

                                      1. 2

                                        I used Lark for a take-home interview question recently and it came in super handy. Thanks for your work on it!

                                        1. 1

                                          Does it support error recovery (general context-free error recovery as in Aho et al.) by any chance?

                                          1. 1

                                            It supports manual error recovery, not automatic. The article you linked to sounds interesting, unfortunately I’ll have to pay to view it and find out if it’s actually interesting.

                                        1. 1

                                          Stuff like this is super impressive, but it also makes me wonder why software developers are so intent on putting themselves out of jobs.

                                          1. 5

                                            It’s the healthcare paradox: the majority of passionate doctors want to exist in a world where they don’t have jobs anymore because everybody’s healthy.

                                          1. 20

                                            Of course everyone is free to spend as much money as they like, but if you want to start a blog and self-host, and might be discouraged, please let me give you another estimate that should 100% cover your needs:

                                            • Cloud VPS to host your blog: 3 EUR per month (Hetzner / Scaleway / whatever)
                                            • Domain: 12 EUR per year.

                                            And then you still have plenty of resources left to run stuff on your VPS.

                                            1. 12

                                              And in case you decide to go with a static site, Netlify has an extremely generic free tier which would waive off those 3€ per month as well.

                                              1. 3

                                                Supporting your point, I have a non-optimized, web app written in Python with plain HTML and CGI serving people daily at under 30% utilization of a $5 VM. Static, cached website offloading to a CDN might be even cheaper.

                                                1. 3

                                                  You can get a VPS for free (and domain as well), check out: https://matrix.org/docs/guides/free-small-matrix-server#get-a-free-server (yes, I wrote that page).

                                                  1. 4

                                                    If something if free, you’re the product. ;-)

                                                    1. 7

                                                      This isn’t like facebook/whatsapp/google(well, some of their services) where you cannot pay for the services. It’s a freebie to get you hooked. Start using and then discover you need more but don’t have the time/effort/resources to move someplace else, so you need to start paying to grow.

                                                      1. 1

                                                        I became really disenchanted with the US engineering program I went through when I found out that they only taught us to use $1000+ software titles. Not that open source existed for some of those titles then or now, but I felt a ton like the product…

                                                      2. 2

                                                        It’s actually really impressive that Oracle gives enough to run an actual ha service. It’s the core of any system to scale from one to two. Terraform even has the free tier all coded up (copyright Oracle, obviously): https://github.com/terraform-providers/terraform-provider-oci/blob/master/examples/always_free/main.tf

                                                      3. 2

                                                        Good point.

                                                        You can do things even cheaper if you use plain html/css files. I paid $37 on nearlyfreespeech, but I could’ve shaved off another ~$15 if I only had one site instead of two.

                                                        Bandwidth has never been a concern, but if it is, Cloudflare has a free plan.

                                                        1. 3

                                                          I think a static blog can easily be hosted on netlify/git(hub|lab) pages for free

                                                          1. 2

                                                            I just now realized I didn’t specify a time frame. Whoops. That’s $37 for all of 2019, or $3 a month.

                                                          2. 1

                                                            With HTML and CSS knowledge one can just set up a static site.

                                                            Of course it’s not as convenient as logging into a CMS but unless you have loads of traffic it will be free, most likely forever.

                                                            1. 1

                                                              Depending on how important it is for people to self-host, one might reconsider and use services like neocities, SDF or one of the many friendly tilde communities. True, you don’t get to decide that much, but you can still learn a lot under constraints, that you can then apply if you reconsider again later on and “self-host” (though that’s not always the right term with VPS’s).

                                                              1. 1

                                                                I’ve seriously considered hand writing a blog on Neocities, but my current blog takes an enough time as it is without having to hand code the entire thing. Would be a lot of fun though.

                                                                1. 1

                                                                  As if you can’t use an SSG witth neocities. ;)

                                                            1. 42

                                                              I’ve always felt the whole “terminal size” thing is a massive irrelevant distraction; I wrap lines (usually at 80) because I think shorter lines are easier to read.

                                                              Obsessively wrapping at 80 (or any other limit) is not helpful though; 90 or 100 can be fine too; the important question is “is it easier to read?” and often – but far from always – I find a length of 80 “easier to read”.

                                                              People/tools that are obsessive about “80” are annoying as it forces unnatural weird line-breaks and make things harder to read, and that’s basically the issue at hand here; the change that prompted this discussion:

                                                              -ssize_t __kernel_write(struct file *file, const void *buf, size_t count, loff_t *pos)
                                                              +ssize_t __kernel_write(struct file *file, const void *buf, size_t count,
                                                              +               loff_t *pos)
                                                              

                                                              The original line was 85 characters, and it makes little sense to break there IMO.

                                                              1. 14

                                                                The TeX papers cited a study that showed that humans read best (on average) when lines are 66 non-whitespace characters. That actually corresponds pretty well to an 80-column terminal (14 words, average word length 4-5, a bit longer if you have leading whitespace for indentation). I wrote a style guide a long time ago that included that as the rule: lines should not be longer than 66 non-whitespace characters unless breaking them would harm readability.

                                                                The get-out clause is important, because sometimes you really can’t usefully make them shorter, but often you can. The non-whitespace rule is important because it avoids one of the problems the Linux kernel has: they define their tab width to be 8 characters and so any line in a function has only 72 characters to play with and one inside an if block has only 64, which is a tighter restriction than you need for readability.

                                                                1. 20

                                                                  I assume that study was about prose rather than code though. Code is fundamentally different: more punctuation, fewer “words”, and heavy use of indentation that shrinks the line count for the majority of lines in any codebase.

                                                                  I wouldn’t expect a study tested on prose to completely generalize to code. As a hypothesis, I would suspect that people tend to skim through code looking at the “shape” of the text: looking at indentation, statements, balancing parentheses, etc. Lines that are too short means more cases where that shape is modified due to wrapping, hampering readability.

                                                                  1. 5

                                                                    I don’t know if anyone has done the study for code, but I have recently been surprised by some that show that they are more similar than I would have thought. For example, most of us know that syntax highlighting makes it easier to read code. There was a study that I read a couple of years ago for English text that applied part-of-speech tagging and then highlighted words based on this (so nouns, verbs, and so on were coloured differently). They found either an increased retention rate when reading at the same speed or an increased reading speed for the same retention rate.

                                                                    I’d be really interested in seeing a study on comprehension related to line length for code, especially compared across languages (any HCI folks looking for a grant idea?). I’m also not sure how generalisable the originals studies were to across Latin-alphabet languages and I’d be curious if the difference between English and Python is more or less pronounced than the difference between English and German or C and Python.

                                                                  2. 1

                                                                    The TeX papers cited a study that showed that humans read best (on average) when lines are 66 non-whitespace characters.

                                                                    What TeX papers are you referring to here?

                                                                    1. 2

                                                                      Knuth and the PhD students that he had working on TeX published a load of papers about how and why the system works. They’re a great resource for anyone interested in typesetting because they describe the algorithms they implemented, the algorithms they wanted to implement but couldn’t because of resource constraints, and the rationale for picking those algorithms.

                                                                      The paper describing the hyphenation algorithm, for example, describes a technique that MIT is now making a big fuss about where you train a simple ML model (in their case, as I recall, a two-deep Markov chain) and then record the instances where it makes the wrong prediction. For English, the entire hyphenation dictionary is the single model + about 70 outliers. It’s both small and very fast to search.

                                                                  3. 12

                                                                    One reason for “strong feelings” (for the lack of a better word) is multiple buffers open side-by-side in vim for example. I often tend to have 2 buffers open split screen in vim, one with the source file and the other one with the test. Shorter lines make it much easier to support this workflow.

                                                                    1. 1

                                                                      Can you have no more than a width of 160 characters comfortably displayed on your monitor?

                                                                      1. 9

                                                                        With my current hardware that number is about 180-200 (leaving out the space that the file browser plugin takes up on the left).

                                                                        Any more characters and I would have to decrease the font size to still be able to work with split buffers. But I’ve noticed that I feel strain in my eyes when the font size is too low.

                                                                        1. 1

                                                                          If you close the file browser, and have two files side by side, does the file length really have to be limited to 80 for the font size to be comfortably large to read? I find this hard to belive unless you have an unusually small monitor.

                                                                          1. 4

                                                                            With the file browser disabled, each buffer can accommodate about 115 characters at font size 12 (~110 to still have some spacing for comfortable reading). While that’s certainly more than 80, I feel my personal upper limit would be 90-ish. More than that I think I would have to either change my workflow or invest in a new display.

                                                                            Also, yes my hardware might qualify as being slightly dated. The laptop I use has a max resolution of 1920x1080. I do have an external display but that’s even older than the laptop and only supports 1440x900. ¯\_(ツ)_/¯

                                                                            1. 1

                                                                              That makes sense. I vote for 90 being the new default maximum line length, then. ;)

                                                                    2. 10

                                                                      I agree in spirit, but in practice many people lack common sense. Subjective criteria alone are not enough.

                                                                      1. 4

                                                                        Besides the common sense issue, some people appreciate hard formal restrictions for their creations. For example, that’s the whole point of poetry: to write stuff according to arbitrary rules that are orthogonal to the meaning. A sonnet has 14 lines of 10 syllables, just as linux kernel code has indentations of width 8 and a maximum of 80 columns per line.

                                                                        1. 6

                                                                          I would find it hard to argue that arbitrarily limiting the length of a line of code makes it any more “poetic”, in some way?

                                                                          More to the point, much as we like to compare code and poetry, real-world concerns impose. Sometimes it’s preferable to do the less poetic/more verbose thing in the name of keeping your code maintainable and (hopefully by extension) working in the future, for example.

                                                                          1. 4

                                                                            I think what GP is getting at is that (for many people, anyway) one of the top killers of creativity is, ironically, the blank canvas. The total freedom. One of the most common tips for getting around creative blockage is imposing arbitrary constraints.

                                                                            Not saying software engineering is 100% creativity, but at least a part of it is?

                                                                            1. 4

                                                                              Yes, that was exactly my point. I have found that artificially adhering to 80 chars per line and 8-width tabs forces me to code in a very productive way (and especially, that functions have at most 30 or 40 lines). Sure, I have to rewrite and refactor the code quite a few times until it reaches that state, but I do not feel like I’m losing my time, quite the contrary.

                                                                          2. 2

                                                                            Quite the opposite, rules such as the sonnet format are anything but arbitrary. They exist so the message can be delivered in a specific poetic fashion. They allow for a singer or a poetry reader to resource to a certain set of vocal/techniques techniques.

                                                                            It might sound counter intuitive, but meaning of a particular sonnet is not easily transferable to other formats. Much like the meaning of a ballad would hardly had the same strength if passed as an heavy metal song.

                                                                            I do not think there is an equally strong point at all when it comes to people wanting hard formal restrictions in their code because they like it. Engineering should be more pragmatic than this. If there are valid reasons, such as screen real estate in old days, that’s ok. But reasons without practical motivation become an unnecessary annoyance in my experience.

                                                                            1. 2

                                                                              Quite the opposite, rules such as the sonnet format are anything but arbitrary.

                                                                              I have the exact opposite view on the nature of poetry (not that there’s anything wrong with that). While the origins of poetic forms may have something to do with singing, this is not what the poetic thing is about. For example, when writing the lyrics of a song you may need to add an extra syllable on one of your lines and this will not matter: the singer will simply pronounce the two syllables faster, it happens all the time. However, if you add a single spurious syllable in a sonnet or a haiku, then the whole thing falls apart and ceases to be a sonnet or a haiku.

                                                                              If you read modern poetry (i.e., not influenced by any musical form that motivated it) you’ll find that the best poems can be also read as perfect prose, and the strict formal properties (rhythm, rhyme) just fall casually into place.

                                                                        2. 2

                                                                          I wrap to 80 characters almost always when creating a patch, just so there’s one less thing for people to complain about. However, I think wrappings like the above are a particularly egregious failure case. Sometimes adding or modifying a single argument can necessitate a second line…

                                                                        1. 30

                                                                          Not entirely on topic, but related: your website has a banner which says

                                                                          By continuing to browse the site, you are agreeing to the use of cookies.

                                                                          The EU data protection body recently stated that scrolling does not equal consent, see for instance https://techcrunch.com/2020/05/06/no-cookie-consent-walls-and-no-scrolling-isnt-consent-says-eu-data-protection-body/

                                                                          1. 25

                                                                            Then again, he is the type who “cares about SEO”.

                                                                            1. 3

                                                                              Wait, what’s wrong with caring about SEO?

                                                                              1. 5

                                                                                There was a time were SEO was synonymous with tricking the search engines into featuring your site. The running theme was SEO was a set of dark patterns and practices to boost your ranking without investing in better content.

                                                                                For many people SEO still has similar connotations.

                                                                                1. 16

                                                                                  There was a time …

                                                                                  Did that change?

                                                                                  1. 0

                                                                                    Did that change?

                                                                                    Based on my recent efforts at looking into these things from a developer point of view, I would say yes it’s changing.

                                                                                  2. 6

                                                                                    AFAIK, there’s still considered to be “White hat” and “Black hat” SEO. White hat SEO involves stuff like organizing links and URLs well, including keywords appropriate to what you actually do, writing quality content, and per this article, encouraging links to your domain and paying attention to whether they use nofollow. Generally, stuff that doesn’t go against the spirit of what the search engine is trying to do, tries to get more legitimate users who genuinely want your product to find it and learn about it more easily etc.

                                                                                    Black hat SEO involves stuff like spinning up link farms, spamming links across social media and paying for upvotes, adding a bazillion keywords for everything under the sun unrelated to what you’re doing, etc. Generally trying to trick search engines and visitors into doing things against their purposes.

                                                                                    It may feel a little dirty at times, but it’s probably tough to get a business going in a crowded market without paying attention to white hat SEO.

                                                                                    1. 2

                                                                                      It may feel a little dirty at times, but it’s probably tough to get a business going in a crowded market without paying attention to white hat SEO.

                                                                                      This is common issue for healthcare sites. If you have bona fide information that’s reviewed and maintained by experts it competes with sites selling counterfeits, outdated information, conspiracy theories, etc. These sites try every trick they can to scam people. If you don’t invest in SEO you are wasting people’s time with bad information in most cases, but some people can be harmed. In the US this can boil down to a freedom of speech discussion, but if you work internationally you have clearer legal obligations to act.

                                                                                      Search engines do want to help directly in some cases, but there is still an expectation that the good guys are following what would be considered white hat SEO practices. White hat SEO often has other benefits with accessibility, so I think it’s worth listening.

                                                                                      1. 3

                                                                                        Yep, this is a bit unfortunately true. IIRC, StackOverflow had to implement SEO practices as, without it, other sites that scraped their content and rehosted it were actually getting higher rankings in Google than SO themselves.

                                                                                    2. 3

                                                                                      Makes sense. I wish more people (developers in particular) would start questioning these connotations. The present-day advice on how to do SEO right is a lot different from what it used to be.

                                                                                      1. 8

                                                                                        As the parent said, SEO originally meant “hacking” google search rankings but over time, Google eliminated these hacks one by one, saying the whole time that their goal was to deliver search results that were relevant and useful. However, the way they define “relevant and useful” is primarily:

                                                                                        1. How closely the page content matches the serarch query
                                                                                        2. How many “reputable sources” link to the page
                                                                                        3. How long visitors stay on the page (usually directly related to length)
                                                                                        4. How many people click on the link

                                                                                        So SEO became less about technical trickery and is now more about human trickery. This resulted in the rise of what I call “blogspam”, i.e. blogs that crank out content with affiliate links and ads peppered throughout. This might not be a bad thing per se, except that most of the time I land on blogspam, I am inundated by pop-up dialogs, cookie warnings, ads and miles of empty content designed to make you Just Keep Scrolling or hook you with an auto-play video. Because both of these things keep you on the page longer, which increases their search rankings.

                                                                                        This isn’t always quite so bad for tech-related queries, where StackOverflow and its ilk have cornered nearly every result, but try searching for something generic like “hollandaise sauce recipe” or “how to get rid of aphids” or “brakes on a Prius” and you will drown in an unending sea of blogspam.

                                                                                        This has been another episode of “What Grinds bityard’s Gears”

                                                                                        1. 1
                                                                                          1. How closely the page content matches the serarch query

                                                                                          Since you put “relevant and useful” in quotes, I’m assuming you feel that a search query matching the page content is not a good signal of whether a search result is good. I’m curious why you think that?

                                                                                          Just Keep Scrolling or hook you with an auto-play video. Because both of these things keep you on the page longer, which increases their search rankings.

                                                                                          That’s actually not true. Google made a blog post a while ago mentioning that pop-up dialogs (or anything that reduces content accessibility) reduces search rankings.

                                                                                          In any case, while I do agree that not all SEO advice is (or has historically been) good, the blanket statement that all SEO advice is bad is also not correct (or fair). Besides, the black-hat SEO advice is slowly becoming more and more pointless as Google gets smarter at figuring things out.

                                                                                          1. 1

                                                                                            This isn’t always quite so bad for tech-related queries, where StackOverflow and its ilk have cornered nearly every result, but try searching for something generic like “hollandaise sauce recipe” or “how to get rid of aphids” or “brakes on a Prius” and you will drown in an unending sea of blogspam.

                                                                                            I feel the pain, but is this less about SEO and more about how certain people have developed business opportunities? SO has largely replaced expertsexchange in search results, but in a way this was one of the founder’s aims that has been mentioned in various places.

                                                                                            The StackExchange network of sites has been trying to expand to cover, your example of “how to get rid of aphids”, but it hasn’t yet been successful. There is inertia with getting these sites off the ground and employing people to write quality questions and answers, but this doesn’t align with the community ethos. Arguably, it would be better for the web since you’d get a better experience when you click through search results. I wish there was an easier answer.

                                                                                            I don’t see why there couldn’t be a recipe site with the quality user experience you associate with SO. There are however a lot of entrenched interests and competition. People also have a tendency of sharing copyrighted recipes they’ve copied down from friends or family. Incumbents won’t react like expertsexchange to SO.

                                                                                      2. 3

                                                                                        SEO is like ads on the internet; in theory it’s a good thing, helps people to find relevant content, helps companies to make more profits. But in reality, it’s just a pissing contest who exploits the user most. If a company made some money by using some shady SEO tricks, then we’ll do it 2x more intensively, so we’ll earn some money too. Who cares that the search engine results will be less accurate?

                                                                                        1. 1

                                                                                          To be honest, try looking up the modern SEO recommendations (black hat SEO is becoming more and more pointless as Google gets smarter at figuring things out). You’ll be pleasantly surprised.

                                                                                    3. 6

                                                                                      The funny part is that the only cookie used on this site (that I can see) is the cookie that stores the fact that the user accepted the use of cookies :D

                                                                                      Also, the law never forced the display of the “cookie wall” for purely-technical cookies (eg: login and such), but only those aimed at tracking.

                                                                                    1. 10

                                                                                      It’s a bit jarring to me that Pythonistas are so… authoritarian in their views. Maybe as a consequence of “There’s Only One Way To Do It” mentality, but anything remotely out of the ordinary seems to scare them into blogging about how everything else sucks…?

                                                                                      Languages and their communities are made up of people, and people are flawed so yes projects will have flaws. So does Python! There’s no standardized way of interacting with a language project, and forums will be all over the place, people on them will be cursed with a number of vices, but eventually you make it out with more knowledge.

                                                                                      How do I install it? The docs say brew install, but I’m on Windows.

                                                                                      You’ll have a lot of problems outside of Python/C++/C#/Java if you’re on Windows.

                                                                                      How do I read from a file? How do I parse JSON? How do I pull environmental variables?

                                                                                      Read the docs?

                                                                                      How am I supposed to be writing this? Do I download an IDE? Is there a Vim plugin?

                                                                                      Use whatever - there’s no single right way you’re “supposed to be writing this”.

                                                                                      What are the language quirks that will cost me an hour to discover?

                                                                                      Everyone gets tripped up on different things…? And even if not, it won’t be a wasted hour because a language feature (either technical, or of design) is behind the quirk, and you’ll be better off knowing it?

                                                                                      I could go on, but the questions are too lazy. Languages are not easy.

                                                                                      Screw this, I’m going back to Python.

                                                                                      Oh well.

                                                                                      1. 24

                                                                                        I think you are misunderstanding his point. I don’t think he’s using Python as the gold standard on how to do things (because it sure as hell isn’t even though I love it). He’s using Python as a stand-in for “insert familiar preferred language”.

                                                                                        That list is a pretty decent summary of what a tutorial or reference for new programmers should contain. Go to any unfamiliar language and check out their tutorial and see how many of these points they check off. I’m sure there’s quite a lot of the more important points left. You are probably capable of finding out those things yourself, considering the criticism you are levelling at the post, but imagine you are very new to programming; what even is JSON? Why wouldn’t brew install work on Windows? Environmental what? Do I use Word or Notepad to write the code? Why can’t I do if a > b > c?

                                                                                        Being familiar with another language does not really mean you are that proficient with it either. It just means you have managed to start coding in it and your programs mostly function when you start them up. Pretending everyone has 10 years of experience with C, Rust, JS, Java, Python and insert your flavor of functional language is absurd and elitist.

                                                                                        1. 17

                                                                                          How do I read from a file? How do I parse JSON? How do I pull environmental variables?

                                                                                          Read the docs?

                                                                                          The first time I tried to use Swift, I ran into a bunch of these issues. Swift is a “app developer” language, at least as documented by Apple, so you don’t read files from a path, you read them from a bundle. What’s a bundle? Welcome to Foundation! Don’t know what that is? Down the rabbit hole of Apple specific APIs that don’t map to other languages we go.

                                                                                          1. 3

                                                                                            Yeah it’s one thing to just ‘read the docs’ when you’re asking simple questions like that and the language you’re using is Yet Another System Call Wrapping Language With A Basic Standard Library And FFI like Python, Ruby, Node.JS, Rust, etc. It’s quite a different issue when you’re learning a new language but where ‘new language’ is code for ‘entirely new set of APIs, things you might want to do, etc.’ like Swift where you’re not just learning a new fairly mundane and simple language but also an enormous API surface, UI paradigm, app development conventions, operating system, etc.

                                                                                            1. 1

                                                                                              Pretty sure the docs for Swift cover all that.

                                                                                            2. 0

                                                                                              There’s a difference between Swift and the APIs you call with it. You don’t need bundles to work with files:

                                                                                              let file = "file.txt" //this is the file. we will write to and read from it
                                                                                              
                                                                                              let text = "some text" //just a text
                                                                                              
                                                                                              if let dir = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first {
                                                                                              
                                                                                                  let fileURL = dir.appendingPathComponent(file)
                                                                                              
                                                                                                  //writing
                                                                                                  do {
                                                                                                      try text.write(to: fileURL, atomically: false, encoding: .utf8)
                                                                                                  }
                                                                                                  catch {/* error handling here */}
                                                                                              
                                                                                                  //reading
                                                                                                  do {
                                                                                                      let text2 = try String(contentsOf: fileURL, encoding: .utf8)
                                                                                                  }
                                                                                                  catch {/* error handling here */}
                                                                                              }
                                                                                              

                                                                                              (from StackOverflow)

                                                                                            3. 9

                                                                                              To me this post sounded like a bunch of made up reasons to avoid learning a new language. Yes, some languages will have better documentation than others, some languages will have better support for $OS than others, some languages will have better editor support for your favourite editor. But guess what, that’s all because someone put in the effort to make it so. If you believe for example that the editor support is not up to snuff, you can improve it for yourself and everyone else after you.

                                                                                              And yes, there will be “that one package everyone uses” because it’s better than the others, but why should there be an official statement about that anywhere? This is basically a cultural thing. Also, you can’t expect to completely become a native in just a few days. Besides, what’s best today might not be best tomorrow (think e.g. Requests, which is by many people considered the de facto Python library for HTTP, but with the introduction of async/await in the language, it’s no longer so clear that Requests is the way forward). Also, something might be great today but something even better might come along in a few years.

                                                                                              What do you do when you want to become more embedded in a culture? You make some friends and ask people to explain the local customs to you. Or maybe you buy a book about the culture and learn it from that. But mostly, you learn it through osmosis, by spending time in there.

                                                                                              1. 7

                                                                                                I suspect the post is more of a collection of common objections and stumbling blocks for people that might want to try out a new language. Any one of them might be the the thing that turns away a single person, as they pile up, less people are willing to jump over the hurdles.

                                                                                                I don’t think anyone expects to be “native” in a few days, but I know for me, if I can’t find a way to get a foothold in a language or framework within 4-6 hours, my interest moves onward. A foothold here is a basic, but useful (ideally) program that I can use as a base for building greater understanding over time. (Useful being a bit subjective). There are some exceptions to this, especially at $WORK, but yeah.

                                                                                              2. 8

                                                                                                I don’t think this post is Python-specific. I think everything makes sense even if you substitute “Python” for “$MY_LANGUAGE_OF_CHOICE”

                                                                                                1. 2

                                                                                                  My point was that looking for the one specific way you’re “supposed to be writing this” is a sentiment I get from a lot of Python coders.

                                                                                                  1. 2

                                                                                                    Is that so bad though? “You could do X in 10 different ways” would tend to confuse beginners (arguably) even more.

                                                                                                    1. 2

                                                                                                      Yes, it is bad for a general purpose language to have one specific way of doing things. I have enough of a hard time having to always work with the same cloud provider (AWS), don’t tell me my code doesn’t conform to some standard if it achieves the same result. Coding is a creative endeavor, not paint by numbers.

                                                                                                      For me, it’s an excuse to only support code written a certain way, and screw you for thinking differently.

                                                                                                      1. 0

                                                                                                        Yes, it is bad for a general purpose language to have one specific way of doing things.

                                                                                                        In the language camp that you’ve spent the most time in, that advice may apply. But claiming anything to be universally true (or false) is taking things a bit too far.

                                                                                                        For instance, Ruby folks are happy having 10 different ways of doing the same thing, and Python folks are happy having one single way. Different people feel productive in different ways. That doesn’t have to mean that one is better than the other one.

                                                                                                        1. 1

                                                                                                          claiming anything to be universally true (or false) is taking things a bit too far.

                                                                                                          We’re in agreement here. Python coders say there’s only one right way to do things, I reject that because different people feel productive in different ways.

                                                                                                          1. 0

                                                                                                            Python coders say there’s only one right way to do things

                                                                                                            … in the Python world

                                                                                                2. 11

                                                                                                  It’s a bit jarring to me that Pythonistas are so… authoritarian in their views. Maybe as a consequence of “There’s Only One Way To Do It” mentality, but anything remotely out of the ordinary seems to scare them into blogging about how everything else sucks…?

                                                                                                  You’re missing the point. Python isn’t some magical language that has all of these fixed. In particular, the packaging situation on Python is an utter mess. The point is that the learning a language means learning the ecosystem and accidental complexity bundled with using a language in the real world. And that’s hard. Someone switching to Python from Java would have these exact same problems.

                                                                                                  You’ll have a lot of problems outside of Python/C++/C#/Java if you’re on Windows.

                                                                                                  In the 2018 SO survey, half of all developers said they used windows. Dismissing them out of hand is a great way to show just how little you care about adoption.

                                                                                                  I could go on, but the questions are too lazy. Languages are not easy.

                                                                                                  Many languages are essentially complex. Most are far more accidentally complex, making it artificially hard for beginners to start using it.

                                                                                                  Perhaps this should be another bullet point under community: “Does the community think its the beginner’s fault for struggling?”

                                                                                                  1. 3

                                                                                                    I’ll stand as a Windows developer who has used quite a few languages on Windows outside of that group. Support varies, for sure.

                                                                                                    1. 1

                                                                                                      In the 2018 SO survey, half of all developers said they used windows. Dismissing them out of hand is a great way to show just how little you care about adoption.

                                                                                                      I didn’t dismiss them. I just pointed out the large majority of them are using Python/C++/C#/Java. I guess I could have added PHP to the list.

                                                                                                      Perhaps this should be another bullet point under community: “Does the community think its the beginner’s fault for struggling?”

                                                                                                      There’s struggling and there’s I expect every problem to be already fixed for beginners, so I don’t have to struggle. Struggling while learning a new language is always going to happen. To dismiss it with “Screw this, I’m going back to my blanket” is unrealistic.

                                                                                                      1. 11

                                                                                                        There’s struggling and there’s I expect every problem to be already fixed for beginners, so I don’t have to struggle. Struggling while learning a new language is always going to happen. To dismiss it with “Screw this, I’m going back to my blanket” is unrealistic.

                                                                                                        Dude, my job is improving accessibility for formal verification languages. Look how many of the other commenters are talking about the same pain points. These are not “I want my blanket” problems, and you thinking they are is a sign you haven’t had to go through this in a very long time.

                                                                                                        1. 0

                                                                                                          Dude, my job is a bit immaterial to the point. And I’ve been learning a language that is still in alpha and makes me file Github issues when I use it because it explodes left and right. I don’t say “screw this, I’m going back to $COMFORTABLE_LANGUAGE_I_KNOW” because I realize a) it has future potential and b) creating languages and growing them, along with a community around it, is no easy feat. And it doesn’t have to be for me to consider learning said language worthwhile. The world doesn’t revolve around my needs (or my job). And plenty of other commenters see your post as whining, too.

                                                                                                          1. 7

                                                                                                            Dude, my job is a bit immaterial to the point.

                                                                                                            The point of that statement is that I’m not demanding anything radical, and I’m often the person who’s fixing these issues for formal verification languages. I’m not a no-stakes observer complaining about languages being hard, I’m talking about actual barriers to learning and adoption.

                                                                                                            The world doesn’t revolve around my needs (or my job). And plenty of other commenters see your post as whining, too.

                                                                                                            Okay, I don’t think this conversation is going to go anywhere. If you think these very real issues are “whining” or a “blanket”, then we don’t have any common ground.

                                                                                                            1. 0

                                                                                                              If your point is that you have languages have to:

                                                                                                              • Explain how to install them for every operating system available
                                                                                                              • Tell you how you should be “writing” with it
                                                                                                              • Tell you all the quirks that might cost you (personally) an hour or more to discover
                                                                                                              • How the help is organized (not just where it is)
                                                                                                              • Where to look for your specific problem X they don’t know about (docs, FAQ, community, Google)
                                                                                                              • Teach you how to debug with it
                                                                                                              • How to do unit testing
                                                                                                              • How to build, package, manage your environment
                                                                                                              • Package management
                                                                                                              • Where the language community is, who the abusers are, tell you about the high-profile rivalries, all the in-jokes
                                                                                                              • ….

                                                                                                              for you to figure them out or else you screw back to Python, then yeah I don’t think we have common ground.

                                                                                                  1. 2

                                                                                                    https://sgoel.org - I write mostly about Python, development practices, and sometimes about “off topics” that interest me.

                                                                                                    1. 3

                                                                                                      Working my way through The Soul of a New Machine.

                                                                                                      1. 2

                                                                                                        I read this last year after blowing through “Halt and Catch Fire.” It’s a great look into a 1980s computer company and how engineers, when faced with a seemingly impossible task, will be pushed to the brink to meet a deadline.

                                                                                                      1. 1

                                                                                                        Where are the benchmarks? What are the setups?

                                                                                                        1. 1

                                                                                                          There are a few in the paper they linked to on the site.

                                                                                                        1. 2

                                                                                                          I’m building Developer to Manager using Flask.

                                                                                                          The development process works just like any other Flask app. For deployment though, I’ve chosen to use Frozen-Flask to compile the application to a static site, so what you see on the site is actually just a bunch of HTML files.

                                                                                                          I wrote about this setup here at length in case anyone is interested in reading more!

                                                                                                          1. 1

                                                                                                            Exactly the kind of post I was hoping to find in the comments here. Thank you, will give the setup a read!

                                                                                                          1. 3

                                                                                                            I’m running my own Nextcloud, Sogo as groupware webmail and dav integration, my own tt-rss since google reader died, my own email dns and vpn server, as well as my own gitea It all integrates rather well with my ldap server

                                                                                                            1. 2

                                                                                                              Are you hosting it on a personal machine or renting one from a provider?

                                                                                                              1. 1

                                                                                                                Scriptki

                                                                                                                renting from a provider, hetzner cloud its more reliable than my internet connection

                                                                                                              2. 1

                                                                                                                Was getting it all integrated with LDAP difficult?

                                                                                                                1. 1

                                                                                                                  was quite a lot of work :/

                                                                                                              1. 2

                                                                                                                Congrats on shipping!

                                                                                                                What’s the rationale behind the free plan? It’s super generous, but I’m thinking if 100k views per month for unlimited sites is easy to hit and could result in a lot more effort at your end?

                                                                                                                1. 17

                                                                                                                  A lot of people add Google Analytics to their weblogs, portfolios, side projects, etc. because it’s basically the only free service; almost all other ones are very much priced towards business use.

                                                                                                                  I think it’s important to make software like this as accessible as feasible to make actual meaningful inroads to “de-Google-fi” the internet a bit, and make pervasive tracking less common. Making it freely available (for personal use) is part of that. In my own online purchasing behaviour I find that even a small $1 or $2 subscription is quite a barrier, especially for personal projects. From what I see, I don’t think my behaviour is an outlier.

                                                                                                                  The only other options you have are to use GA, pay upwards of $10/month, or self-host – which also isn’t free in terms of hosting costs, setup time, maintenance, etc. Never mind that Average Joe running his photography website probably doesn’t have the know-how.

                                                                                                                  Right now, hosting the free package basically costs me nothing; last time I benchmarked the software can handle something around 500 pageviews/second on a $5/month Linode VPS. Most personal sites get very little traffic anyway (much less than 100k/month) and quite a significant percentage of the free users actually donate. When I originally posted this people advised that “Your life will be much easier with 3 customers paying $500, than 500 customers paying $3”. This is not bad advice as such, but also what everyone else seems to be doing, leaving consumers without a good solution.

                                                                                                                  In short, focusing only on business use might make sense if you’re only interested in running a business, but if you want to make the internet a bit better, then the only real option is to offer a Saas for free, at least for personal use. Actually, I don’t even see the point of this entire project without doing this to be honest.

                                                                                                                  1. 1

                                                                                                                    Your rationale mirrors my feelings about the web.

                                                                                                                1. 15

                                                                                                                  I will learn:

                                                                                                                  • More number theory and error analysis so that I can implement the Elusive Eight.
                                                                                                                  • More about BATMAN and mesh networking, so that I can keep improving my home network.
                                                                                                                  • More about implementation of databases so that I can implement a proper categorical database system.
                                                                                                                  • More about Z3’s internals. I think that I have an improvement on the state of the art for 3-SAT but I’m not sure yet because I haven’t grokked every internal representation of Z3.
                                                                                                                  • To get better at proposing simple natural arguments which infuriate bigots, so that I can more effectively create self-doubt and insecurity amongst fascists.
                                                                                                                  • One additional algorithm for a non-standard Rubik’s Cube. Probably parity fixes for 4x4/5x5 or last-layer for Megaminx.
                                                                                                                  • To keep Venus flytraps alive. Surprisingly picky plants, and I don’t have a green thumb.
                                                                                                                  1. 4
                                                                                                                    • More about implementation of databases so that I can implement a proper categorical database system.

                                                                                                                    Can you tell me more about “categorical database system”? I stumbled upon http://math.mit.edu/~dspivak/informatics/talks/CTDBIntroductoryTalk it looks interesting. Thanks!

                                                                                                                    1. 5

                                                                                                                      Imagine a database that is not built on relational logic, but on categorical logic. Imagine not just graph databases, but databases which store hypergraphs with path equivalence; that is, databases in which categories are the objects being searched and stored.

                                                                                                                      Alternatively, imagine a language for expressing categorical ideas. I keep coming back to Hagino CPL, a language in which one writes lengthy categorical expressions, and retrieves a canonicalized shortened categorical expression.

                                                                                                                    2. 2

                                                                                                                      More about BATMAN and mesh networking, so that I can keep improving my home network.

                                                                                                                      Are you using mesh network at home? Which devices are you using for it? Is there a real advantage using a mesh network at home instead that using a traditional network?

                                                                                                                      1. 2

                                                                                                                        More about Z3’s internals.

                                                                                                                        Z3?

                                                                                                                        1. 7

                                                                                                                          The Z3 Theorem Prover, an efficient SMT (Satisfiability Modulo Theories) solver very popular and widely used in Formal Methods and PLT (Programming Language Theory) research communities.

                                                                                                                          Programming Z3 is a nice tutorial with references to other great resources about Z3.

                                                                                                                          1. 11

                                                                                                                            A roadster built by BMW in the 90’s and early 2000’s. I also have a somewhat broken one that I need to learn more about it’s internals to get it roadworthy again.

                                                                                                                            1. 1

                                                                                                                              A SMT/SAT solver by Microsoft

                                                                                                                            2. 1

                                                                                                                              3-SAT is, as far as I can tell, mostly a theoretical device. SAT solver implementations deal with arbitrary clauses (but have special optimizations for 2- and sometimes 3- clauses). I’d recommend looking at minisat/glucose/cadical rather than Z3 if you’re into pure SAT because Z3 is a SMT solver and is literally orders of magnitudes more complex than a SAT solver.

                                                                                                                              1. 1

                                                                                                                                To keep Venus flytraps alive. Surprisingly picky plants, and I don’t have a green thumb.

                                                                                                                                I was endlessly fascinated by these as a young man and killed a great succession of them, probably due to over-feeding.

                                                                                                                                1. 1

                                                                                                                                  To get better at proposing simple natural arguments which infuriate bigots, so that I can more effectively create self-doubt and insecurity amongst fascists.

                                                                                                                                  This is something I’ve been thinking about for a while as well. Do you think they are open to the voice of reason/argument?