Programming thread

Hi all, I am 23 and almost finished my bachelor in computer science, I worked as a firmware engineer for a small company here in Italy for almost 2 years. What I wanted to ask you all is: do you have any tips on finding jobs? Specifically in another country if possible.

Should I keep studying or is it better to get more experience under my belt? I also wanted to change the field of work to mobile programming any advice in that regard?

I don't know if this is the right boar for these questions, if not tell me and I'll post somewhere else.
 
Hi all, I am 23 and almost finished my bachelor in computer science, I worked as a firmware engineer for a small company here in Italy for almost 2 years. What I wanted to ask you all is: do you have any tips on finding jobs? Specifically in another country if possible.

Should I keep studying or is it better to get more experience under my belt? I also wanted to change the field of work to mobile programming any advice in that regard?

I don't know if this is the right boar for these questions, if not tell me and I'll post somewhere else.
Given you're effectively looking for junior positions you'll want to start trawling job boards and leveraging friends/family/acquaintances. Use LinkedIn's job board, Indeed (or your country's own equivalent), or similar aggregate. Remote hiring remains prevalent so many tech firms will post positions hiring foreigners in these places.

As for education or experience it's what you're after career-wise. A follow up degree IMO is only worthwhile if you have goal for it in mind (like chasing the academia lottery); otherwise stick with building up a portfolio, and doubly so if you didn't get any co-op or internship experience while in school. If you're after a mobile dev job for example code a simple app or mobile game, stick it on a Github repo, and use it in your resume - for juniors companies will be looking at such things first as a sign both of programming interest and general skill.

Also good to note you're going to get burned a lot during the initial job hunt. Sending out hundreds of resumes isn't unheard of, getting ghosted is fairly common. The thing is to treat the search like a job and actively improve yourself (e.g. fleshing out your portfolio) while doing it.
 
In the past I tried to learn Java and couldn't grasp it, but recently I've had to take a college tech course which is htm/html language and honestly I really like it.

Is there still usage for that sort of thing now?
 
In the past I tried to learn Java and couldn't grasp it, but recently I've had to take a college tech course which is htm/html language and honestly I really like it.

Is there still usage for that sort of thing now?
It's important to understand HTML and the DOM but very few people really still write it. These days they'll use a frontend framework like Angular or React which generates HTML from their code templates.

But if you didn't like Java but did like HTML, maybe try learning some frontend technologies like Angular?
 
It's important to understand HTML and the DOM but very few people really still write it. These days they'll use a frontend framework like Angular or React which generates HTML from their code templates.

But if you didn't like Java but did like HTML, maybe try learning some frontend technologies like Angular?
The end project for the class is to make our own website I believe so I'll see how I feel about it after I do that. But I'll look into Angular regardless.
 
Given you're effectively looking for junior positions you'll want to start trawling job boards and leveraging friends/family/acquaintances. Use LinkedIn's job board, Indeed (or your country's own equivalent), or similar aggregate. Remote hiring remains prevalent so many tech firms will post positions hiring foreigners in these places.

As for education or experience it's what you're after career-wise. A follow up degree IMO is only worthwhile if you have goal for it in mind (like chasing the academia lottery); otherwise stick with building up a portfolio, and doubly so if you didn't get any co-op or internship experience while in school. If you're after a mobile dev job for example code a simple app or mobile game, stick it on a Github repo, and use it in your resume - for juniors companies will be looking at such things first as a sign both of programming interest and general skill.

Also good to note you're going to get burned a lot during the initial job hunt. Sending out hundreds of resumes isn't unheard of, getting ghosted is fairly common. The thing is to treat the search like a job and actively improve yourself (e.g. fleshing out your portfolio) while doing it.
Thanks for the suggestions! I guess it is time to start sending out CVs. I mean if I send 10 a day for 3 month I'll reach a thousand, someone will respond by then.

Regarding the interview and the company itself anything you suggest to be on the lookout for?
 
Thanks for the suggestions! I guess it is time to start sending out CVs. I mean if I send 10 a day for 3 month I'll reach a thousand, someone will respond by then.

Regarding the interview and the company itself anything you suggest to be on the lookout for?
During my most recent job hunt, I probably did about 100 applications per month over 3 months until I finally got lucky and someone I knew inside a company gave me a referral which got me past the HR filter. I'd still get bites and phone screens though. I'd say send out a bunch over the course of a month and if you don't get much traction, try following some resume guides online to try and flip things up.

In terms of things to be on the lookout for:

