1. 2

    To divide by 3, I used a multiplication trick. On tiny devices, division is often implemented as a (slow) library call, but if you’re dividing by a constant, you can usually find a good equivalent fixed-point constant. “One third” in binary is “0.5555…” repeating, so using a 16-bit fixed-point fraction, you can multiply by 0x5556 and shift right 16 bits.

    Why 0x5556 and not 0x5555?

    1. 7

      Because shifting right by 16 is the math equivalent of “floor” instead of “round”, so we need the result to be not just “as close to 1/3 as possible”, but the error needs to be on the high side instead of the low side.

      0x5555 * 3 = 0xffff – shifts right to zero

      0x5556 * 3 = 0x10002 – shifts right to one

      I’ll add this to the post, thanks!

      1. 1

        Thank you!

      2. 1

        Because the number 0.555555… is a little closer to 0.5556 than 0.5555. When they say “in binary” I think they mean “in hex” too.

        1. 2

          0x0.55555… is closer to 0x0.5555 than 0x0.5556. Remember, 0x0.5 is five sixteenths, significantly less than a half (which would be 0x0.8).

          1. 2

            Well corrected! I clearly fluffed that in my head.

      1. 1

        Neat. I think the other thing that I’d like to see Erlang move towards is options for larger networks… There is some work on this with LASP, but I don’t have the link handy.

        1. 3

          Have you looked at SD Erlang? http://www.dcs.gla.ac.uk/research/sd-erlang/ It avoids having a large, fully connected network by adding the concept of an “s_group”, essentially a cluster where only one node may message other s_groups.

        1. 13

          Some interesting changes, from: https://www.ubuntu.com/desktop/1710

          “The biggest change is the desktop environment. Ubuntu 17.10 is retiring Unity in favour of GNOME, version 3.26.1.”

          “Ubuntu 17.10 features the Linux kernel 4.13.”

          “The swap is now a file, not a partition that will scale to what your system needs, making it easier to install Ubuntu on any machine.”

          “Ubuntu 17.10 will be supported for 9 months until July 2018. If you need Long Term Support, it is recommended you use Ubuntu 16.04 LTS instead.”

          1. 3

            “The swap is now a file, not a partition that will scale to what your system needs, making it easier to install Ubuntu on any machine.”

            Huh. I vaguely remember something about systems that supported swap files tearing support out. As I recall, it was because it was deadlock prone. The file system may need to allocate in the write path, which triggers swapping, which needs to write, which triggers allocations, which triggers swapping, which needs to write… you get the idea.

            1. 1

              Windows swaps to a file on NTFS just fine…

              It must’ve been about ZFS. Swapping to a file on ZFS or a zvol WILL deadlock :)

            2. 2

              “The swap is now a file, not a partition that will scale to what your system needs, making it easier to install Ubuntu on any machine.”

              Would there be any issues with doing this as opposed to keeping your swap on a separate partition? Is the only upside ease of installation for those unfamiliar with disk partitioning?

              1. 2

                There’s potentially a very slight performance difference, but it would be tiny. It’s far outweighed by the benefits at installation time. Depending on how they’re doing it (I haven’t looked in depth), it would also simplify the handling of encrypted swap (that is, they wouldn’t have to do it anymore; if the root filesystem is on an encrypted partition, encrypted swap comes for free).

                1. 3

                  The only downside of a swap file for me is that it makes hibernation a bit more complicated because you must specify the offset of the file from the partition start as a kernel parameter. But this is only a minor issue and I haven’t used a dedicated swap partition in years.

                  1. 1

                    I hadn’t thought about hibernation…but then again, I gave up trying to get it working on any OS ten years ago and haven’t thought about it since. :)

                2. 1

                  I’d be surprised; keeping swap in a file has been supported for well over a decade (could be two or even three, I’m not a historian).

                  I’m very familiar with disk partitioning, but I’m also very happy not to have to do it! And swap is a pretty safe thing to put on even your root partition, as it’s fixed-size and won’t surprise you by filling your disk.

                3. 1

                  I actually had an issue with my swap on the last 17.10 beta. There existed a /swapfile, and it was listed in /etc/fstab, but for some reason it was not being used (swapon -s and top didn’t show it). A couple of times when I opened a few Chrome tabs in a row, the machine went south, and as far as I could tell kswapd was going nuts. Both times the machine hung.

                  I blasted the old /swapfile, made a new one in the usual way, activated it, and now the machine is running fine.

                1. 1

                  Because APL is an opaque nightmare for a newbie, despite having a better matrix handling story?

                  Plus the huge range of pre-existing mathematical libraries of course.

                  1. 3

                    Putting aside the inherent user-surliness of APL –

                    Fortran has some really fast compilers available for modern hardware. APL lags in this regard.

                  1. 2

                    Are there many folks who migrate from Dynamo to Postgres? I mostly hear about this (and have only participated) the other way around.

                    1. 2

                      I think it all depends on the company and your use case, but I’ve observed an increase in it. https://containership.engineering/dynamodb-to-postgres-why-and-how-aa891681af4d is just one example, but there’s a few others that pop up from time to time and probably more that don’t get talked about.

                    1. 1

                      It’s sad that so many assume that object-orientation started with Smalltalk. In fact, objects, classes, sub-classing and virtual functions are from Simula. Smalltalk’s biggest addition and contribution to object-orientation was the encompassing design concept of “messaging”.

                      It is those features introduced in Simula that largely remain influential today, while Smalltalk’s “messaging”concept is effectively obsolete in a world of program design largely dominated by “data”.

                      Edit: language

                      1. 1

                        It is those features introduced in Simula that largely remain influential today, while Smalltalk’s “messaging”concept is effectively obsolete in a world of program design largely dominated by “data”.

                        Messaging isn’t an idea that occurs in every language, but it’s certainly not obsolete, just a bit esoteric. Ruby, Erlang/Elixir, and Go all prominently feature the concept, to name a few near the top.

                        1. 2

                          Messaging is an overloaded term. In Smalltalk it is specific to the sending of a non-command instruction to an object. This is unrelated to the use of the term in other contexts.

                          1. 2

                            Objective-C, remember, is Smalltalk embedded in C.

                        1. 32

                          The whole situation is… embarrassing. Here’s my understanding of what’s happened so far:

                          • Rod, a higher-up member of NodeJS (TSC group, technical-steering something or another) retweets some articles that are anti-CoC.
                          • He also breaks a few moderation rules. I don’t think any of them actually targeted users, they were things like “posted information from the moderator repo to a public repo without asking permission, and didn’t clean it up after he was asked to.” I read through the list of grievances, and they all felt victimless, or minor.[1]
                          • Things snowballed.
                          • The TSC group notices these breaches and holds a vote on whether a) Rod should be removed from the group (yes/no), and whether b) Rod should be asked to leave the group. Both were a 60% vote against him leaving.[2]
                          • Some folks weren’t too pleased that he’s staying. One member of the TSC has stepped down.[3]

                          In my humble opinion, things clearly got heated and caused this whole mess. I don’t think either side is blameless here (Rod breaking moderator rules versus the community over-exaggerating the severity of his retweets). It’s stupid, and it’s drama.

                          In my not-so humble opinion, I believe this project is not going to gain any traction. It was premature, and there is no technical nature behind it. Its motivation is purely social. The fork has no maintainers, no stated goals (technical or otherwise) [4]. The way I see it, this fork does not exist to actually write code and get any work done.

                          [1] https://twitter.com/ohhoe/status/899748838302302212

                          [2] https://github.com/nodejs/TSC/issues/310#issue-251773705

                          [3] https://medium.com/@mylesborins/effective-immediately-i-am-stepping-down-from-the-nodejs-tsc-3df37c6ccbae

                          [4] https://github.com/ayojs/ayo/issues/7

                          1. 23

                            You’re starting too late; Rod’s CoC tweets were not the start of this. This is a situation that’s been ongoing for a year or two now.

                            1. 9

                              Care to share sources/links on what’s been going on?

                              1. 11

                                I don’t have any handy; a lot of this is also in-person discussions with people at varying levels of privacy. Some things have also happened in non-public venues.

                                1. 23

                                  I have no real knowledge of anything that’s going on here, but to me this and your previous comment amounts to gossiping.

                                  1. 13

                                    Call it whatever you want; all I’m saying is, boiling this situiation down to “Rod made a tweet about the CoC” is removing both context and actual other actions; even the original thread cited more than just that thing.

                                    I don’t have receipts handy because, well, that’s not the kind of thing I generally do, and I’m not directly involved, I just know almost everyone who is, on all sides.

                                    1. 12

                                      “I don’t have receipts handy because, well, that’s not the kind of thing I generally do, and I’m not directly involved”

                                      Right. You just spontaneously do politics in threads from this one to I hear the Urbit guy with no records kept since it keeps your end of the conversation neater looking. The amusing thing is that your type depends on your political schemes staying at least half-secret with moderates like me pretty open about what we’re doing and defending our beliefs or thought experiments quite openly against the hordes. You instead drop these kinds of comments in a way to evoke emotional reactions then retreat upon any close inspection.

                                      And in this one you act like you’re a casual observer of these things reporting events instead of the activist with some kind of goal you actually are. The pushing some reaction followed by backtracking or “look into things” reactions you’ve done a few times should make that more apparent here. Given that and my schedule, I’m done for the night…

                                      1. 11

                                        Okay, so I wasn’t going to reply, but one more thing.

                                        The amusing thing is that your type depends on your political schemes staying at least half-secret with moderates like me pretty open about what we’re doing and defending our beliefs or thought experiments quite openly against the hordes.

                                        If you’ll notice, what I’m saying here is that the TSC didn’t present the whole story in this issue. That’s not obscuring things, in fact, it’s the opposite. The TSC further redacted the actual list of things that were presented, as well, which is something that I’m quite critical of.

                                        If anything, I’m the one saying “there’s more information here, you should use it to inform your opinions”, not “trust me and believe X.”

                                        1. 2

                                          Ok. With that clarification, Id agree with you their redaction is the root problem that led to the heresay-looking statements I was countering. If they’re keeping the data secret, the reporting on it will look bad as a consequence.

                                  2. 5

                                    That is the kind of thing I talked about in other threads about political censorship. You implied upthread we should consider the person evil and deserving of the punishment. Let me paraphrase your justification above:

                                    “You will be charged with unlawful conduct and treason to the party. We want to sentence you to banishment. Any resistance will be appealed. Anyone wondering why will be told by party followers to accept that ‘various people said you were guilty at varying levels of privacy.’ They must take our word as that is our custom. We call this ‘expedient process’ versus the ‘due process’ some ineffective governments of old times had.”

                                    Sounds a lot scarier than an Internet without Codes of Conduct and just enforcement of civility by good moderators. One where they’re tried on specific evidence so outsiders can vet the integrity of the process. I watched that work for decades now in communities with decent moderators. Then, in the past five years or so, all kinds of people are telling me it’s impossible today without a huge list of specific, constantly-changing behavior with strong enforcement by similarly-thinking groups of people often working in secrecy with much backchanneling off-forum. Strange if not politically-motivated versus necessary for Internet civility.

                                    1. 12

                                      You implied upthread we should consider the person evil

                                      I have no idea what you’re taking about with most of this comment. I never said anything of the sort.

                                      1. 5

                                        “It was just his anti-CoC tweets that did this.”

                                        “You’re too late. It was a lot of other stuff going on that got people to come after him. I’m not going into detail. It’s secret. Take my word with whatever that implies.”

                                        “Any details past the anti-CoC tweets on what you’re referring to?”

                                        “People were saying stuff happened and I can’t/won’t talk about that. Implication here is to just trust me that negative shit is maybe associated with him via non-public events I saw or people I know. Why else would I be putting effort into posting vague implications on a public forum without any specific, public evidence about the topic? Obviously, read into this what you will based on the vague, ominous wording of my comments speaking on authority you will take on blind faith or what you perceive my political standing to be.”

                                        You’re right though. You didn’t say much at all but intended to achieve something with what little you said. Politics in action. Wonder what your political goal was there. To be clear to readers, I’m just confused by this situation I’m casually observing at a distance with a lot of upvotes on your comment maybe supporting action against someone for whom you then claimed to have no evidence against that you could share. I’m big on due process and avoiding gossipy BS. So, that was strange to me if you don’t have hidden motivations you didn’t want to share about what went on in a FOSS project of all things.

                                        1. 22

                                          I did not say that you should feel any particular way here, though I do have my own opinion. You also don’t have to trust me; I’m repeating public statements others have made here; and most of this stuff is public. I just don’t have a list of URLs handy. You could read the statements of those who have stepped down, you could read the tweets. “This is not just about one tweet” is my only real point here.

                                          Project whatever weird stuff on me you want, and ignore me if you want too. I’m not going to reply to you putting words in my mouth.

                                    2. 3

                                      Some things have also happened in non-public venues.

                                      Saying this sort of thing is exactly the sort of observation that is not falsifiable and leads to accusations of dishonesty @steveklabnik. You speak from a position of relative privilege and authority given your work with Rust and community outreach, so please act accordingly.

                                      1. 12

                                        please act accordingly

                                        Isn’t respecting the privacy of others, and not breaking their trust, acting appropriately?

                                        Again, you don’t have to believe me; most of this stuff is public, and you can read it. My point, as always, is “This situation isn’t just some random tweets about the CoC.”

                                    3. 5

                                      If TSC/issues/310 were about more than the CoC tweets and the “victimless or minor” grievances, I’d have loved to see that brought up. The way this was phrased to Node.js outsiders didn’t make any reference to earlier behavior, which is making the strong reactions to the TSC decision a bit bewildering.

                                      1. 9

                                        I agree; as I’m not on the TSC I can’t state why some things were included and some things were not. The overall situation with Rod goes farther back, regardless of what was presented at the meeting.

                                  1. 2

                                    A note from the trenches: (especially) if your Postgres workload involves lots of transactions, make sure that your AUTOVACUUM and/or VACUUM processes run often enough, and to completion.

                                    If not, you can hit an issue where the database runs out of transaction IDs – xid is an int32, and very bad things happen when you hit the ceiling. The database will dutifully shut down and come back up read-only until a VACUUM process (manual, this time) is run to clean up various toast (temp) files. This takes days to weeks.

                                    I came distressingly close to this point last fall. I woke up one day to discover that my poor DBA skills had given me about ten days to migrate off that database, because I’d been pushing it too hard for months and AUTOVACUUM wasn’t keeping up. One very stressed week later, most of that workload had been migrated to DynamoDB, and the rest we were able to transfer to a fresh Postgres DB.

                                    Here’s a blow-by-blow of when this problem took Sentry down in 2015: https://blog.sentry.io/2015/07/23/transaction-id-wraparound-in-postgres.html

                                    Anyway, I hope this anecdote saves at least one Lobster from a week like I had.

                                    1. 4

                                      Looks cool! Kinda like a people’s LabVIEW. Dataflow programming is such a convenient abstraction sometimes, and I’m glad there’s a system like this to put it in more builders’ hands.

                                      1. 4

                                        I flunked out of college just in time to enlist in the First Dot-Com Wars, but the timing also meant I was out of a job in a year and a half. I ended up taking night classes at a state school for a couple of years, then finishing a degree in EE seven years later.

                                        Would I do it again like I did it that time? I suppose so. I went to state school, so I didn’t rack up much debt. I don’t work in EE but enjoyed learning it. And having a piece of paper made it easier to get my next job and maybe the one after that, though I don’t think it’s mattered since.

                                        Would I do it again now? Not if there weren’t a damn good reason. Being poor sucks. Going to college means I would be poor again. Writing software full-time means I’m not.

                                        1. 3

                                          Being poor sucks. Going to college means I would be poor again.

                                          This is why I chose work over school in the first place. ?

                                          I totally feel this though, and I’m a little concerned about adjusting my lifestyle back to being a student. Luckily, I’m pretty shrewd anyways, so it’s probably not too big of a leap.

                                        1. 0

                                          OT but relevant here: Boy, do I fucking hate the Intercom widget. Why do people feel good about making the tab title blink for every single reader of this article? Because that’s one of the things that makes me close a tab.

                                          1. 3

                                            man. It’s a shame that computers hosted in dorm rooms are the only places code can be deployed.

                                            1. 2

                                              Only if you’re a student and wanna do it for free.

                                              1. 1

                                                TIL Google, Facebook and AWS are all run out of dorm rooms.

                                                1. 1

                                                  Yeah yeah, the possibility of running services from your dorm room was a lot more compelling in the days before $5/mo VMs. Also I am guessing that today’s MIT students have far fewer desktop computers than they used to.

                                                  Still, it’s one more way that the MIT spirit of innovation is nerfed for the current generation.

                                                  (Disclaimer: I ran services on MITnet for about 8 years, of which I was a student for 2.5)

                                                  1. 1

                                                    First of all, by doing the whole thing yourself, you learn much more than by simply pushing a couple of buttons.

                                                    We the die-hard UNIX community used to laugh at the Windows folks for pushing buttons with the mouse. Look what we’ve now become — noone really knows how shit actually works anymore without clicking those damn buttons.

                                                    1. 1

                                                      I’d argue that it’s now generally a bad idea to deploy your code as we did in the old days, by custom typing commands into a single machine’s terminal window. While it’s a good idea to know what each individual machine can do, the (good part of the) industry doesn’t really work on that model any more for externally-facing internet services.

                                                  1. 4

                                                    From the article: Rails has enough magic in it and it certainly doesn’t need any more.

                                                    That’s Rails’ entire niche! It more or less defined what a magical web framework could look like. The magic might make reasoning about a complex codebase difficult, but the project has been quite consistent in its approach to these sorts of tradeoffs. Omakase, and the chef is kind of bonkers but is clearly a genius.

                                                    1. 1

                                                      Another common use of convolution is in digital audio reverb. Consider an impulse signal – one sample at 100% amplitude, followed by infinity samples at 0. In a nutshell, if you play that sound in a physical space and record the result (the “impulse response”), you can convolve any digital audio signal with the impulse response and the result is the original signal with the physical space’s characteristic reverb applied to it. I’ve oversimplified slightly, but that’s the gist of it, and it’s an extremely flexible technique with many professional applications.

                                                      https://en.wikipedia.org/wiki/Convolution_reverb

                                                      1. 3

                                                        I’m a bit of a Scala newcomer and pretty much write all my code to run on Spark, but have completed a few of the Coursera courses. Can someone point me at the shortcomings or danger zones of Scala? To me at least it doesn’t seem like there is a language out there that is functional, type safe and expressive like Scala which works universally in back-end services, web apps, and big data apps running on Spark/Kafka/etc. The only other language that is similar in this respect is Clojure but it’s not statically typed which is something I’m drawn to coming from Python. Are there alternatives to Scala people should be looking it?

                                                        1. 7

                                                          To me, the big danger zone is that Scala has two largely incompatible groups of users. One is happy to use a better Java, the other is essentially writing Haskell on the JVM. Neither group likes the other’s code. The Haskell-flavored-Scala folks tend to be blowhards about it more often than the better-Java folks, so expect that style to win in any given project/organization. Also expect to lose people because of it. I’ve seen this happen from up close and from afar.

                                                          I wish Scala the language were separable from Scala the community. There are some great ideas in there, but I’m happier using most of them in a different language.

                                                          1. 5

                                                            F# and Ocaml seem like strong contenders. Less Ocaml, but that’s mostly because of library support.

                                                            1. 3

                                                              You can take a look at Haskell or close to Haskell languages:

                                                              At least Haskell is functional, type safe, and certainly as expressive as Scala. I used it Haskell along kafka, and for backend services as web apps. The first link talk about how it is used by tweag.io to run on Spark, I don’t have any personal experience with that.

                                                              1. 2

                                                                I do think Scala is the best language going at the moment. But there are various rough edges, partly to do with JVM compatibility and partly to do with backwards compatibility with previous versions of Scala, plus the occasional bad design decision; just stuff like null, ClassTag, the contortions needed to implement HList and Record (which largely don’t cause problems for correct code but show up in things like the error messages you get when you make a mistake), the lack of enums or any truly first-class kind of sum type….

                                                                Pitfalls to avoid: SBT, akka actors, the cake pattern, pattern matching where it’s impossible to tell safe from unsafe, monad-like types that don’t obey the laws, implicit parameters used as actual parameters (something Odersky is now promoting), lack of kind polymorphism…

                                                                In terms of alternatives F# and OCaml don’t have HKT; Haskell is an option but seems to introduce as many problems as it solves (laziness making performance reasoning hard, lack of good tooling, limited compatibility with other ecosystems). I had high hopes for Ceylon but I’ve come to think union types are the wrong thing (they’re inherently noncompositional compared to the opaque disjoint union kind of sum type). I’m excited for Idris - that seems to take the good parts of Scala and also bring something new and valuable to the table.

                                                              1. 13

                                                                The real power of with isn’t what it makes possible, it’s what it makes easy. The same could be said for any feature, or indeed language. Everything is possible in the Turing tarpit.

                                                                Monadic potshots aside, with helps me write better code – it’s easier to write, it’s dead simple to read and understand, and it works better than ad-hoc approaches to the same problem. I wouldn’t call it “Elixir’s secret weapon” exactly, but it’s a great tool to have on your belt.

                                                                1. 1

                                                                  with makes it possible to make it easy

                                                                1. 5

                                                                  Other people are talking about payments, so I’ll chime in on email.

                                                                  Running an SMTP endpoint in 2017 is as easy as it was in 1997! It’s just convincing every other email provider that you’re not a spammer that’s the issue. Expect to spend hours getting set up just so. Also expect 30% of your mail not to arrive at its destination inbox anyway, because large-volume email providers are constantly moving the goalposts for what constitutes a non-spammy domain, so what was good enough a month ago might not be good enough now. Eventually you will just sign up for Fastmail or Pobox or something and move on.

                                                                  I did exactly this last year, after having run my own email for about 15 years. It makes me feel a bit yucky inside, but my email works.

                                                                  1. 6

                                                                    My exact experience and I was going to reply the same thing.

                                                                    Unfortunately email servers are a cartel nowadays. It is impossible to guarantee delivery for a small server. I’ve done everything, my configuration is perfect, my IP reputation is pristine and I don’t even send commercial mail, just personal stuff. Doesn’t matter. Some emails are sent to the spam folder, others (especially to Microsoft servers) never get delivered.

                                                                    If you want to run of a residential IP, forget it. Most of them are directly blacklisted.

                                                                    It is a real shame. I’ve been a sysadmin since 2001, when I started college. Postfixes are my bread and butter and it hurts me to throw the towel and pay to the Email Cartel. I’m currently looking at professional (own-domain) alternatives with 100% delivery which are not Gmail, Yahoo! or Microsoft, the main offenders. Maybe Fastmail, maybe Protonmail.

                                                                    1. 3

                                                                      Same experience here. Had a postfix server running on an AWS instance. SPF and DKIM set up correctly. No sign of it on blocking lists. Still ended up in junk folders or blackholed completely.

                                                                      Now another happy Fastmail customer … one less thing to worry about.

                                                                      1. 4

                                                                        I think the AWS instance might’ve been your problem there. The AWS, OVH, Digital Ocean, etc. IP ranges are the source of a ton of spam, so have negative default reputation scores in many systems.

                                                                        On a “clean” IP with rDNS, SPF, and DKIM set up, I haven’t had deliverability problems running my own server. In my case it’s still a VPS, but one from a smaller provider. A business DSL line or a reputable colo facility would probably be even better from an IP reputation perspective.

                                                                        I should mention that I do only a low volume of manually written email though. Deliverability for high-volume stuff like newsletters or transactional mails is its own black art.

                                                                        1. 3

                                                                          Very likely correct!

                                                                          But you never get an explicit warning about this, so if whatever destination reclassifies you as “consumer DSL” or “disreputable colo” you’ll never know about it until the “hey I never heard back from you” emails start appearing. So personally I’ve given it up as not worth my time …

                                                                          1. 3

                                                                            Like @mjn I’ve not had any problems with my own mail set up (also with rDNS, SPF, DKIM, TLS, etc) but I’ve had the same primary MX IP since around 2005 so have built up a reasonable reputation I believe.

                                                                            Unfortunately building up a “good mail reputation” for an IP is very much a black art and I wouldn’t want to be doing it from scratch today. For high volume mails I wouldn’t even bother - I’d go with something like Amazon SES.

                                                                          2. 1

                                                                            Any of you checked out https://kolabnow.com/ (Aaron Seigo works there)?

                                                                      1. 4

                                                                        I’d be interested in five whys on this, starting with why you want ads and seeing where that leads. I suspect there may be some better ways to achieve your goals. So, why do you want ads?

                                                                        1. 39

                                                                          My room full of gold coins is getting too shallow to dive into.

                                                                          1. 15

                                                                            What if you reduce contrast to black on black text and we have to pay a number of bitcoins equal to the desired background color?

                                                                            1. 21

                                                                              Hackers will just highlight all the text and bypass my scheme.

                                                                              1. 3

                                                                                What about adding 500ms latency to every request. Sell this added latency monthly for target monies.

                                                                                Example: $2000 monthly target, that would be $4 for 1ms - so when you are paid $2000 monthly everything is back to normal.

                                                                                1. 7

                                                                                  This idea actually has legs. Adding a few seconds to every page load would keep the site accessible to free users but strongly encourage paid usage.

                                                                                  And OMG, I have a great idea that dovetails with this one! Get this – slow down the page load with ads.

                                                                                  1. 3

                                                                                    I shared similar idea with HN, but with more accent on adding useless bytes. It seems that it was a bit controversial:

                                                                                    https://news.ycombinator.com/item?id=14096516

                                                                            2. 2

                                                                              Have you considered other ways of generating revenue? Membership levels or premuim features? Reddit gold system? Wikipedia style begging? Job boards? Or consultant listings? Boardgamegeek style system with badges for annual supporters? Some sort of educational based system where you can connect folks wanting to learn with experts? I think it’s worth putting time into brainstorming.

                                                                              1. 19

                                                                                That sounds like a lot of extra work for me, can’t I just get money for free?

                                                                                1. 8

                                                                                  Gah, kids these days!

                                                                                  More seriously though, as someone who dislikes 99% of advertising and blocks it wherever possible, if it’s something that’s done tastefully and in moderation, I have no objection in principle. It’ll be more work, but what about an option to pay, eg, $20/year to not see the ad?

                                                                                  1. 6

                                                                                    This could be extended into a game: “Donate to keep the site ad-free” ;)

                                                                                    Have some visible marker for how many ad-free days there were donations. If the marker goes to zero, ads appear. If the community donates enough to keep the marker up, no ads. I’m not sure if advertisers would agree with this, since they probably want to have some control over the timing. Maybe it can be tweaked.

                                                                                    Economically, this is a special anti-ad, which heats up the bidding war between advertisers. If advertisers are ok with paying more, then the marker should shrink faster.

                                                                                  2. 5

                                                                                    What about a paid “hat” like… “lobster” or “supporter”, or something. Already got a hat system, then you can let people buy them for a month / year / day whatever.

                                                                                    1. 2

                                                                                      Why do you think ads won’t be a lot of work? I imagine they’ll come with a host of unintentional consequences which will end up costing you plenty of time, effort and I don’t know what else.

                                                                                      No free lunch.

                                                                              1. 2

                                                                                As long as you can convince the advertisers that their ads will be met with anything other than fleeting contempt, go for it! I’d rather just pay to use the site though.

                                                                                1. 3

                                                                                  Where Erlang uses true as a catch-all, Clojure has the :else keyword. This makes it more readable.

                                                                                  (cond
                                                                                    (< n 0) "negative"
                                                                                    (> n 0) "positive"
                                                                                    :else "zero"))
                                                                                  
                                                                                  1. 16

                                                                                    :else isn’t anything special in Clojure, it’s just truthy. The following is the same:

                                                                                    (cond
                                                                                      (< n 0) "negative"
                                                                                      (> n 0) "positive"
                                                                                      true "zero"))
                                                                                    
                                                                                    1. 5

                                                                                      I regularly use :else as the catchall clause in Elixir (same rules as Erlang). Anything truthy will work.