Finally getting my blog re-published. I started 11 months ago and last week picked up where I left off and finished all but two layouts.
I haven’t felt like writing since 2018 but recently worked on a realistic galaxy simulation as a basis for a explorable game map and have managed to write approximately 16,000 words on the subject that I am now working on cutting back and serialising into a tutorial-like-walkthrough of how I went about researching and programming the simulation.
TIL Gerber, a company famous for knives, basically means carver. Thanks for a great link to the etymology of the name of your app! Also, it looks neat!
I am hacking awaying at Miniflux to see if I can add some features that I want. not sure if they will want to add them or if my changes will be idiomatic as I am need to go.
Doing the (emotionally challenging) work of reconnecting with people I’ve lost touch with over the years as I look for a new full-time role that won’t burn me out (which would perpetuate my loss-of-connection burn cycle).
Starting to slowly pull all my sites under a simple traefik + docker-compose deployment scheme on a new VPS instance. So far it has been relatively simple and pain free.
traefik interests me, I have always reached for nginx at first but am doing a similar server move and looking at docker-compose + nginx/traefik in order to make future migrations a bit easier (40+ domains, 50+ subdomains)
Work: I wrote an article about finding your first job as a junior
That’s a great article. I’d add a few small things:
Some parts of the world would expect a phone number, some expect a picture of you, etc
Make sure that you look up what a protected class is in the jurisdiction where you’re applying. It’s often illegal to discriminate on grounds of gender or religion, for example, and the easiest way of avoiding this in round 1 is to throw away any CVs that mention this explicitly. Including a picture is one way of doing this. I’ve also seen a reference letter which made the point that the candidate was a ‘good God-fearing’ person, which doesn’t help here. At best, you’re making extra work for HR to remove these things before passing them on. At worst, you’re being deselected because removing the information is too hard.
This also applies to the rest of that paragraph. The only information that you can legally ask about candidates in some situations is ‘do you have the right to work in this country?’ Including that information on the CV is fine, including anything else makes more work for HR to remove it before it’s passed on. Typically, there will be an explicit question on the application form about this, so you don’t need to include it.
Things like the GDPR can also apply to your CV. Receiving a CV via email is incredibly annoying for compliance: if you then send a GDPR right-to-be-forgotten request to a company that you emailed a CV to then they need to ensure that it’s deleted from every email account that it might have been forwarded to. The simplest way of complying with this requirement is to have a policy of deleting emails with CVs attached. If you want to send me your CV, send me an email with a link to where your CV is online. I then don’t have to do anything to be GDPR compliant: you can delete it from the web server if you want it to stop being public (stick in some no-cache attributes and a robots.txt to prevent anyone mirroring it). This is part of the reason that big companies have formal CV submission policies: it lets them centralise all of the compliance things.
Bonus points if you have them up Github or Gitlab for people to both see the code and the deployed version.
I can’t emphasise this enough. Your CV can tell me things about you. Your GitHub account can show me things about you. Put all of the work that you do for student projects here (not things where the assessments are repeated every year - if you do that it shows me that you have ethical problems). If you say ‘I built a thing to do X as my final-year project’, that tells me a little bit. If I can spend 5 minutes skimming the code for your implementation of X then that tells me a lot more. If you’re straight out of undergrad, the code will be bad - don’t worry, expectations will be calibrated accordingly.
If you’ve commented on PRs or submitted PRs to big projects, then that tells me something even more valuable: how good are you at giving and handling constructive feedback? A good developer at any level of expertise will always be seeking feedback and will be improving as a result. If you submit a really crappy PR, read the reviewer comments, and turn it into something good based on that, then this gives me a much stronger signal that you’re going to become a good developer than if you submit a good PR and it is merged as-is.
Every company does culture fit a little differently, which is inherently due to the fact that every company has a unique culture
At Microsoft, we don’t do ‘culture fit’ anymore because it’s basically a code word for implicit bias. Instead, we do ‘culture add’. What in your background means that you will be able to bring a different perspective to the team? For a junior developer, your professional background is likely to be very similar to every other applicant (you’ve just graduated from a university programme somewhere and may have a couple of years of experience), so what else differentiates you?
If you pass the whole interview process, you’ll get a job offer.
Not necessarily. There are usually two steps. The first is a hire/no-hire decision: is this candidate above the line. The second is a ranking: of the candidates that met the bar, who will bring the most value? If you’re at the top of the ranking, you’ll get a job offer. If you’re above the bar and the top candidate (or candidates if there are multiple positions) turns down the offer, then you’ll get one a bit later. The important thing to remember here is that:
There is a lot of margin for error. Don’t take it personally if you weren’t the top-ranked candidate, the difference between you and the top-ranked candidate is very likely to be within the error margin.
The ranking is often specific to the advertised role. You might be a better candidate overall but someone else had more directly relevant experience.
It’s fairly common to see a very strong candidate lose to another strong candidate who is a better match for the specific project. In this case, the company will want to try to encourage you to apply again for other positions.
If you got to the interview stage and had a rejection, feel free to reach out to your interviewers to ask for feedback. Done politely, interviewers generally like giving feedback if they have time.
Again, this can come with legal problems. Some companies tell you not to give any feedback in writing because that could be presented in evidence in a discrimination case (given a large enough pool of candidates, eventually you’ll find one who is a vexatious litigant, even if you somehow completely manage to eliminate all bias in your hiring). Especially if something is written quickly then it may be open to interpretation and then you have to persuade a court that a particular meaning was intended.
Often the feedback that I have to give is nothing to do with the candidate’s ability, it’s related to the evidence of that ability. This goes back to the GitHub thing. If a candidate fails to explain something in an interview then it may be that they were flustered, but if I can point at a codebase where they’ve worked on a project that demonstrates knowledge of that thing in the wash-up meeting then I can discount that bit of the interview.
@work I’m going to profile one of our import plugins and look for performance bottlenecks.
@home I’m working on a Common Lisp binding to Pulse Audio. I’m going to use it to process IQ data from my HF radio and visualize it with OpenGL. I may need a better sound card, so I’m also researching that.
$WORK: Research on tweaking our Elastic service, indexes, lifecycles, etc. So many docs, so little coding. :(
$HOME: Continuing work on my second woodworking project now that I have my tools! Already screwed up once and had to buy more lumber, so I’m on a roll. :)
Ironically I ran into issues reinstalling guix on a machine trying to document how easy it can be to install nonfree guix from scratch. Need to fix that today.
$work: continuing to write things down before doing them, to try and stop confusion/miscommunication around what I’m doing.
!$work: Bunch of things that need fixing in the house, like broken door handles. Life admin to sort out as well. Generic, unexciting week outside of work.
*work*: My mentor handed me a PyQt application that needs additional functionality added - it’s been a very…. interesting… experience…
*personal*: Almost have my handmade PIM able to capture the ~40k-item knowledge base that I have fragmented into various parts of my hard drive - and after I have the live data, it’ll be much more motivating to work on the functionality.
Teaching myself more Typescript for a work project. I don’t see myself ever not thinking of Python as my first choice in programming languages, but there’s a lot about TS I really do appreciate.
And maybe if I have any brain capacity left working on adding tag support to my GatsbyJS blog :)
Finally getting my blog re-published. I started 11 months ago and last week picked up where I left off and finished all but two layouts.
I haven’t felt like writing since 2018 but recently worked on a realistic galaxy simulation as a basis for a explorable game map and have managed to write approximately 16,000 words on the subject that I am now working on cutting back and serialising into a tutorial-like-walkthrough of how I went about researching and programming the simulation.
I would be very interested in reading that once you have it online.
Same.
Off-work, I’m making a font editor (for fun, nothing serious) implementing most things except for the UI framework (gtk) from scratch.
Screenshots: first and second
repo: https://github.com/epilys/gerb
TIL Gerber, a company famous for knives, basically means carver. Thanks for a great link to the etymology of the name of your app! Also, it looks neat!
This hits different at least in the US where Gerber is a company that deals with products for babies…
Different subcultures in the United States, home of the Gerber Legendary Blades company..
Definitely weird to draw the connection to the baby bottle company.
In my defense, I had never heard of Gerber as a blade company.
Which is especially odd given the fact that I literally collect various knives.
Amusing! My first locking folder was a gerber, as is the one on my desk.
It is more likely coming from the German last name Gerber, which is the profession of making leather.
I am hacking awaying at Miniflux to see if I can add some features that I want. not sure if they will want to add them or if my changes will be idiomatic as I am need to go.
I added patches some years ago, it was a nice process (got corrected by the maintainer, fixed the issues, code got merged).
Doing the (emotionally challenging) work of reconnecting with people I’ve lost touch with over the years as I look for a new full-time role that won’t burn me out (which would perpetuate my loss-of-connection burn cycle).
Starting to slowly pull all my sites under a simple traefik + docker-compose deployment scheme on a new VPS instance. So far it has been relatively simple and pain free.
traefik interests me, I have always reached for nginx at first but am doing a similar server move and looking at docker-compose + nginx/traefik in order to make future migrations a bit easier (40+ domains, 50+ subdomains)
The integration with docker labels makes bringing up a new site pretty much automagic.
I can’t find the blog post I used as a jumping off point but the traefik site has a basic example here:
https://doc.traefik.io/traefik/user-guides/docker-compose/basic-example/
It is pretty easy to add middleware on top of that for letsencrypt, removing www, etc.
Work: I wrote an article about finding your first job as a junior
Derw: Working on adding more examples and fixing bugs as I find them
That’s a great article. I’d add a few small things:
Make sure that you look up what a protected class is in the jurisdiction where you’re applying. It’s often illegal to discriminate on grounds of gender or religion, for example, and the easiest way of avoiding this in round 1 is to throw away any CVs that mention this explicitly. Including a picture is one way of doing this. I’ve also seen a reference letter which made the point that the candidate was a ‘good God-fearing’ person, which doesn’t help here. At best, you’re making extra work for HR to remove these things before passing them on. At worst, you’re being deselected because removing the information is too hard.
This also applies to the rest of that paragraph. The only information that you can legally ask about candidates in some situations is ‘do you have the right to work in this country?’ Including that information on the CV is fine, including anything else makes more work for HR to remove it before it’s passed on. Typically, there will be an explicit question on the application form about this, so you don’t need to include it.
Things like the GDPR can also apply to your CV. Receiving a CV via email is incredibly annoying for compliance: if you then send a GDPR right-to-be-forgotten request to a company that you emailed a CV to then they need to ensure that it’s deleted from every email account that it might have been forwarded to. The simplest way of complying with this requirement is to have a policy of deleting emails with CVs attached. If you want to send me your CV, send me an email with a link to where your CV is online. I then don’t have to do anything to be GDPR compliant: you can delete it from the web server if you want it to stop being public (stick in some no-cache attributes and a robots.txt to prevent anyone mirroring it). This is part of the reason that big companies have formal CV submission policies: it lets them centralise all of the compliance things.
I can’t emphasise this enough. Your CV can tell me things about you. Your GitHub account can show me things about you. Put all of the work that you do for student projects here (not things where the assessments are repeated every year - if you do that it shows me that you have ethical problems). If you say ‘I built a thing to do X as my final-year project’, that tells me a little bit. If I can spend 5 minutes skimming the code for your implementation of X then that tells me a lot more. If you’re straight out of undergrad, the code will be bad - don’t worry, expectations will be calibrated accordingly.
If you’ve commented on PRs or submitted PRs to big projects, then that tells me something even more valuable: how good are you at giving and handling constructive feedback? A good developer at any level of expertise will always be seeking feedback and will be improving as a result. If you submit a really crappy PR, read the reviewer comments, and turn it into something good based on that, then this gives me a much stronger signal that you’re going to become a good developer than if you submit a good PR and it is merged as-is.
At Microsoft, we don’t do ‘culture fit’ anymore because it’s basically a code word for implicit bias. Instead, we do ‘culture add’. What in your background means that you will be able to bring a different perspective to the team? For a junior developer, your professional background is likely to be very similar to every other applicant (you’ve just graduated from a university programme somewhere and may have a couple of years of experience), so what else differentiates you?
Not necessarily. There are usually two steps. The first is a hire/no-hire decision: is this candidate above the line. The second is a ranking: of the candidates that met the bar, who will bring the most value? If you’re at the top of the ranking, you’ll get a job offer. If you’re above the bar and the top candidate (or candidates if there are multiple positions) turns down the offer, then you’ll get one a bit later. The important thing to remember here is that:
It’s fairly common to see a very strong candidate lose to another strong candidate who is a better match for the specific project. In this case, the company will want to try to encourage you to apply again for other positions.
Again, this can come with legal problems. Some companies tell you not to give any feedback in writing because that could be presented in evidence in a discrimination case (given a large enough pool of candidates, eventually you’ll find one who is a vexatious litigant, even if you somehow completely manage to eliminate all bias in your hiring). Especially if something is written quickly then it may be open to interpretation and then you have to persuade a court that a particular meaning was intended.
Often the feedback that I have to give is nothing to do with the candidate’s ability, it’s related to the evidence of that ability. This goes back to the GitHub thing. If a candidate fails to explain something in an interview then it may be that they were flustered, but if I can point at a codebase where they’ve worked on a project that demonstrates knowledge of that thing in the wash-up meeting then I can discount that bit of the interview.
Taking a bus to Larnaca, and from there flying to Barcelona.
If I have time between work (busy week), I’ll finish up lark-cython and post it.
$work: apparently all sorts of stuff that nobody had really planned.
$non-work: Hopefully working on the compiler for my language Garnet. I still hate type checking but I’ve gotten a little bit of momentum again.
@work I’m going to profile one of our import plugins and look for performance bottlenecks.
@home I’m working on a Common Lisp binding to Pulse Audio. I’m going to use it to process IQ data from my HF radio and visualize it with OpenGL. I may need a better sound card, so I’m also researching that.
$WORK: Research on tweaking our Elastic service, indexes, lifecycles, etc. So many docs, so little coding. :(
$HOME: Continuing work on my second woodworking project now that I have my tools! Already screwed up once and had to buy more lumber, so I’m on a roll. :)
Ironically I ran into issues reinstalling guix on a machine trying to document how easy it can be to install nonfree guix from scratch. Need to fix that today.
Beginning my new job!
Congrats on the new job!
Work: Lot’s of hours since we are release a pretty big feature to production.
Personal: Going knee down into the Indieweb, trying to get a grab of it and thinking about how I want to create content in the future.
Weekend: Moving to a bigger DO instance to host a couple of apps I need, continue my work on a Dogs API I’m creating for fun.
$work
: continuing to write things down before doing them, to try and stop confusion/miscommunication around what I’m doing.!$work
: Bunch of things that need fixing in the house, like broken door handles. Life admin to sort out as well. Generic, unexciting week outside of work.Waiting for new c# contract work to start, working on new project idea.
*work*: My mentor handed me a PyQt application that needs additional functionality added - it’s been a very…. interesting… experience…
*personal*: Almost have my handmade PIM able to capture the ~40k-item knowledge base that I have fragmented into various parts of my hard drive - and after I have the live data, it’ll be much more motivating to work on the functionality.
work: inherited a new project with an “interesting” collections of technologies. Working through understanding and improving it.
private: consolidate my growing list of servers. I have to migrate some things around and get rid of 1 or 2. Also migrate my wireguard setup from https://github.com/naggie/dsnet/ to https://github.com/freifunkMUC/wg-access-server
Recovering from a cold
Training a GAN for generate faces of italian politics. It’s a weird idea that come in my mind after the terrible process of “new” President elections.
Teaching myself more Typescript for a work project. I don’t see myself ever not thinking of Python as my first choice in programming languages, but there’s a lot about TS I really do appreciate.
And maybe if I have any brain capacity left working on adding tag support to my GatsbyJS blog :)