1) Timed leetcode. This is not a universal disqualifier but if you're being expected to do like 3 leetcode mediums in 30 minutes, then you're not being interviewed in good faith. More often these kinds of insane technical interviews are a way for a company to get around some of the technicalities involved in hiring foreign talent because they can say, "well we couldn't find any qualified Americans who could do our leetcodes in a half-hour so we need to hire Pajeet." Pajeet has already memorized a ton of leetcode so he's always going to beat you on this unless you just do leetcode for fun or something.

2) Take home assignments that seem like the criteria is "ready for us to roll into production once we have your submission." This is just them asking you to work for free.

3) Confusion about hiring timelines. If they can't give you concrete expectations of the time between when you're interviewed and when you're expected to start, drop them.

4) Bad communication overall. If you're being ghosted or your emails aren't being responded to in a timely manner, they don't have their shit together.

5) Auto-scoring systems. If they want you to write code and they're not interested in the process behind how you approach problem-solving, only the results, then they're not serious. Excellent software devs produce wrong answers all the time using mostly correct approaches (with just one or two slip-ups). I can fix a smart person who sometimes produces a wrong answer. I can't fix a retard who can regurgitate correct answers to toy problems.

Some things that are green flags:

1) Being handed a piece of actual production code and asked to find bugs and/or analyze it. Being able to read code and talk about it is a very important skill. Serious companies will be interested in what you have to say about someone else's design and also how you operate when you're not simply coding things from scratch but have to make changes to existing (often hairy) codebases.

2) Being asked high-level, language-agnostic technical questions. Let's say you're interviewing for a Java job but your primary experience is in backend Javascript. An interviewer should be fine hearing that you understand how to use promises/callbacks in lieu of Java futures. I don't care if you don't know the specific word for how Java does something - do you understand the concept more generally?

3) Interviewers being good about answering *your* questions. I treat every interview as if it's two-way because it ultimately is. I usually have a set of my own technical questions I like to ask the hiring engineer just to make sure that they know their shit. If they respond badly to this, then drop the company immediately. If they engage with your questions in good faith and you're able to have a dialogue about a technical topic you've chosen, then that's a pretty good sign (my last interview I talked a lot about Java calling conventions).
 
Regarding the interview and the company itself anything you suggest to be on the lookout for?
Fcret answered a good chunk, but a good strategy is to also research the general culture and hiring practices of any company you're interviewing with beforehand. Glassdoor for example will often contain reviews, examples of interview questions, and general experiences so can be a very good gauge of what to expect and whether you want to join them in the first place. Caveat of course is startups and small businesses may not have much (if any), but it's saved me in the past from walking into pitfalls due to poor planning and interview practice.

Big thing without a doubt though is answering your questions, something you should always ask because it both shows your interest in the company and gives you a better sense of how they operate. For example I like asking the interviewer how well they think I'd fit in with them or the specific team with the open position. If you get a solid response you know you're in the running, if it's a bunch of ambiguity or deflection they've made their mind up or don't have their shit together. Whether you like it or not, get used to leveraging soft skills and reading social cues because they will tell you when you're wasting your time.
 
Thanks for the advices, I will keep in mind your suggestions! Particularly so the soft skills, as I am am kinda a semi-social retard and can get stuck in tense situations. I will try to come up with some questions to test the waters during the interviews. Thanks you for your time!
 
