I tried using advent to learn haskell a couple years ago and got stuck a few days in. It’s hard to not only figure out the tricky problems but also figure out how to express them in a new language. Good luck!
thanks!
I think … that the expression part is not going to be the real problem here. I’ve dabbled a bit with Haskell before and actually do functional programming quite a bit. It’s just that I’m stuck at the point where I want to apply the more “haskelly” concepts in the appropriate way.
If you’re up to it again this year, let me know, I’m more than willing to act as a sparring partner (c.l. not as a Haskell expert ;-)).
That’s a very kind offer! I’m not willing to commit to doing all the problems, but I’ll give it a shot again this year and see how far I get. And if you post your updates here or add an RSS feed, I’ll try to keep track.
Just did! part 2
Hi all, author here. First time I published something that remotely resembles an article. Was “encouraged” by another Lobsters users to publish, so went ahead and bit the bullet.
Posting here mainly to get feedback, I’m a grown-up (at least my wife tells me) so please don’t hold back. An working on second set of “notes” in my preparations for this years AOC.
I try to use new or unfamiliar languages for AOC and Haskell is a bit of a step too far for me, but will be following your progress keenly. Good luck and thanks for sharing!
I may have been that Lobster, and I strongly endorse this post. I will try and do the same, as I too want to spend more time with AOC and Haskell. Hopefully this year I won’t bounce off those wretched interpreters, like I do every year.
And here’s my version of your post! Let’s try and keep this going?
FWIW, Lobsters has its own Advent of Code group. I did 2017 in F# and it was fun!
Getting ready for the Advent of Code 2020. Taking up this years challenges to do more Haskell (read: learn). Preparations involve doing some solutions for last years edition and doing a small write up (mainly for co-workers) how I deal with the Haskell “plumbing” (not really the FP side). Might publish this as well, but am sort of “scared” to publish =)
Publish! I’d love to read it, myself, as a person who keeps trying (and failing) to do the full AoC in Haskell.
Thanks for the encouragement, will now add “create site” to publish this to my list of things for the weekend.
I want to give some feedback on the survey. (background: I did co-design the first and second Rust survey)
The demographics section feels very odd. I pull out the questions so that people here don’t have to scroll:
What is your gender?
Do you identify as transgender?
There’s a couple of issues with this: if you open up the floor for diverse genders, you should go all in. There’s people that are none of the three, most notably agender, but the list goes on. Everything else is clumsy. Second, the question on “how do you identify as transgender” is contested territory, many trans folk I know refuse that question because they are trans, not identify as.
Another issue is “Which country do you live in?”, it doesn’t poll for nationality. This might be fine, I’m just not sure what the goal of the question is, then.
I’d like to challenge them on a different territory though: they are the only identity questions asked beyond the usual (age, highest education, etc). This means that other things (e.g. disability) are ignored and thus (implicitly) communicated as uninteresting. Which begs the question: why is gender and trans so important that it is polled? What actions can be taken based on those numbers? This is a representation issue, for a good overview of the question “should we count or not”, I can highly recommend: https://media.ccc.de/v/camp2015-6876-data_and_discrimination_representing_marginalised_communities_in_data
For that reason, we have completely bypassed that question from our survey and replaced it by a pair of questions:
Those questions were reviewed from at least one person from each of the groups we list, if possible more. We’ve still run into issues in the first version, where we asked “Are you member of an underrepresented demographic?”. One of the feedback we got was black people in pre-dominantly countries being confused by the question. For that reason, we moved to the more lax question above. The second question makes the thing actionable: if someone is in a group and feels the Rust community is inaccessible because of that, we have something to follow up.
This yields a ton of better results (at the cost of some people trolling the question).
I am happy that more and more communities are doing those surveys. I’d be very interested in an experience exchange, or potentially even some standardisation, allowing us to compare results. There’s almost nothing comparative around.
I’d be super interested in how anonymization works for you. Because of the number of open question we have in our survey, we generally don’t publish the results. To our reading and research into data anonymization techniques, it’s pretty easy to still identify individuals from the data set, especially from countries that are less well populated. We do instead commit to keeping data private. Given that you do ask for things like transness, this may keep people from answering.
I also just remembered that feedback on missing demographics was given in 2017 to the first survey: https://lobste.rs/s/f5vsl9/first_annual_haskell_users_survey#c_o9l1zk, even with an offer to talk about how to design those. I wonder what was missing from our side for you to take up that offer. I found the issue for the survey, was there a review step of some sort? https://github.com/haskellweekly/haskellweekly/issues/57
Thank you for this thoughtful and thorough comment. I was clearly made in good faith and it’s helpful, yet I can’t help but feel demoralized by it. It feels impossible to get this right! There is no “survey team” – it’s just me. I don’t really consume the results of the survey, so I’m trying my best to create a set of questions that I think are broadly useful. It’s very time consuming to write the survey, collect results, react to feedback, and produce an analysis. This is on top of my day job, making the newsletter, recording the podcast, and otherwise trying to live life.
All that to say: I don’t really have the mental bandwidth to deal with this right now. I’ll reach out to you later about it.
There is no “survey team” – it’s just me.
Which, to be clear, is exactly the reason why I reach out and reached out back then: We can give you a lot of acquired knowledge, experience and practice up for grab. You don’t have to do this alone. The overload many feel in those areas is because we’re not reaching out to people that give experience, potentially from other communities - which is the reason I highlighted that I am interested to know what blocked you from reaching out, I want to fix that.
If you have the feeling that you are left alone in running this survey, I can also give some advice there.
All that to say: I don’t really have the mental bandwidth to deal with this right now. I’ll reach out to you later about it.
Fully understood and given that the survey is started, I would also recommend to not fix it this year. I’m available for any help.
yet I can’t help but feel demoralized by it. It feels impossible to get this right!
Don’t let any of this get you down. Step away and don’t sweat it for a while.
Real talk, this reads like more is going on right now than this survey. Take some time and take care of yourself. Haskell and lobster.rs will be here when you’re ready.
Sincere question: wouldn’t it be better to just leave out identity questions in general (other then age and level of education) and ask whether you “feel welcome” in the community (with add-on why question)?
I mean, some people find it interesting to talk about these kind of things (gender identity, socioeconomic status, race), I personally would consider these things irrelevant within the context of Haskell usage/adoption. Don’t get me wrong, they’re interesting on a personal level, imo just not relevant to “this context”
A couple of reasons: These things are super relevant to adoption, because the way we phrase the questions is to find blockers to adoption. People do gravitate towards communities they feel safe and accepted in and are willing to bring new people with them. It’s a natural function of having to fight less fights and having more time for code.
Case in point: the JavaScript and Python communities have a very effective outreach program towards all the groups mentioned in our survey, and we know where they stand in the language world.
Also, polling for these questions isn’t magic. There’s standard methods and on the level we operate on, any will do and especially a carbon copy from a project with more experience - I would recommend getting in touch though, to ask for the thinking behind the questions. There’s a tendency in the FOSS world to reinvent the wheel though and it’s a growing frustration point for me that while we share code, we don’t share organisational practice and learning. I am not alone in this opinion, for example the recent Roadworks Ahead PDF version study highlights the issue of uniform skill sets and devaluing of skills like surveying, managing and outreach in FOSS projects. The reason why I haven’t posted this study here is by the way: I will immediately get an “off-topic” flag (as on my feedback above).
But more to the point: “feeling welcome” is even more of a simple barometer, you can’t get a lot of actionable things out of it. FOSS communities are very uniform (that comes mainly from the fact that the access path is uniform), so it’s not uncommon that a lot of the in-group feels happy. Also, it’s hard to figure out what numbers are good and what are bad. Also, a certain base number of people will always feel not welcome - it’s a statistical process. You get in touch with a community and your first 3 interactions are bad. You check “unwelcome”.
The polling methodology above is effective because it’s simple, easily understood by readers (by asking for a feeling) and gives a quick way of feedback. The cross-referencing gives us the ability to find out that “non-English-speaking Rustaceans don’t feel welcome”. This isn’t a randomly picked variable, a common form of exclusion is grading arguments of non-English speakers by the level of people who went to debate club at school. A survey is the prime location to find out issues like this.
Also, you don’t want to run this as a separate survey. While structured, targeted polling towards communities can be useful, the general yearly survey is the right moment to answer one or two questions to find things that catch your eye. This is the one everyone answers. Some people might fall in a dimension that they hadn’t considered to every raise. Others never felt empowered to represent themselves. This might go both ways: sometimes, you find groups are unexpectedly high in representation. What are we doing right and shouldn’t break? Or, other way put: if there’s a substantially worse representation of a group in a certain locale, are we looking at a missing stair that we don’t know of?
We heavily use our survey to inform future project policy and follow up with trends and information from all of the questions very closely. None are in at random.
(WoW, thanks for your in-depth and insightful comment, pdf is on reading list for tonight)
I’ve never run a FOSS community nor do I identify as an active participant (I’ve had my first PR ever merged into IHP this week, and that was docs only), so I’m really blue on these kind of topics. Your comment makes perfect sense and - at least to me - indicate that more nuance is required in these kind of things.
While you indicate that this “is not rocket science”, I do think (and agree with OP) that this is really hard to get right. So optimizing for “don’t insult too much of my target audience” SOUNDS like a good strategy.
Thanks!
I’ve never run a FOSS community nor do I identify as an active participant (I’ve had my first PR ever merged into IHP this week, and that was docs only), so I’m really blue on these kind of topics. Your comment makes perfect sense and - at least to me - indicate that more nuance is required in these kind of things.
Note: Surveys are a effective tool to investigate passive participants. People who never spend more time on you then filling out the survey.
While you indicate that this “is not rocket science”, I do think (and agree with OP) that this is really hard to get right. So optimizing for “don’t insult too much of my target audience” SOUNDS like a good strategy.
Thanks for highlighting that, that may have come out wrong. What I’m lamenting - and it’s frustrating to me - is two factors at play:
I really don’t want to judge people doing this in their free time, my frustration comes from the amount of pain I think we could save ourselves from. Pro-active feedback for example is always better than retroactive (or missing) feedback. The retroactive may not be fixed in the moment, the missing may just leave things broken forever.
The second point can be seen again and again, especially part of those communities that are often considered “secondary skills”. My example here is conference organisation: I have to date budgeted and run 15 community conferences. My first one (eurucamp 2012) famously went bankrupt. This is terrible: you have volunteer people running a conference for 200 international people, and in the end, they are liable. This one worked out by another, older conference letting us tap into their disaster pool, looking at our budget and telling us what was our mistake. It was a classic beginner budgeting mistake. I learned 3 things here: the importance of sound budgeting, that there’s a network of conferences that support each other and that there’s a lot of solidarity going around. Had we talked to them earlier, we would have had a lot less stress.
Since then, I’m a heavy budget optimiser, particularly around volunteer budgets (easy to create, easy to come up with, making sure you are not liable yourself) and offer my experience for free to FOSS events. Yet, even in the Rust space, people are timid at asking for that 30 minute call that might save them 4 month of panic over budget. I usually help those events shortly before the event, when they already missed all deadlines for venue cancellation. I’d rather give my experience early.
The fact that our movement let people who go into liability over 40k$ and more and they are not aware that there’s an experience - and even cash pool to tap into is mind-boggling to me. There’s a number of really simple programs implemented around that on really small budgets (e.g. the Ruby Central conference grant or the Python and Wordpress Foundations small event support). But it’s not known enough in communities that this is a place people can turn to.
I have a half-written one here on budgeting: https://github.com/rust-community/events-team/blob/budget-guide/guides/CONFERENCE_BUDGETING.md (I need to run another pass through it, there’s glaring typos in there)
There’s good general books out there, but the budgeting component is often lacking. I tried to write down a bit of it, but while budgeting techniques are general, but also super local. So I prefer 30 minute coaching sessions with people.
https://www.quirksmode.org/coh/ has a conference organisers handbook that is good. It still postulates you can’t run a sizable conference under 200 EUR, had I known that before, eurucamp and RustFest wouldn’t have ended up 3-4 days affairs that cost ~100 and pay their speakers ;). The reason why I don’t write about those stunts is because I need to execute them with a team that knows about the how very well and how to trust your fundraising process.
There’s another really good PDF book by the people behind UIConf Berlin, but I can’t find it right now.
That eurucamp went bankrupt is not something we ever made very public, but all the ex-organisers speak openly about it.
I partially agree, there are factors that are probably orthogonal or at best indirect to usage (gender, nationality, country or residence), but others are probably more interesting (sex, age, languages, level of education), especially in the context of Haskell, a language with a lot of academic bagage that are intereting when asking questions on how the community is developing.
Especially nationality, country and residence can be super direct: the availability of an active meetup scene, conferences and speaker exchanges can be a huge booster. National scenes may form a (formal or informal) organisation, with organisers knowing each other and providing access to their networks. The other way around, I have also seen national scenes running into problems because of bad blood between some of the members. The latter is super hard to fix, but being aware of it can be interesting. But it isn’t uncommon that once you open a conversation channel, give people mental backing and skills to deal with situations, things improve. A lot of people connect that to “kicking people out”, which it almost always isn’t - but for example making people aware that they are having fights on the backs of others often makes them draw reasonable conclusions.
But I agree with you in general: Surveys of global scope give you a global overview. They at best give you pointers, assessment of what’s actually around can be take up to years. But “hey, we’ve seen this odd thing, got an idea?” is a good conversation starter.
BTW, I did not pick “disability” at random above, as disability is a frequent exclusion factor in programming communities. Which is odd, given that our tools of trade are rather accessible. Interesting side fact: Online conferences have btw. lead to less accessibility for blind people, as many of the platforms used are not accessible. Side subject, though.
The access to a meetup scene is more related to the region you live in, as do you live in a village in the middle of Siberia or St. Petersburg. Nationality should be irrelevant too, just because someone has a German citizenship, doesn’t have to mean that they live there or even have lived there.
The access to a meetup scene is more related to the region you live in, as do you live in a village in the middle of Siberia or St. Petersburg.
But this is very focused on a the datapoint itself.
The point I tried to work out is that it is particularly not that, aside from your extreme example. Meetups also grow and may create ways to include more people from futher away (such as running a small hackday, where people would drive to from further away). Again: organisers in a country (or adjecant ones, though it’s notable how visible borders still are!) tend to form a group, leading to a boosting effect and creating their own procedures and dynamics. The German Rust/Ruby/JavaScript organiser scene exists and is a rather mappable thing.
Nationality should be irrelevant too, just because someone has a German citizenship, doesn’t have to mean that they live there or even have lived there.
This depends heavily on the location you are in. There’s places where foreign nationals culturally have less access or more access.
Still, we may follow a red herring here:
A direct approach around the question of meetups is to actually ask for the info wanted:
I agree that the last question would be a better way to solve this specific issue, but I think that demographic questions also serve to better understand issues you didn’t know to explicity state before creating the survey.
And just to clarify, my “extreme example” intends to show that proximity to a city or a urban area is a better indicator to whether or not you interact with any community on a face-to-face basis.
The point @zge is making is that driving from Anchorage to Seattle isn’t quite the same thing as driving from Miami to New York. Driving from Tijuana to San Francisco as a Mexican national isn’t quite like either of those trips.
This doesn’t invalidate your points. My point is that answers to “If not, why” need to be quite granular to be useful.
There’s people that are none of the three, most notably agender
By definition, everything that is not male or female is non-binary.
“how do you identify as transgender” is contested territory, many trans folk I know refuse that question because they are trans, not identify as.
Interesting that you call these folks trans, only to say that they do not identify as such. Why are you invalidating their identity?
Interesting that you call these folks trans, only to say that they do not identify as such. Why are you invalidating their identity?
They are not invalidating. Re-read.
Keep my kids alive would be sweet as well, oh yeah and run/grow my consulting agency.
Star Wars, Advent of Code (4 days to catch up on) and spending a full day with my one y/o son. Just the two of us (while my s.o. entertains the other two going to a Christmas fair).
If you’re outside the USA, I have no idea what the email to SMS gateway situation is. It might not be supported at all internationally, so applications using these gateways are even less accessible.
From my experience in Germany and Austria and from some research, I don’t think that we have this kind of system. At least I never had to select my carrier from a dropdown. On the other hand, I have to admit that I do not remember many Europe-based web pages that send SMS to a number you had to enter in a web form.
A collection of what I found and remember from a guy in the other thread, but maybe more possibilities exist in each country:
I’ve used Mollie’s (now defunct) email-to-SMS gateway in the past (about 10 years ago) and it didn’t require you to know the carrier. This is in the Netherlands.
I find it confusing anyway: it seems to me that carriers must know with which carrier a number is registered in order to exchange SMS messages between subscribers of different carriers, so why can’t such a gateway also know this?
Learning Haskell via Advent of Code while still maintaining podium position on company leaderboard. Loving the problems up till now!
@work: finishing off projects; getting ready to leave software engineering professionally. @home: finishing work. :‘)
31 December will be the day…. that I’ll no longer produce software “professionally”.
Sidenote: Am I still allowed to lurk here? ;)
Not out of hate; just preventing the risk of complacency. ;-)
I’ve been earning money with software ever since I was 13 (which makes it 18 years), it’s time for a change. I’ll still keep building stuff, but it’ll be for kicks/myself instead of for deadlines/for storypoints.
@work: Starting on extracting some components from our main products big-ball-o-mud-ruby app to seperate services (a.o. in Elixir).
@!work: Nothing… waiting for a contract proposal for a potential new employer… Leaving software engineering… insert mixed feelings smiley here
Although there’s not wide agreement on what security and privacy properties a future cryptography-enhanced chat service should have, I personally feel that metadata privacy - who’s talking to who - should be a top priority, in fact even above content privacy although it’s hard to have the one without the other so that’s not a real conflict.
Existing architectures do not do this. Nothing where your list of contacts is stored server-side does this, and nothing where there’s any sort of recipient identifier by which messages can be retrieved does this. The important property is not actually that any identifier be opaque - that’s useful but not sufficient. It’s that third parties not be able to correlate the identifier with itself over time.
To meaningfully address the problem, one wants to get into onion routing protocols, graph-rendezvous algorithms, content-addressable storage, … but there’s not an obvious solution; those just seem likely to be involved. Also, the group-chat case is substantially harder than the 1:1.
Another commenter mentioned a different point in the problem-space, where it’s acceptable that there be some centralized party as long as it’s one who doesn’t have regulatory or strategic implications. That’s also legitimate, and serves some people’s needs; full metadata privacy is somewhat of a holy grail, and not necessarily a good use of time right now given the difficulty. But any discussion has to start by identifying a local optimum that serves somebody’s needs, and (once these efforts actually start to get anywhere…), there are going to be multiple attempts going on in parallel because any feasible choice is excluding somebody.
Storing metadata on a server is completely plausible (edit: HERE BE OPINION!!!) when performed encrypted and when using one-time “tokens” for your identity for every other identity (i.e. contact). As long as these tokens are derivable from something you-and-only-you have (i.e. a pbkdf like construct) you should be able to “figure it out securely”. Kinda like “anonymous pgp-subkeys”.
n.b. I’ve been toying around with this and would love some validation on these “thoughts”; I decided not to implement ‘anonymity’ in app mentioned in my other reply since it’s… “not a use case” (gotta love commercial interests ;-)).
I’m working on this - commercially - as a “behind the firewall” for companies that want to use an “IM” service like e.g. Slack but are not allowed to due to e.g. SOx.
PGP/GPG is a viable option for this; although it imposes some usability limits which are entirely acceptable when you clearly communicate to your users that these are due to security and privacy limitations.
E.g.: When “joining” a room/group-chat you’re not able to see earlier messages since these are not encrypted for you to read. This is actually a feature since it ensures the privacy of all earlier messages. Otherwise you would have to ‘unanimously agree’ on inviting a user into a channel.
Key verification is still a thing of course; actually checking fingerprints etc. This can be assisted - in our use case - by also using a companies “directory service” to store said pubkeys.
Multiple recipients; users can only read messages sent after they joined a channel. If performance becomes a problem might also consider multiparty diffie-hellman with “renegotiation” after a new users joins (same issue; can only read messages after a user joins).
Usecase allows us to define a max number of users in a channel. I.e. More than 128 users in a channel is not considered a use case.
edit: it this what you meant with “scale”?
Please let me know if you have any further considerations/concerns! Would love to discuss this further since it’s an active development/r&d project for me.
I’ve subscribed to this method for a long while but I tend to substitute ed for vim and add tmux for splits. If only there was a newer line editor that had line editing capabilities with vim keybindings…
I still love ed as an editor; I’m still not comfortable doing actual coding work in it; but I reach out to ed more and more for small config edits after reading “Actually using ed” (http://blog.sanctum.geek.nz/actually-using-ed/).
Anyone here actually using ed … for real development tasks?
I actually use it for about 90% of my daily work. I realized after years of Vim usage that I was mostly just using ex commands anyway. I’ve become fairly productive with ed aside from one issue: changing a line. That’s where the ‘line editor with line editing’ thing came from. Instead of just replacing the line, I’d love to just populate the line with the content and use a line editor to actually edit it.
I have directories filled with stalled attempts at this; there’s half-completed Go-implementation with a fork of golang.org/x/crypto/ssh/terminal, a rewrite of plan9 ed in c99 for modern *nix with linenoise, and an attempt to add linenoise with modifications to the heirloom version of ed.
More modern regex support would probably be convenient as well. On the whole I find that ed integrates well with my workflow and presents only minor annoyances. I would love to see a resurgence and remixing of the traditional line editor, however.
Have you checked out sam from plan9/p9p? Probably, as you mention working with plan9’s ed. Heck, it might be the same editor.
I’d be interested in your thoughts on it.
You know, I used it for a bit but mostly kept getting sam commands confused with ed commands. Something like 157,189n
just falls out of my fingers and I wound up just reverting back to Plan 9’s ed (which is still the version I use). The structural regular expressions are great though and I’d love to see them implemented in other editors. I should try using sam again. The few differences in commands is worth it for the structural regexs alone.
I’ve also been meaning to track down the sources for qed for archaeological purposes.
Wow, it’s neat to see that mentioned. I’ve never used it, but I read about it extensively many years ago when I was more interested in text editors. It’s always a surprise when someone else remembers!
I didn’t even know open mode was a thing but I remember reading about open mode in ed from an interview with Bill Joy:
But while we were doing that, we were sort of hacking around on ed just to add things. Chuck came in late one night and put in open mode - where you can move the cursor on the bottom line of the CRT.
The real question is how do you enable open mode in vi/vim without having a hardcopy terminal?
vim/nvi doesn’t have it. Use ex from ex-vi, then, e.g.:
% TERM=dumb /usr/bin/vi /etc/passwd
[Using open mode]
"/etc/passwd" [Read only] 24 lines, 1520 characters
root:x:0:0:root:/root:/bin/bash
...
Installed. It’s very interesting. It’ll take a little getting used the ex
commands.
ex
"/tmp/ed" [New file]
:i
No lines in the buffer
:a
the quick
brown fox
jumped
.
:.
jumped
:,
jumped
:q
No write since last change (:quit! overrides)
:q
No write since last change (:quit! overrides)
ed (plan 9)
?/tmp/ed2
i
the quick
brown fox
jumped
.
,
the quick
brown fox
jumped
q
?
q
One big thing I like about ed
is the ability to look through the scrollback and see changes as they were made, even after closing a file or while editing another file. The use of a full screen interface removes this ability. I’ll definitely play with this a bit more though. Thank you for the recommendation.
:i
this
is a t^A^E^[^[
Really nice read; this is exactly the reason why “we” are now actively using Go for our internal tooling and - since two weeks - are building some backend server stuff we used to build in Ruby in Go. Gave a short workshop three weeks ago introducing the language, the basic constructs and explaining the ecosystem and at least 3 developers here are now actively using it on a daily basis.
It’s a stupid language that actually makes it ‘semi-hard’ to do clever stuff.
In other words, Go represents a kind of Machiavellian power play, orchestrated by slow-and-careful programmers who are tired of suffering for the sins of fast-and-loose programmers. The Go documentation refers quite often to intolerable 45-minute build times suffered by the original designers, and I can’t help but imagine them sitting around and seething about all those unused imports from those “other” programmers, that is, the “bad” programmers. Their solution was not to engage and educate those programmers to change their habits, but rather design a new language that the bad programmers would be compelled to use — and tie down the language sufficiently so that “bad” practices, such as a program containing unused variables, were impossible.
C’mon son.
I don’t think there’s anything Machiavellian about designing your tools to fit your notions about correctness. It happens that Go has a lot of traction because it’s from Google, but it wears the history and prejudices of its creators happily on its sleeve. It happens that I think Pike et al are wrong about a lot of things, but it’s an honest wrongness.
Fortunately you don’t have to agree on everything while still being able to use a language someone built.
Just agree to disagree, move along people, keep calm and build awesome stuff.
Well, sure. But technologies have their creators' ideas baked into them, and to use them to their fullest you can’t be fighting all the time. If your view of the world agrees with that of Pike or Odersky or Wall, then you are off to the races and good on you; but if you want something different, or disagree with the ideology of a tool, then it’s useless to fight; switch.
OMG I handed in my dissertation last friday after like 7 full days (and one full night) of editing and writing and polishing. This was the work on Compiling Idris -> Erlang and concurrency stuff. I have a poster to prepare for next week, but should be alright.
I still have courses, including 2 courseworks, and finals to finish, but the pressure is off for the moment.
The irc channel is a true gem! Great discussions.
I will be blogging on progress (and learning) on https://bulters.dev and code will be up on https://GitHub.com/bulters/aoc20
Good luck to all participants!