But seriously, though, I included everything beyond that because it’s something that has seriously degraded my enjoyment of the site. I give links posted to lobste.rs the benefit of assuming they’re gonna be interesting and good…and then I click on them and they’re yet another article talking about how women in tech are whiny or white men are the real victims or whatever. It’s tiresome, and I don’t ever want to get to the point of not assuming lobste.rs stories are interesting.
Those topics can and should be discussed, but respectfully and openly, certainly not without trolling questions.
Again, TL;DR: I spoke about politics in my post because I needed to give examples of the kinds of things I came to lobste.rs to avoid.
If I do a personal site, I’m considering a dedicated section for politics so folks can mentally filter that part of my activities. Probably quite a few sections with tags, too, to take people right to topics maximizing their happiness on the content side. How does that idea sound?
I’ll be the first to admit (and my wife reminds me regularly) that I’m…ardent…in my political beliefs. I was harsher than I should have been in my earlier posts.
I enjoy a lot of the content you’ve posted, so anything that you do to make it more accessible gets my vote.
I appreciate it. I’ll try to remember to make it easier since you’re an interesting guy with some great comments and skills. I’d hate to not have you here or there. :)
Btw, if I haven’t told you, your comment on ISP’s history, another’s on abuse specifics, and my own on What Comast Wants vs Pays (Tier 1 vs Last Mile ISP’s) got votes changed and/or complaints in about net neturality. Unlike most politics I see here, the points in those comments contained really-solid data they couldn’t argue with, showed market failure (important prerequisite to regulations), and constant abuses (call for justice/protection). I used them repeatedly on dozens to hundreds of Moderates and Republicans in real life, framing it as a necessary exception for Republicans.
I don’t know exact number that took action but the message got across to many of them. It wasn’t before that. Just wanted you to know that it helped the cause. I reuse and refine it every time the topic comes up.
That’s looks really interesting. Thanks for the link.
re “They upped their vetting criteria”
This was one of @friendlysock’s recommendations that I agreed with. Just look at the prior comments the person made on other sites, how they handled debates, and so on. I vetted the few invites a bit. Thing is, it only works if it’s (a) mandatory and (b) there’s clear standards. We’re in a debate over what would be the standards.
I also really hate the mock-innocent “but I’m only asking questions!” misogyny. Articles like yesterday’s now-deleted “Is it sexist to discuss this article?” asked for the umpteenth time if women should just stop being so whiny and reminded us that “it’s just science!” to explain the gender gap in technology.
I posted the article you’re talking about (which has not been deleted, just downvoted below zero - you can see it at: https://lobste.rs/s/i9vzxe/is_it_sexual_harassment_discuss_this ), and I’ve been a member of lobsters for a good while. I’d like to think I’m a member in as good of a standing as you are, or as anyone else who comments in good faith is.
I posted that article because I think it’s genuinely relevant to the world of technology that is on-topic at lobsters. It definitely has political implications, but that’s true of most of the articles on lobsters with the “culture” tag. The norms under which technologists interact with each other about technology are certainly part of culture, and are political, just like anything else that human beings in a group disagree upon is A tenured professor of computer science communicating in the way that Stuart Reges did about computer science gender diversity in a college setting counts as “technologists interacting with each other about technology” in my book.
I don’t want to talk about the article in this comment - there’s a thread for that, it’s https://lobste.rs/s/i9vzxe/is_it_sexual_harassment_discuss_this . But as a meta-point, @sgreben is entirely right to point out that you “I don’t want a post about JSON or parsing to turn into some political thing…” and then turned it into a political thing in the same post. I don’t actually think it’s possible to completely avoid talking about the political or ethical implications of technology on a forum devoted to talking about technology. The people who point that out in these sorts of threads are correct. But neither do I think that people with one political or ethical position with respect to technology can fairly characterize people disagreeing with them on those political and ethical positions as a lack of “high[..]-quality”.
Edit: it looks like while I was composing this post the person I was responding to deleted their response. I’m not sure what the right etiquette here is - I generally prefer not to delete things I’ve written that have become moot points, but the OP did remove the thing I was responding to as part of a larger deletion of their response, and I don’t want anyone to hold that against the OP.
Follow-up: I got tired of hacking together imagemagick commands with shell, and just rewrote the whole thing (except gifsicle/optimize) in Go: https://github.com/sgreben/yeetgif
Lessons learned:
shell was great for prototyping and became hell for further development
re-writing in Go, with the shell prototype as a “very detailed spec” was surprisingly pleasant
libraries that are written in a way that allows you to quickly fork/cut down/modify them are a blessing
making funny gifs is an incredibly attractive timesink
This might be more trivial than what you’re looking for, but one very general thing is reachability and its definition as the transitive closure of the “step” relation (reach(v) = U{reach(w) u {w} | edge(v,w)}).
Many things can be viewed as “states and steps” and “can I reach w from v?” is then often something you want to know.
Like in these slides, the reachability problem shows up in some formal methods work on model-checking transition systems. The abstract and finite state machines have been applied to tons of problem areas. That means reachability itself might benefit tons of areas through them. Just me hypothesizing there based on seeing it turn up in quite a few papers.
Slightly more meta than that, reachability as the transitive closure of steps is also a useful way to encode things for model checkers (and model finders, in my case). For example, when using using model-finding for procedural level generation, it’s straightforward to constrain structural properties of levels. But if you want to also constrain dynamic properties of levels, like “the player must be able, consistent with the game mechanics, to reach X in the generated level”, you need to encode a little declarative model of reachability. That’s often easiest to do by defining what can happen in one step first, then adding a transitive-closure rule for overall reachability. E.g. the player model in Figure 8.11 of this textbook chapter does that with a little 3-state FSM player.
I think the elephant in the room that this article doesn’t directly address is “Do the programs you write have many types of data which should never be substituted?”. If all the types in your program really are strings, and you’re just moving text around you would likely be hindered by types. If by contrast you have many different kinds of integer that should not be mixed like weight and account balance you might really benefit from stricter types.
If all the types in your program really are strings, and you’re just moving text around you would likely be hindered by types.
I’ve yet to work on a useful program where the data’s representation as a “string” was the highest level of meaning that could be assigned to that data. As soon as you get past writing a toy you will start to have to differentiate between what different string values mean, and then we are talking about types–and arguably at precisely the point where we can start to leverage the power of a (good) type system. Speaking as someone who writes Clojure as his day job, it’s clear to me that this is why core.typed exists, and why there is so much activity around clojure.spec (and schema before it)–it’s obvious that “everything is a string” (or in the case of Clojure, “everything is a map”) isn’t good enough to represent the kind of data we work with as professional programmers (and the jury is out on whether or not clojure.spec is up to the task).
So while that’s not to suggest that we always need a sophisticated type system–or that we aren’t sometimes hindered when forced to use a type system like Java’s–I think it’s fair to say that it is rarely, if ever, the case that we don’t have more meaning assigned to the values in our program above and beyond than their encoding as low-level storage representations.
I think another good example of this situation is algorithmic code - the structure one would like to express (e.g. sortedness, sub-solution optimality, graph acyclicity) is often beyond what the type system can represent. You end up with numeric arrays / matrices / edge lists without much further type structure.
At the opposite end is either unit-heavy code (as in your example) or structure-heavy code (e.g. configs / ASTs / requests), both of which significantly benefit from what a typical type system offers.
If all the types in your program really are strings, and you’re just moving text around you would likely be hindered by types.
Could you give an example of such a program? I deal with strings relatively often, but the bulk of the logic in my programs (client-side JavaScript) benefit quite a bit from types (via TypeScript).
Very cool! I really like the live updates. I’ll definitely keep this in mind!
By the way, is there a name for the query language? It might be useful to have such mini-languages as libraries - a parser that produces an AST, and maybe an interpreter skeleton. The actual interpreter code will likely be specific to the app it’s embedded in, but it’s always nice to be able to “port” your knowledge of primitives to another tool.
Yeah, I intentionally kept the language totally separate – it’s there as the lang module in the repo. There isn’t a name for it, it’s roughly based on the SumoLogic query language which was roughly based on the Splunk query language.
The interpreter is currently tied a bit too tightly to the renderer which would make it hard to reuse. It’s on my TODO list though :-)
In case anyone else doesn’t feel like reading the whole article, here’s what I took to be Stallman’s proposal:
The robust way to do that, the way that can’t be set aside at the whim of a government, is to require systems to be built so as not to collect data about a person. The basic principle is that a system must be designed not to collect certain data, if its basic function can be carried out without that data.
Given that this clearly builds on WFC, the “attribution” in the Related Work section seems rather understated to me:
The “Most Constrained Placement with Fuzzy Arc Consistency” solver is similar to the Wave Function Collapse project by @ExUtumno.
To make sure I’m not misreading the situation, I went and checked the commit log and, indeed, the first commit implementing a WFC-like algorithm - 01bc61 - has the commit message
holy shit, wave function collapse works.
The stuff before 01bc61 is from 2015 and implements something else.
In light of this, some sort of reference – say, “there’s this popular algorithm called WFC that I’m using as the starting point” – should be in the intro sentence of the article.
It’s interesting to observe how the lobste.rs debate culture forced this discussion into its most civil and productive form.
All of the above threads are a really good read for anyone trying to understand what each side’s good-faith arguments as well as their “sales pitches” look like and what their effects (on a micro scale) are.
Apropos, as far as I can tell there are 3 sides/factions to this, at least judging by the sample here. I’d be curious to hear if anyone sees a different clustering.
I have a bit of trouble to understand the point of going through 3 application rounds to take time off, not get paid and meet other people taking time off and not getting paid.
People have been doing write-ups about the benefits if you’re wondering about them. The mains ones I’m seeing across the write-ups are:
A break from mentally-taxing work to only do the work they want. People tend to do one or more fun projects there instead of those they’re usually forced to by work. It’s also common to do both concentrated learning and building activities.
Improved focus since they’ve left environments with a lot of distractions. Obviously, they might need a gameplan for email, phone notifications, etc. Based on prior data, I’ll also add their focus at RC might improve by the mental and financial commitment they made by going there. Many who might get distracted doing random stuff on the Internet at home will try harder to complete their project to avoid walking away with nothing. Double true if they lost pay like you indicated. That makes the trip more like an investment.
A crowd of people to learn from or help. They usually like listening to interesting projects others are doing there. Face-to-face provides a different experience than just Googling summaries on their Githubs or something. Regardless, I speculate that these connections with others can be a mental break from or boost for the focused projects people are doing at RC. Kind of a pause for them to let stuff process with extroverts benefting directly having people to talk to on top of that.
You might get a job. RC is run by recruiters. People with not-so-great employment doing 1-3 might have some job skills or portfolio additions to show off. That they keep funding it is either some serious charity or the fact that they’re getting enough people jobs to keep funding it. Probably a mix of both. So, there could be job-seekers visiting who would rather not be doing 20-30 sessions of whiteboard coding in front of non-coders assessing their skill. RC might be a better experience.
Of course, this assessment is based on just a handful of posts I’ve read written by people who visited. Anyone who visited or works there feel free to correct anything that seems off.
I would say these are all pretty spot on! I keep meaning to write a “Why RC?” page for our website that clearly and directly answers the question of why you might want to come, but for now you can get a pretty good idea by reading our about page and the things linked from it under “Further Reading”
I think the only thing missing from is that RC is about more than just the time you spend at the retreat—you’re also joining a tight-knit community of peers dedicated to teaching and learning from each other. The value of this is tremedous, but hard to capture in words. If any other RC alums want to jump in here and try to explain it I think that would be great :)
On point 4—all of RC’s operations, including our living expense grants for people underrepresented in programming, are funded by our recruiting revenue! You can read more about the career benefits of RC on our page about this and in our manual.
I’m one of many alums. Here are a couple thoughts on my experience, which I found very positive and better than regular unemployment:
I learned a lot about myself and improved a lot as a learner at RC - much more so, I think, than I would have if I had just been unemployed for a few months on my own.
I am not as involved in the alum community as I’d like to be but it sure seems fun. It’s nice to feel like you share a connection with some pretty interesting and accomplished people. It’s a diverse crew and I like seeing what different people are thinking and learning about. I also like that, collectively, the community knows a lot and will help you with your problems if you need them.
Sounds like a hacker space to me. My city has two, and if I hop onto a train I can get to another 5 in less than an hour.
The whole concept of having application rounds asking someone for permission to spend your own, free, unpaid time on the things you want to do … that sounds very foreign to me, maybe it’s just some concept that’s more widely understood in the US.
If grown-up people are unable to make an independent, autonomous decision on how to spend their time, this looks like a parenting/education failure to me.
It is not a hacker space, any more than a blank wall beneath a bridge where you can spray paint is an artist’s colony.
It’s a focused retreat for programmers to gather in one space for a period of time with other programmers, who are all there, as @jamesjporter says, to teach and learn from each other about how to be a better programmer, including theory, hardware, new models and techniques, etc.
I don’t know what else you’re misunderstanding about it, but I suggest you withhold public judgement until you learn more.
The social signal is different - “hacking on stuff” vs. “hacking on stuff, as a result of passing 3 application rounds”. Beyond that, the application filter presumably also has some sort of effect on who’s there, compared to regular “open” hacking spaces.
I have been informed that “actually decent” plots are provided by a Julia package UnicodePlots. They do indeed look rather neat, so until jp gets there, UnicodePlots does make better plots :)
Some passages in the article correspond very closely to what I usually see CoCs as: Václav Havel’s “Workers of the world, unite!” sign (from Power of the Powerless). Most people are not nearly as ideological as these documents make it look, and so the presence of a CoC mostly tells me that someone felt compelled (or was “encouraged”) to put it there.
Still, it’s undeniable that the well-timed promotion of CoCs has yielded a valuable political asset (or high value target, depending on your viewpoint).
Interesting article, however to me this everything that is wrong with open source software, in the good old days (and still around 50% of the time now) open source software (and contributions) come around when people need to solve X problem, and opensourcng your work is a great way to help others, then usually if the code is found to be useful (or in demand) then contributors join in, and before you know it you have some code you wrote to help you out on a project, working for thousands of users in ways you never expected.
“Necessity is the mother of invention” is a very fitting statement for open source (in my opinion). Creating software for a problem you don’t have (or that doesn’t exist) seems very counter productive, this whole attitude of wanting to create an open source project for “Internet points” absolutely perplexes me. If you want to help the open source community there are thousands of projects that would love the help.
Marketing open source software? I mean put it on Github with a decent readme and a search engine will take your potential users there, however if you created some software for a problem that doesn’t exist, don’t expect too much traffic.
Testing is a good point, but usually in smaller scale open source projects (or single maintainers) you write the code to solve a problem you have, maybe there are a few tests, but to me if I found a piece of software that did what I wanted, and had no tests, I would just write my own tests, we have so many users of open source software now that just seem to moan or log issues when it doesn’t work for them, when in reality they should be sending pull requests (or diffs if you took your dinosaur to work) saying “hey, cool project, I used it but noticed you had no tests, I creating the following, hope this helps”. However, I can count on my hand the amount of times I have seen pulls/diffs like this.
What part of the OP, exactly, implied that open source today is all about “Internet points”? Don’t you think that’s just a tad bit uncharitable of you?
I also think your thoughts on testing for small single maintainer projects are way off the mark. I wouldn’t be able to maintain the projects that I do if I didn’t have tests. There would just be no feasible way. I would probably need an army of clones of myself working in concert to do it.
I think basically everything else you said is off the mark too, speaking as someone that has been involved in open source since 2003 or so. I remember the “good old” days before Github, accessible CI, emphasis on docs and testing, etc., and frankly, we are in a much better state nowadays. I mean, those days sucked. Hard.
If your goal is to release something that others use and to incorporate feedback from others, then testing, documentation, distribution and all that stuff improves the sustainability of the project.
If you’re just looking to throw something over the wall and don’t care whether anyone uses it, then don’t polish it in the first place?
Like, isn’t this whole thing trivially solved by just asking the simple question, “What problem are you trying to solve?” Instead, people seem intent on bantering about “Internet points.”
If your goal is to release something that others use and to incorporate feedback from others, then testing, documentation, distribution and all that stuff improves the sustainability of the project.
This is contrary to every small OSS project I’ve ever seen. I’m speaking mostly of single person projects. Perhaps you are thinking of large, multi-person projects, e.g. Rails, Rust, etc but those usually have full-time people paid to work on the project. That’s the key bit to sustain it: a paycheck.
At this point I’m not sure what we are discussing anymore so I’ll leave it here. We are likely looking in the same direction but with different angles.
wanting to create an open source project for “Internet points” absolutely perplexes me
I think it’s money that has entered the equation, and “internet points” are just an indirect means. An upside is that now there’s an additional incentive to make things. A downside is that now there also is an additional incentive to advertise.
40-50%* of those are not advice that helps the reader, but a political position that the author wishes to advance. There’s nothing wrong with the latter, but sneaking it in under the pretence of engineering career advice only serves to increase polarisation.
* depending on how you read “Encourage everyone to participate equally”. There’s encouragement and there’s encouragement…
Java, XML, Soap, XmlRpc, Hailstorm, .NET, Jini, oh lord I can’t keep up. And that’s just in the last 12 months!
Oh simpler times when we only had 7 new technologies in the last 12 months. Also after I read that I realized this was published in 2001 and it suddenly made a lot more sense.
All they’ll talk about is peer-to-peer this, that, and the other thing. Suddenly you have peer-to-peer conferences, peer-to-peer venture capital funds, and even peer-to-peer backlash with the imbecile business journalists dripping with glee as they copy each other’s stories: “Peer To Peer: Dead!”
s/peer-to-peer/blockchain/g, this may have been from 2001 but it’s still so relevant
What are the 2018 equivalents? Obviously Blockchain: Is there anything else that has that ‘new hotness’ quality which makes it irresistible to neophiles?
To me a 10x developer is just someone who doesn’t waste time constantly, browse the internet, and takes every opportunity to work at a consistent fast pace because they enjoy winning and enjoy being on a team that wins.
I don’t know if there are a lot of 10x developers, but there are a lot of 0.10x developers.
From what I’ve seen so far this and “tying people up in zero value discussions” are the most frequently employed methods to 0.10x oneself and/or one’s team. The best way I know of to counter both of these is to clarify goals, and work backward from those:
what is the goal
how does the current activity / discussion relate to it
how do the proposed alternatives relate to it
summary, decision
(Edit: to clarify, “waste time” as in “do work the result of which does not decrease distance-to-goal”)
I have found that as long as I have meaningful work to do, I actually prefer the work to browsing. Meaningful in the sense that it has a 1) clear goal that 2) I find worthy of reaching. This can be due to the actual end goal (e.g. product / decision / situation), or it can be due to some aspect of reaching it, e.g. an interesting technical problem to solve or a challenging social situation to navigate.
yeah pretty much I’m a .10x dev right up until the work is interesting, and then I’m a mighty 1x developer. I’ll admit its something I’d like to push through and be able to merely do work for work’s sake. I can hear my father, “Stop messing around and get it done.” lol
I once worked at a place with over 500 staff developers, where people like that were fired with little hesitation. Still there were some developers that would run circles around anyone else. They’d do a week worth of mere mortal’s work in a day, and it’ll be tidy, well designed and commented throughout.
Guess you can deny people of superior skill and talent exist until your first very humbling encounter with one.
Those of us who doubt the existence of 10x developers don’t deny the existence of 5x developers, of course!
(I’m kidding, but I do think there’s something weird about the numbers used. No one thinks every dev is equally productive, how many people think they can precisely measure 10x?).
Or maybe you could be one of them if you applied yourself. (i’m teasing)
Of course highly capable people exist, frequently though what I’ve observed people calling 10x developers are actually 1x developers in an environment of 1/10x developers. I think the biggest thing that separates the highly effective individuals is actually the fact that they don’t allow themselves to spin their wheels. They defend their focus. They spend time understanding the problem before getting started. A really really good guide on like how to think effectively in this way is in G. Polya’s “How to solve it”. He talks about general problem solving strategies. Pure mathematics is like lifting weights for programmers. Get swole.
It’s always healthy to doubt your limits, a lot of people have imagined barriers after which they no longer try. Especially when it’s incorrect base strategies. A lot of people assume its that they just aren’t working hard enough, when really they just aren’t applying their effort in a constructive way. They try working harder and they hit a wall, instead they should be reevaluating their base strategies.
I don’t doubt my limits, just happen to know them. My average productivity, my burst/deathmarch productivity, how much work it takes me to burn out and how long to recover. Short of using stimulants, doubt there is much untapped cognitive potential left.
Your problem is that you view cognitive ability and effort as a primary determinants in productivity. To paint an extreme picture, the smartest mind applied to the dumbest strategy, or the hardest worker on the dumbest strategy will both still be much less successful than the dumbest laziest mind applied to the smartest strategy. In this way strategy is much more important than ability, especially if you are already mundane in your abilities.
Brilliance, blood, sweat, and tears only matter if they’re working in the right direction. Or in other words, mediocrity well applied will outpace brilliance every time.
Without addressing the content of this discussion between you and @varjag, I find your tone and implications disrespectful and condescending: “Get swole”, “It’s always healthy to doubt your limits”, “Your problem is that”. I believe this deserves to be pointed out.
Quite contrary, I think your problem is you axiomatically accept that baseline mental capabilities are roughly equal across population. Working form there, and knowing nothing about me really, you arrive that my problem-solving approaches must be lacking to account for the stark difference in productivity I claim.
So speaking of problem solving, this does not look like a productive approach.
Sorry for being a dick. I was trying to be playful but I think I was being an ass. I was admittedly trying to address things I viewed as trends but I was talking to you an individual. My view is really about how I’ve seen really really capable people faceplant, and maybe not the brightest push through. That doesn’t mean everyone can, or should try to beat the best and hardest working. Sorry for being weird and pushy I guess I’m just going through some shit I wasn’t aware I was going through.
These foundational versions of paradigms with small, useful amounts of primitives are also ideal targets for practicing formal verification. I’m saving this one for potential exercises in SPARK Ada or theorem provers if I learn them. With 60 operators, a verified APL looks quite doable. Also, it would be far from boring since the next move after single-threaded implementation would be verifying SIMD, multicore, or FPGA implementations to max performance. Might even be able to sell it if layering something useful on top given APL-style tools success in finance market.
We present the first formal semantics for [the array-computational] model, along with the first
static type system that captures the full power of the core language.
Our static semantics, a dependent type system of carefully restricted
power, is capable of describing array computations whose dimensions
cannot be determined statically. The type-checking problem is decidable
and the type system is accompanied by the usual soundness theorems.
Our type system’s principal contribution is that it serves to extract the
implicit control structure that provides so much of the language’s expressive
power, making this structure explicitly apparent at compile time
That’s really neat. Especially making it regular and work with SIMD/MIMD like I speculated about. You should make it a real submission next week in case anyone likes it who didn’t see this thread.
I’d have preferred an argument along the lines of “please stop driving down my market value by doing things for free” or just a treatment of the “software as a means to an end” view.
As it stands, the post just reads like a list of excuses, including the false dichotomy of “enthusiast” (meh) vs “pragmatist” (yay). Though that would make for a pretty decent Virgin Enthusiast vs. Chad Pragmatist meme.
You wrote
but then, in the same post,
What made you include everything past that point? Kind of bizarre, given the context.
I stared too long into the abyss. :)
But seriously, though, I included everything beyond that because it’s something that has seriously degraded my enjoyment of the site. I give links posted to lobste.rs the benefit of assuming they’re gonna be interesting and good…and then I click on them and they’re yet another article talking about how women in tech are whiny or white men are the real victims or whatever. It’s tiresome, and I don’t ever want to get to the point of not assuming lobste.rs stories are interesting.
Those topics can and should be discussed, but respectfully and openly, certainly not without trolling questions.
Again, TL;DR: I spoke about politics in my post because I needed to give examples of the kinds of things I came to lobste.rs to avoid.
If I do a personal site, I’m considering a dedicated section for politics so folks can mentally filter that part of my activities. Probably quite a few sections with tags, too, to take people right to topics maximizing their happiness on the content side. How does that idea sound?
I’ll be the first to admit (and my wife reminds me regularly) that I’m…ardent…in my political beliefs. I was harsher than I should have been in my earlier posts.
I enjoy a lot of the content you’ve posted, so anything that you do to make it more accessible gets my vote.
I appreciate it. I’ll try to remember to make it easier since you’re an interesting guy with some great comments and skills. I’d hate to not have you here or there. :)
Btw, if I haven’t told you, your comment on ISP’s history, another’s on abuse specifics, and my own on What Comast Wants vs Pays (Tier 1 vs Last Mile ISP’s) got votes changed and/or complaints in about net neturality. Unlike most politics I see here, the points in those comments contained really-solid data they couldn’t argue with, showed market failure (important prerequisite to regulations), and constant abuses (call for justice/protection). I used them repeatedly on dozens to hundreds of Moderates and Republicans in real life, framing it as a necessary exception for Republicans.
I don’t know exact number that took action but the message got across to many of them. It wasn’t before that. Just wanted you to know that it helped the cause. I reuse and refine it every time the topic comes up.
Ok, gotcha.
Does anyone know of any sites that successfully improved quality by intentionally shrinking the site? Or any research on such?
I suspect that gun.io did this. They upped their vetting criteria (resulting in e.g. me no longer being on the platform), and seem to be doing well.
(edit: fixed the link)
re gun.io
That’s looks really interesting. Thanks for the link.
re “They upped their vetting criteria”
This was one of @friendlysock’s recommendations that I agreed with. Just look at the prior comments the person made on other sites, how they handled debates, and so on. I vetted the few invites a bit. Thing is, it only works if it’s (a) mandatory and (b) there’s clear standards. We’re in a debate over what would be the standards.
Thanks. Clicking gets me a 404. Do you mean this: https://www.gun.io/
If so, that doesn’t seem to be a discussion site per se.
Yeah, sorry about the broken link - I didn’t double check. You are correct, it’s a freelance platform. I think the mechanism applies, nevertheless.
Thanks
I posted the article you’re talking about (which has not been deleted, just downvoted below zero - you can see it at: https://lobste.rs/s/i9vzxe/is_it_sexual_harassment_discuss_this ), and I’ve been a member of lobsters for a good while. I’d like to think I’m a member in as good of a standing as you are, or as anyone else who comments in good faith is.I posted that article because I think it’s genuinely relevant to the world of technology that is on-topic at lobsters. It definitely has political implications, but that’s true of most of the articles on lobsters with the “culture” tag. The norms under which technologists interact with each other about technology are certainly part of culture, and are political, just like anything else that human beings in a group disagree upon is A tenured professor of computer science communicating in the way that Stuart Reges did about computer science gender diversity in a college setting counts as “technologists interacting with each other about technology” in my book.I don’t want to talk about the article in this comment - there’s a thread for that, it’s https://lobste.rs/s/i9vzxe/is_it_sexual_harassment_discuss_this . But as a meta-point, @sgreben is entirely right to point out that you “I don’t want a post about JSON or parsing to turn into some political thing…” and then turned it into a political thing in the same post. I don’t actually think it’s possible to completely avoid talking about the political or ethical implications of technology on a forum devoted to talking about technology. The people who point that out in these sorts of threads are correct. But neither do I think that people with one political or ethical position with respect to technology can fairly characterize people disagreeing with them on those political and ethical positions as a lack of “high[..]-quality”.Edit: it looks like while I was composing this post the person I was responding to deleted their response. I’m not sure what the right etiquette here is - I generally prefer not to delete things I’ve written that have become moot points, but the OP did remove the thing I was responding to as part of a larger deletion of their response, and I don’t want anyone to hold that against the OP.
Even weirder is having infinite scroll on a website which contains a footer. It happens a lot more often than one might think.
Right, that’s a very bizarre experience! Usually ending with view-source: or browser devtools :D
Follow-up: I got tired of hacking together imagemagick commands with shell, and just rewrote the whole thing (except gifsicle/optimize) in Go: https://github.com/sgreben/yeetgif
Lessons learned:
This might be more trivial than what you’re looking for, but one very general thing is reachability and its definition as the transitive closure of the “step” relation (
reach(v) = U{reach(w) u {w} | edge(v,w)}
).Many things can be viewed as “states and steps” and “can I reach w from v?” is then often something you want to know.
Like in these slides, the reachability problem shows up in some formal methods work on model-checking transition systems. The abstract and finite state machines have been applied to tons of problem areas. That means reachability itself might benefit tons of areas through them. Just me hypothesizing there based on seeing it turn up in quite a few papers.
Slightly more meta than that, reachability as the transitive closure of steps is also a useful way to encode things for model checkers (and model finders, in my case). For example, when using using model-finding for procedural level generation, it’s straightforward to constrain structural properties of levels. But if you want to also constrain dynamic properties of levels, like “the player must be able, consistent with the game mechanics, to reach X in the generated level”, you need to encode a little declarative model of reachability. That’s often easiest to do by defining what can happen in one step first, then adding a transitive-closure rule for overall reachability. E.g. the player model in Figure 8.11 of this textbook chapter does that with a little 3-state FSM player.
I think the elephant in the room that this article doesn’t directly address is “Do the programs you write have many types of data which should never be substituted?”. If all the types in your program really are strings, and you’re just moving text around you would likely be hindered by types. If by contrast you have many different kinds of integer that should not be mixed like weight and account balance you might really benefit from stricter types.
I’ve yet to work on a useful program where the data’s representation as a “string” was the highest level of meaning that could be assigned to that data. As soon as you get past writing a toy you will start to have to differentiate between what different string values mean, and then we are talking about types–and arguably at precisely the point where we can start to leverage the power of a (good) type system. Speaking as someone who writes Clojure as his day job, it’s clear to me that this is why
core.typed
exists, and why there is so much activity aroundclojure.spec
(andschema
before it)–it’s obvious that “everything is a string” (or in the case of Clojure, “everything is a map”) isn’t good enough to represent the kind of data we work with as professional programmers (and the jury is out on whether or notclojure.spec
is up to the task).So while that’s not to suggest that we always need a sophisticated type system–or that we aren’t sometimes hindered when forced to use a type system like Java’s–I think it’s fair to say that it is rarely, if ever, the case that we don’t have more meaning assigned to the values in our program above and beyond than their encoding as low-level storage representations.
I think another good example of this situation is algorithmic code - the structure one would like to express (e.g. sortedness, sub-solution optimality, graph acyclicity) is often beyond what the type system can represent. You end up with numeric arrays / matrices / edge lists without much further type structure.
At the opposite end is either unit-heavy code (as in your example) or structure-heavy code (e.g. configs / ASTs / requests), both of which significantly benefit from what a typical type system offers.
Could you give an example of such a program? I deal with strings relatively often, but the bulk of the logic in my programs (client-side JavaScript) benefit quite a bit from types (via TypeScript).
Very cool! I really like the live updates. I’ll definitely keep this in mind!
By the way, is there a name for the query language? It might be useful to have such mini-languages as libraries - a parser that produces an AST, and maybe an interpreter skeleton. The actual interpreter code will likely be specific to the app it’s embedded in, but it’s always nice to be able to “port” your knowledge of primitives to another tool.
Yeah, I intentionally kept the language totally separate – it’s there as the
lang
module in the repo. There isn’t a name for it, it’s roughly based on the SumoLogic query language which was roughly based on the Splunk query language.The interpreter is currently tied a bit too tightly to the renderer which would make it hard to reuse. It’s on my TODO list though :-)
In case anyone else doesn’t feel like reading the whole article, here’s what I took to be Stallman’s proposal:
Given that this clearly builds on WFC, the “attribution” in the Related Work section seems rather understated to me:
To make sure I’m not misreading the situation, I went and checked the commit log and, indeed, the first commit implementing a WFC-like algorithm - 01bc61 - has the commit message
The stuff before
01bc61
is from 2015 and implements something else.In light of this, some sort of reference – say, “there’s this popular algorithm called WFC that I’m using as the starting point” – should be in the intro sentence of the article.
It’s interesting to observe how the lobste.rs debate culture forced this discussion into its most civil and productive form.
All of the above threads are a really good read for anyone trying to understand what each side’s good-faith arguments as well as their “sales pitches” look like and what their effects (on a micro scale) are.
Apropos, as far as I can tell there are 3 sides/factions to this, at least judging by the sample here. I’d be curious to hear if anyone sees a different clustering.
Yeah. I’m always impressed by civility here as I remember what happened with same topics on other sites.
We definitely need a similar place in western Europe…
Oh yes, definitely. I bet a ton of people would be interested in signing up for something like that.
Go to your local hacking space?
I have a bit of trouble to understand the point of going through 3 application rounds to take time off, not get paid and meet other people taking time off and not getting paid.
Sounds a bit like doing Erasmus…
People have been doing write-ups about the benefits if you’re wondering about them. The mains ones I’m seeing across the write-ups are:
A break from mentally-taxing work to only do the work they want. People tend to do one or more fun projects there instead of those they’re usually forced to by work. It’s also common to do both concentrated learning and building activities.
Improved focus since they’ve left environments with a lot of distractions. Obviously, they might need a gameplan for email, phone notifications, etc. Based on prior data, I’ll also add their focus at RC might improve by the mental and financial commitment they made by going there. Many who might get distracted doing random stuff on the Internet at home will try harder to complete their project to avoid walking away with nothing. Double true if they lost pay like you indicated. That makes the trip more like an investment.
A crowd of people to learn from or help. They usually like listening to interesting projects others are doing there. Face-to-face provides a different experience than just Googling summaries on their Githubs or something. Regardless, I speculate that these connections with others can be a mental break from or boost for the focused projects people are doing at RC. Kind of a pause for them to let stuff process with extroverts benefting directly having people to talk to on top of that.
You might get a job. RC is run by recruiters. People with not-so-great employment doing 1-3 might have some job skills or portfolio additions to show off. That they keep funding it is either some serious charity or the fact that they’re getting enough people jobs to keep funding it. Probably a mix of both. So, there could be job-seekers visiting who would rather not be doing 20-30 sessions of whiteboard coding in front of non-coders assessing their skill. RC might be a better experience.
Of course, this assessment is based on just a handful of posts I’ve read written by people who visited. Anyone who visited or works there feel free to correct anything that seems off.
I would say these are all pretty spot on! I keep meaning to write a “Why RC?” page for our website that clearly and directly answers the question of why you might want to come, but for now you can get a pretty good idea by reading our about page and the things linked from it under “Further Reading”
I think the only thing missing from is that RC is about more than just the time you spend at the retreat—you’re also joining a tight-knit community of peers dedicated to teaching and learning from each other. The value of this is tremedous, but hard to capture in words. If any other RC alums want to jump in here and try to explain it I think that would be great :)
On point 4—all of RC’s operations, including our living expense grants for people underrepresented in programming, are funded by our recruiting revenue! You can read more about the career benefits of RC on our page about this and in our manual.
I’m one of many alums. Here are a couple thoughts on my experience, which I found very positive and better than regular unemployment:
I learned a lot about myself and improved a lot as a learner at RC - much more so, I think, than I would have if I had just been unemployed for a few months on my own.
I am not as involved in the alum community as I’d like to be but it sure seems fun. It’s nice to feel like you share a connection with some pretty interesting and accomplished people. It’s a diverse crew and I like seeing what different people are thinking and learning about. I also like that, collectively, the community knows a lot and will help you with your problems if you need them.
Sounds like a hacker space to me. My city has two, and if I hop onto a train I can get to another 5 in less than an hour.
The whole concept of having application rounds asking someone for permission to spend your own, free, unpaid time on the things you want to do … that sounds very foreign to me, maybe it’s just some concept that’s more widely understood in the US.
If grown-up people are unable to make an independent, autonomous decision on how to spend their time, this looks like a parenting/education failure to me.
It is not a hacker space, any more than a blank wall beneath a bridge where you can spray paint is an artist’s colony.
It’s a focused retreat for programmers to gather in one space for a period of time with other programmers, who are all there, as @jamesjporter says, to teach and learn from each other about how to be a better programmer, including theory, hardware, new models and techniques, etc.
I don’t know what else you’re misunderstanding about it, but I suggest you withhold public judgement until you learn more.
The social signal is different - “hacking on stuff” vs. “hacking on stuff, as a result of passing 3 application rounds”. Beyond that, the application filter presumably also has some sort of effect on who’s there, compared to regular “open” hacking spaces.
I have been informed that “actually decent” plots are provided by a Julia package UnicodePlots. They do indeed look rather neat, so until
jp
gets there,UnicodePlots
does make better plots :)That was a rude comment, don’t take it personally, it looks great.
this is awesome!
Thanks for the kind words, glad you like it!
Some passages in the article correspond very closely to what I usually see CoCs as: Václav Havel’s “Workers of the world, unite!” sign (from Power of the Powerless). Most people are not nearly as ideological as these documents make it look, and so the presence of a CoC mostly tells me that someone felt compelled (or was “encouraged”) to put it there.
Still, it’s undeniable that the well-timed promotion of CoCs has yielded a valuable political asset (or high value target, depending on your viewpoint).
Reading the passage you linked is a good summary, really interesting stuff.
Interesting article, however to me this everything that is wrong with open source software, in the good old days (and still around 50% of the time now) open source software (and contributions) come around when people need to solve X problem, and opensourcng your work is a great way to help others, then usually if the code is found to be useful (or in demand) then contributors join in, and before you know it you have some code you wrote to help you out on a project, working for thousands of users in ways you never expected.
“Necessity is the mother of invention” is a very fitting statement for open source (in my opinion). Creating software for a problem you don’t have (or that doesn’t exist) seems very counter productive, this whole attitude of wanting to create an open source project for “Internet points” absolutely perplexes me. If you want to help the open source community there are thousands of projects that would love the help.
Marketing open source software? I mean put it on Github with a decent readme and a search engine will take your potential users there, however if you created some software for a problem that doesn’t exist, don’t expect too much traffic.
Testing is a good point, but usually in smaller scale open source projects (or single maintainers) you write the code to solve a problem you have, maybe there are a few tests, but to me if I found a piece of software that did what I wanted, and had no tests, I would just write my own tests, we have so many users of open source software now that just seem to moan or log issues when it doesn’t work for them, when in reality they should be sending pull requests (or diffs if you took your dinosaur to work) saying “hey, cool project, I used it but noticed you had no tests, I creating the following, hope this helps”. However, I can count on my hand the amount of times I have seen pulls/diffs like this.
I have gone off on a bit of a tangent, but hey.
What part of the OP, exactly, implied that open source today is all about “Internet points”? Don’t you think that’s just a tad bit uncharitable of you?
I also think your thoughts on testing for small single maintainer projects are way off the mark. I wouldn’t be able to maintain the projects that I do if I didn’t have tests. There would just be no feasible way. I would probably need an army of clones of myself working in concert to do it.
I think basically everything else you said is off the mark too, speaking as someone that has been involved in open source since 2003 or so. I remember the “good old” days before Github, accessible CI, emphasis on docs and testing, etc., and frankly, we are in a much better state nowadays. I mean, those days sucked. Hard.
Almost like they are building a product but without any plan for sustainability.
Could you unpack that? All of those things seem beneficial with respect to sustainability.
Spend hundreds of hours building something polished, lots of users show up asking for support and then burnout happens. Who maintains the maintainers?
If your goal is to release something that others use and to incorporate feedback from others, then testing, documentation, distribution and all that stuff improves the sustainability of the project.
If you’re just looking to throw something over the wall and don’t care whether anyone uses it, then don’t polish it in the first place?
Like, isn’t this whole thing trivially solved by just asking the simple question, “What problem are you trying to solve?” Instead, people seem intent on bantering about “Internet points.”
This is contrary to every small OSS project I’ve ever seen. I’m speaking mostly of single person projects. Perhaps you are thinking of large, multi-person projects, e.g. Rails, Rust, etc but those usually have full-time people paid to work on the project. That’s the key bit to sustain it: a paycheck.
Uh, no, I’m not. I’m speaking from my experience maintaining mostly small single person projects in my free time.
Watch the “Uh”. It’s patronizing. Be kind.
At this point I’m not sure what we are discussing anymore so I’ll leave it here. We are likely looking in the same direction but with different angles.
I think it’s money that has entered the equation, and “internet points” are just an indirect means. An upside is that now there’s an additional incentive to make things. A downside is that now there also is an additional incentive to advertise.
40-50%
*
of those are not advice that helps the reader, but a political position that the author wishes to advance. There’s nothing wrong with the latter, but sneaking it in under the pretence of engineering career advice only serves to increase polarisation.*
depending on how you read “Encourage everyone to participate equally”. There’s encouragement and there’s encouragement…Oh simpler times when we only had 7 new technologies in the last 12 months. Also after I read that I realized this was published in 2001 and it suddenly made a lot more sense.
s/peer-to-peer/blockchain/g, this may have been from 2001 but it’s still so relevant
What are the 2018 equivalents? Obviously Blockchain: Is there anything else that has that ‘new hotness’ quality which makes it irresistible to neophiles?
IOT, AI/ML, Serverless and of course: microservices
Oo yes. Docker et al definitely qualify.
I forgot the most important one: kubernetes
Also of interest is the converse: what are the things that have recently lost (or are in the process of losing) this quality?
Peer to peer.
recently… :)
I’m hearing less about big data and nosql
Bigdata has folded into AI/ML or just analytics
On top of it, we have a new fad of stronger-consistency DB’s with SQL layers. One of few fads I like, too. I hope they design even more. :)
To me a 10x developer is just someone who doesn’t waste time constantly, browse the internet, and takes every opportunity to work at a consistent fast pace because they enjoy winning and enjoy being on a team that wins.
I don’t know if there are a lot of 10x developers, but there are a lot of 0.10x developers.
From what I’ve seen so far this and “tying people up in zero value discussions” are the most frequently employed methods to 0.10x oneself and/or one’s team. The best way I know of to counter both of these is to clarify goals, and work backward from those:
(Edit: to clarify, “waste time” as in “do work the result of which does not decrease distance-to-goal”)
For me browsing lobste.rs is a big one :(
I have found that as long as I have meaningful work to do, I actually prefer the work to browsing. Meaningful in the sense that it has a 1) clear goal that 2) I find worthy of reaching. This can be due to the actual end goal (e.g. product / decision / situation), or it can be due to some aspect of reaching it, e.g. an interesting technical problem to solve or a challenging social situation to navigate.
yeah pretty much I’m a .10x dev right up until the work is interesting, and then I’m a mighty 1x developer. I’ll admit its something I’d like to push through and be able to merely do work for work’s sake. I can hear my father, “Stop messing around and get it done.” lol
So how do you call someone who is 10x better than those around them then?
Someone who works at a place where most the staff browses the internet all day :V.
I once worked at a place with over 500 staff developers, where people like that were fired with little hesitation. Still there were some developers that would run circles around anyone else. They’d do a week worth of mere mortal’s work in a day, and it’ll be tidy, well designed and commented throughout.
Guess you can deny people of superior skill and talent exist until your first very humbling encounter with one.
“a week worth of mere mortal’s work in a day”
Those of us who doubt the existence of 10x developers don’t deny the existence of 5x developers, of course!
(I’m kidding, but I do think there’s something weird about the numbers used. No one thinks every dev is equally productive, how many people think they can precisely measure 10x?).
Thing is, if you distribute their work to a team of 5 people, it’ll take several days due to communication overhead. So easily that or even more.
Or maybe you could be one of them if you applied yourself. (i’m teasing)
Of course highly capable people exist, frequently though what I’ve observed people calling 10x developers are actually 1x developers in an environment of 1/10x developers. I think the biggest thing that separates the highly effective individuals is actually the fact that they don’t allow themselves to spin their wheels. They defend their focus. They spend time understanding the problem before getting started. A really really good guide on like how to think effectively in this way is in G. Polya’s “How to solve it”. He talks about general problem solving strategies. Pure mathematics is like lifting weights for programmers. Get swole.
There’s some hubris assuming you’re the only one on Lobsters familiar with mathematics :)
Thanks, but after couple decades programming professionally, am pretty certain I know my limits.
What made you think that I think that?
It’s always healthy to doubt your limits, a lot of people have imagined barriers after which they no longer try. Especially when it’s incorrect base strategies. A lot of people assume its that they just aren’t working hard enough, when really they just aren’t applying their effort in a constructive way. They try working harder and they hit a wall, instead they should be reevaluating their base strategies.
I don’t doubt my limits, just happen to know them. My average productivity, my burst/deathmarch productivity, how much work it takes me to burn out and how long to recover. Short of using stimulants, doubt there is much untapped cognitive potential left.
Your problem is that you view cognitive ability and effort as a primary determinants in productivity. To paint an extreme picture, the smartest mind applied to the dumbest strategy, or the hardest worker on the dumbest strategy will both still be much less successful than the dumbest laziest mind applied to the smartest strategy. In this way strategy is much more important than ability, especially if you are already mundane in your abilities.
Brilliance, blood, sweat, and tears only matter if they’re working in the right direction. Or in other words, mediocrity well applied will outpace brilliance every time.
Without addressing the content of this discussion between you and @varjag, I find your tone and implications disrespectful and condescending: “Get swole”, “It’s always healthy to doubt your limits”, “Your problem is that”. I believe this deserves to be pointed out.
Quite contrary, I think your problem is you axiomatically accept that baseline mental capabilities are roughly equal across population. Working form there, and knowing nothing about me really, you arrive that my problem-solving approaches must be lacking to account for the stark difference in productivity I claim.
So speaking of problem solving, this does not look like a productive approach.
Sorry for being a dick. I was trying to be playful but I think I was being an ass. I was admittedly trying to address things I viewed as trends but I was talking to you an individual. My view is really about how I’ve seen really really capable people faceplant, and maybe not the brightest push through. That doesn’t mean everyone can, or should try to beat the best and hardest working. Sorry for being weird and pushy I guess I’m just going through some shit I wasn’t aware I was going through.
No problem, happens to the best of us :)
These foundational versions of paradigms with small, useful amounts of primitives are also ideal targets for practicing formal verification. I’m saving this one for potential exercises in SPARK Ada or theorem provers if I learn them. With 60 operators, a verified APL looks quite doable. Also, it would be far from boring since the next move after single-threaded implementation would be verifying SIMD, multicore, or FPGA implementations to max performance. Might even be able to sell it if layering something useful on top given APL-style tools success in finance market.
Here’s an interesting paper about typing array programs that I came across a while ago: http://www.ccs.neu.edu/home/shivers/papers/rank-polymorphism.pdf. Summary from the abstract:
That’s really neat. Especially making it regular and work with SIMD/MIMD like I speculated about. You should make it a real submission next week in case anyone likes it who didn’t see this thread.
I was about to do just that, but apparently it has already been posted here.
I’d have preferred an argument along the lines of “please stop driving down my market value by doing things for free” or just a treatment of the “software as a means to an end” view.
As it stands, the post just reads like a list of excuses, including the false dichotomy of “enthusiast” (meh) vs “pragmatist” (yay). Though that would make for a pretty decent Virgin Enthusiast vs. Chad Pragmatist meme.