Ladies and Gentlemen, today is the 13th of September which means it's PROGRAMMERS DAY (It's only celebrated in Russia and China).
For this reason, I would like to bring to all of you this classic Russian meme song called "YOU'RE A PROGRAMMER"
In one life, I'm just a simple worker
I'm not strong, I'm not broad shouldered.
But in another, I'm a superhero
You're a programmer.
♪ If some chick's Windows crashes ♪
I drop everything and rush over there, yeah.
Your wife, your husband's been hysterical for a long time?
No problem, I'll tune the channels on the TV.
I'll reflash the Xbox, the cast iron iron and the washing machine.
No, I don't need no money, man, I don't need no money at all.
♪ You're a programmer who protects the planet ♪
Fixes everything from refrigerators to skis.
♪ The processor won't turn on or the Internet's down ♪
# Send a "Youzh" signal into space #
♪ You're a programmer, you're a programmer ♪
You, you, you, you, you, programmer.
♪ You, you, you, you, you, you, programmer ♪
♪ You, you, you, you, you, you, programmer ♪
♪ I'm a superhero, and I have a super arm ♪
♪ I use this hand to break email and VK passwords ♪
♪ I remove links from the web, by the way ♪
I have super-enhanced telepathy skills.
Just when you think, "This is bullshit!"
Expect me in a minute.
I'll fix it, one year warranty on the work.
And if something breaks, signal "Youzh" and Youzh will come.
You're a programmer who protects the planet.
Fixes everything from refrigerators to skis.
The processor won't turn on or there's no internet.
Send a "Youzh" signal into space.
♪ You're a programmer, you're a programmer ♪
You, you, you, you, you, programmer.
♪ You, you, you, you, you, you, programmer ♪
♪ You're a programmer, you're a programmer, you're a programmer ♪
To make a website - it's my pleasure
Quickly, qualitatively, always free of charge for you
To develop a blog - blogging - it's a pleasure for me.
Quickly, qualitatively, for you always free of charge
Make an avatar (ar-r) - my pleasure
Fast, high quality, always free for you
Record a track - my pleasure.
Fast, high quality, always free for you
♪ You're a programmer, a protector of the planet ♪
Fixes everything from refrigerators to skis
The processor doesn't turn on or there's no internet.
Send a "Youzh" signal to the cosmos.
♪ You, you, you, you, you, you programmer ♪
Fixes everything from refrigerators to skis.
The processor won't turn on or the Internet is down
Send a "Youzh" signal to the cosmos.
 
So it turns out both the official ESP-IDF installer(s) and the VS Code extension do not support installation of an older IDF version and an older version of the associated tools.
Anyone ever dealt with this? The project needs a specific combination for the toolchain as it's waaay too late in the dev cycle to migrate to 5.1.x..
I'm gonna try manually modifying the config files to point to the older compiler etc., but if that doesn't work, I'll probably just make an image of the PC with the correct set-up. I guess copying just the entirety of VS Code + config + env vars should work too...
 
Last edited:
Don't you just love floating point math?
1695315610588.png
 
Don't you just love floating point math?
View attachment 5354056
Binary is fun! All sorts of innocent little numbers turn out to be infinitely repeating decimals.

1695319893771.png


Actually my real question is why the binary representation it gave for 0.1 and 0.2 only have 52 significant digits. The binary64 format has room for 53 digits of mantissa if you include the first digit (always 1), and it printed 0.3 with 53 significant digits...

1695321101534.png


0.1 and 0.2 would have had a 1 in the 54th significant digit, so it appears that both of them were already rounded up. Then that rounding error is compounded when you add them together, and the sum itself has to be rounded (again, rounded up), and the sum isn't within a rounding error of 0.3 any more.
 
Last edited:
1) Timed leetcode. This is not a universal disqualifier but if you're being expected to do like 3 leetcode mediums in 30 minutes, then you're not being interviewed in good faith. More often these kinds of insane technical interviews are a way for a company to get around some of the technicalities involved in hiring foreign talent because they can say, "well we couldn't find any qualified Americans who could do our leetcodes in a half-hour so we need to hire Pajeet." Pajeet has already memorized a ton of leetcode so he's always going to beat you on this unless you just do leetcode for fun or something.

I know of a couple major projects that either failed or produced substandard results because the senior people they need to hire don't fuck around with leetcode, so the only people who got through are pajeets who are really good at finding palindromes in linked lists of binary trees or whatever, but terrible at the thing the project actually needs.
 
In order of operation:

> ([]+![])[![]+![]]

operator ! coerces truthy array object [] to a boolean true, then performs logical NOT:

([]+false)[![]+![]]

operator + coerces both operands to primitives:
  1. [Symbol.toPrimitive] is undefined for both operands
  2. [].valueOf() returns the original array object for [], which is not a primitive
  3. [].toString() is finally used, resulting in ''
at least one operand is now a type String, so it coerces false to string 'false' and performs string concatenation:

('false')[![]+![]]

operator ! again coerces the array objects to boolean and performs logical NOT:

('false')[false+![]]
('false')[false+false]

operator + again tries to convert both arguments to primitives
  1. false[Symbol.toPrimitive] is undefined
  2. false.valueOf() returns false, which is a primitive
neither operand is type String, and neither are BigInt, so both arguments are converted to numbers (boolean false to 0) and then added:

('false')[0]

and finally, the 0 property of the string 'false' is the character at the 0th position:

'f'

Obviously writing code that does all of this implicit type coercion is horrible coding practice, but still fun to work it out.
 
Last edited:
Back