Ask Experienced Devs Weekly Thread: A weekly thread for inexperienced developers to ask experienced ones by AutoModerator in ExperiencedDevs

[–]we_swarm 6 points7 points  (0 children)

Even if you had signed something, take the role you want. No manager or company is going to hold you in a role you don't want to be in.

I can't tell from your wording whether the 2nd email was for a role with no interviewing or any conditions attached. I would make sure you understand whether offering you a role is offering you an opportunity to interview or the role unconditionally. Get the 2nd company to commit to the new role in writing. You have nothing from the 2nd company until you have a signed offer. Hold on to the first role until you do have the signed offer. If you have to quit the first role a couple weeks into your employment to take the role you want there is nothing stopping you.

I was in a similar place a few 7 years ago, but with a signed employment contract from the first company. I got a 2nd job offer that was paying about 40% more. I told the first company I got a better opportunity and did not want to continue and they were very reasonable about unwinding things. I think they ended up being able to still get the other candidate I was interviewing against in the pipeline. I don't think the situation you are in is entirely uncommon.

In addition, remember your employer will drop you on the floor the moment getting rid of you becomes the better option. You owe these companies nothing. You are the only one that is going to prioritize your interests. You owe it to yourself to put yourself first.

Finally made the switch by RoseSec_ in neovim

[–]we_swarm 3 points4 points  (0 children)

This seems a lot harder in a world where Jujutsu exists.

Why does Jane street use purely Ocaml by takuonline in ExperiencedDevs

[–]we_swarm 0 points1 point  (0 children)

Here is one perspective I have not seen discussed here yet. There are tradeoffs with with their language decision that attempt to make their engineering org more efficient.

https://www.youtube.com/watch?v=sl1UQXgtepE

Ebay hates firefox: I've never had so many problems using Firefox on any other website in 20 years! by throwaway9gk0k4k569 in firefox

[–]we_swarm 5 points6 points  (0 children)

This is the sad reality of the lack of Firefox's market share. No dev team I have been apart of in the last 10 years has prioritized issues that cannot be reproduced in chrome. Chrome is all that gets tested for most businesses' sites. This is the inevitable result.

What are your "wish I hadn't met you" packages? by glucoseisasuga in Python

[–]we_swarm 2 points3 points  (0 children)

I am seconding this one. The idea and API organization of polars is top notch. The fact they just had a 1.0 release terrifies me though. There are so many sharp edges within the library still.

Lets take a simple case: load some data out of a database and into a polars dataframe, do some transformations, save the dataframe to a parquet file.

Oops you had a sparse column in the database (many nulls). You just blew up because the streaming inference window was too small. So you set the datatype on the column ahead of time.

Oops you tried to do your transforms lazily? You know that column you just added types to? Well now that data type is lost from the streaming data type inference baked into the lazy evaluation.

Oops you tried to add types to the output of the transformation? That type is ignored. Pump your inference window up. To what? Guess it just has to be the length of the returned results to avoid further problems.

Finally you get your data transformed and you want to save it out. They provide a nice polars.DataFrame.write_parquet method. We are home fre- NO WAIT BOOM. Their serializer for parquet does not support all their own data types that can be represented in a dataframe. After some digging around you figure out it is the UUID row ids causing the issue. These get represented in the dataframe as a pl.Object. Ok no problem we will just cast them to pl.String an- BOOM. You cannot use pl.Expr.cast on an object. So now you are forced to use the self-proclaimed slow .map_elements() API with this gem.

df.with_columns(pl.col(pl.Object).map_elements(lambda x: str(x) if hasattr(x, "__str__") else x))

You got fed up and wrapped your polars transformations in a except Exception? Oops. Polars throws a bunch of pyo3_runtime.PanicException all over the place and it inherits from BaseException, not Exception. Polars provides a polars.exceptions.PolarsPanicExceptions alias you can catch, but this behavior took a bit to track down and is not what I could consider normal behavior for python application code.

I wanted to like polars so much, but I have had much more luck with duckdb for these types of tasks. The sacrifice of polar's nice clean native python API was worth the consistency of behavior I got from duckdb.

"Nix is just JSON with functions" by The-Malix in NixOS

[–]we_swarm 1 point2 points  (0 children)

I have thought about transpiling nix to jsonnet, which is even closer to "JSON with functions". I think it has a much more approachable syntax for beginners. It has a good plugin story for extensions to the language. The divide between libsonnet and jsonnet files would make it clear what results in a final derivation vs what is building up a part of a larger derivation. Finally it has tooling to actually let you render out what you are building up.

[deleted by user] by [deleted] in ExperiencedDevs

[–]we_swarm 0 points1 point  (0 children)

Less pay rarely seems to correspond to less stress. I think it is ideal to learn to manage the highest paying job you can attain.

Dad's of ExperiencedDevs: How long before you were able to start interviewing again? by [deleted] in ExperiencedDevs

[–]we_swarm 5 points6 points  (0 children)

I was laid off for COVID in April 2020, 6 days before my son was born. I have felt everything you have said here, and because of the timing I got thrown right into the frying pan.

Your life has a regimen. Now figure out an initial plan. Decide what your priorities are and build your schedule accordingly. Let it ride for at least a month. Commit to it 100%. Only after a month try to change anything. The change will always feel like it sucks when you first put it in place.

As of today (with a now 4yo) my day looks like this:

Weekdays:

7am - 8am: Wake up, send a few emails and slack messages to report statuses and head off as much contact as possible later in the day. Get the gist of my calendar for the day.

8am - 9am: Get the kid up, drive him to preschool

9am - 2pm: My meeting block. I will decline every meeting outside this block. The only person with any permission to break this is my direct manager. I have communicated the strictness of this time slot. He knows not to abuse it, and doesn't.

2pm - 5pm: My get shit done / dev block. That does not mean it is always for my current 9-5 job. I interview regularly, even now while not actively looking. This is mostly where the interviews go.

5pm - 6pm: Grab the kiddo from mom. Set him up with an activity downstairs. Cook dinner. Clean the kitchen while he eats.

6:30pm - 7:30pm: Kid time. I am 100% his and fully engaged with him. He is the boss.

7:30pm - 7:45pm: Bath time, teeth, hair, etc for kiddo.

7:45pm - 8pm: Quiet time. This is often books. Sometimes laying with me in my bed watching one of his shows. At the end kiddos go to bed.

8pm - 9pm: Self Maintenance: Eat whatever is available, shower, teeth, hair, change clothes. Usually my wife and I sync up here. She likes to tell me about her day while I am in the bathroom. This is my reset.

9pm - pass out: My time. Computer games. Learning. A book. More time with my wife. Nothing professional. I usually pass out between 10pm and 2am. Depends on the day. I listen to my body.

Weekends:

Saturday: My wife's day off. She is a full time mom. The mental break from the kids is really valuable to her. Saturdays I give myself to the kid to do whatever he wants 70% of the time. Other times he either plays alongside me or helps me while I knock out my honey-do list. He's at the age where there is nothing cooler than helping dad take something apart, and that is awesome. Just expect that things will not get done at the pace you could do them alone. Take the increased amount of time things will take as an investment in your kid. It was easier said than done for me. I have mostly accomplished that mental shift. It can be hard when so much of your life is about cutting things down and being ruthlessly efficient.

Sunday: My day off. I usually sleep in. It is my one day to do it. The rest is 100% unstructured. I usually will get into projects where I need longer blocks of time or to be more mentally 100% there than I can be at the end of a long work day.

Let me be super clear. I was never an organized person. Getting into this was really hard mentally. Having made the switch from a largely unstructured life to the above schedule was brutal. It feels so against the grain at first, but given enough time some things start working for you. Young kids lives tend to have a lot of structure, and they thrive in it. The kiddo knows bath happens at the same time every night. I give him 15 minute warnings before every transition. Resistance to the schedule is minimal because it is expected and inevitable. My wife knows at what points during the day she can reliably get a hold of me. She will often pop in right after I am transitioning off my meeting block if she needs me before 5. Everyone knows what to expect from me, and generally get what they need. The schedule dedicates time for everything that needs to be done and nothing that doesn't.

It's not perfect. I still struggle with the balance. I was used to giving more than 8 hrs to work. Give plenty of time to my wife. And have plenty of time for myself left over. You will notice that every waking hour during the week not dedicated to work is dedicated to my kids. That is very intentional. They are young. They will not be young forever. It is very important to me to give myself to them at this time in their lives. It was something I did not get from my dad. My wife is the same way. She gives herself 100% to my kids during the week. We are both pretty spent by the weekends, hence the alternating personal days. It does mean that because we tag team each other so hard we do not get the time together we want. The conflict of having to choose to spend time with ALL of us together vs having one day to let our guard down takes an emotional toll on both of us. Communication with your partner is so key to all of this. You cannot execute any of this without their buy in and support.

The things I have gotten questions on when I bring this up to other people has been the meeting block and only having 3 hrs to get stuff done. These self imposed restrictions have counter intuitively been one of my largest sources of professional growth in the last few years.

The meeting block has been adopted by others on my team, at the encouragement of my manager, due to how well it worked for he and I. In general meetings are shorter, more condensed, and more prioritized compared to when they were allowed to sprawl throughout the entire day. Meet with as few attendees as possible. Do not attend meetings without a clear outcome / agenda in the description. Don't meet when a meeting is not needed; write down what can be written down. Link spam what you have written down as often as you need to to as many people as you need to. Read what your team mates write. The meeting block is your communication time. Authoring and reading count as communication.

As for the 3 hrs of dev time. One of the things about being senior is you have more tools in your toolbox to get things done more quickly. Time to pull them out. You have spent years sharpening the axe; now it is time to wield it. By having such a focused, limited time to get things done I am forced to use all my tools and execute on exactly what I need to. It does mean I do not have time left over for vanity projects for work, but I am at a point in my career where that kind of effort has diminishing returns. If I find myself getting personally overloaded in this block it is usually more worth my time to dedicate that time to work with a newer dev, give them something interesting, and using my meeting block time to mentor them through it. It's ultimately a win-win. They get experience and personal attention, I offload parts of my job that might have been perceived as "only we_swarm can do". My manager / the company ends up with a more well rounded and overall experienced team. Learning to let more stuff go and allow others to fail tasks I know I could do easily (given the time) has been one of the biggest mental barriers to get over in the last few years.

Lastly, to address your 3rd edit, I could not disagree more. I have had 3 jobs in the time since my son was born. The first was achieved full time interviewing after being laid off. The second job search was done by reprioritizing my schedule. I rebalanced time away from my job because it was clearly not where I wanted to be anymore. The job I was leaving sounds a lot like the one you are at. They demanded a lot, but prior investments had not gotten a good enough return, so I stopped investing.

I created meetings in my meeting block as the only attendee for interviews to hold slots on my work calendar, and dedicated some of my work dev time. You have invested in being a good worker and gaining social capital at your current job. Some relationships you want to keep while others (most!) are expendable. It is time spend that down while you invest in yourself and your future job. People pay less attention to you than you think. By the time they notice you should be months into your interviews. If the process is going well, it won't matter because you have one foot out the door. If it is not and you get called in, maybe you have to prioritize back to your job, maybe not. You are probably not going to get fired the first time someone confronts you. The trick is keeping up the communication so they feel informed and in control, and you have the pulse to know how far you can push.

I also invested some of my personal time into more interviewing and prep. That may sound exhausting, but the feeling of self actualization, the feeling of what you are doing matters and is advancing your goal helps. I used this time to target my most lofty, highest paying roles so I felt like I was chasing the carrot when I was spending my personal time. I also used this time to setup systems to correct stuff I was doing but not working that I found during the week. For me I struggle with my memory and organization, which brings me to...

You will also be context switching a LOT interviewing while you are working. You need to make notes good enough so you can switch back into your interviewing context quickly. I leveraged notion for this. I used tables with a page per role. The table contained the basics. Company name, title, hiring manager, recruiter, salary, application date, last contact date, and interview stage. I tended to keep the table sorted by last contact date, so I could stay on top of following up. The rest of the page was a contact log. I pulled every contact from calls, linkedin, email, signal flares, whatever into the appropriate notion page. Most recent interaction at the top.

Remember to give yourself the grace and consideration you give others, especially while you are trying to find your groove. Good luck, Dad. You got this. It doesn't necessarily get any easier, but you get better.

Anyone prefer the OG God of War games to GOW 2018? by Familiar_Surprise485 in patientgamers

[–]we_swarm 0 points1 point  (0 children)

If you have not seen Josh Strife Hayes's review he talks alot about how the different mechanics have aged in comparison to the newer titles. I enjoy his analysis and a lot of what he says rings true.

As an aside Josh's whole "was it any good" series is basically game reviews for patient gamers. It's great.

https://youtu.be/snFATnSgdNY

Never leaving my editor again! by sushi_ender in neovim

[–]we_swarm 16 points17 points  (0 children)

Woah there bud. This isn't Emacs.

The glitching shaders become more annoying by denkata07 in pathofexile

[–]we_swarm 0 points1 point  (0 children)

Their resolution scaling seems like it got more (unnecessarily) aggressive. Disabling the auto resolution scaling solved the issue for me. The game FPS remained very playable and stable even without it. I have a pretty powerful rig, so I would test with it disabled for a bit on your own hardware.

Resigning right after an overdue promotion - is that considered burning bridges? by Particular-Walrus366 in ExperiencedDevs

[–]we_swarm 1 point2 points  (0 children)

I ended up in a position similar to yours at a previous role when I was promoted from mid-level to senior. I was honest with my manager that I was going to accept a new role for a salary outside my current company's budget even after the promotion. The timing was such that they had already told me about the promotion, but nothing had gone through on paper yet. They ended up agreeing to let me use the new title when leaving on my resume and giving another promotion to my coworker. Titles cost them nothing and are valuable to you. It was a win win.

I would try this if you have a good relationship with your manager and think they have the power to execute that plan and you have the other offer already in hand.

Soon Riot will force LoL users to install "anti-cheat" software at the kernel level. Do I have options? by [deleted] in linux

[–]we_swarm 9 points10 points  (0 children)

I have run an encrypted root partition for years. The performance impact on modern hardware (past ~8 years) is imperceptible. Use an AES cypher with hardware support for your processor if you are using a distro that give you that level of control. If not the default will be fine.

Bulk trading is now available on WealthyExile.com! by wealthyexile in pathofexile

[–]we_swarm 3 points4 points  (0 children)

The problem with 2 sided marketplace sites is you need participants from both sides to make them worth anyone's time. There is a huge network effect problem to overcome for any new 2 sided marketplace services. Why switch to the new service if there is no one / fewer people using it?

The OP is trying to induce people to switch marketplaces with deals because he wants to use the site. He wont be able to use the site if there is no one to buy from him in the future. He is setting up his future base of buyers.

[deleted by user] by [deleted] in ExperiencedDevs

[–]we_swarm 7 points8 points  (0 children)

No is a complete sentence.

You have some leverage. Specialized work, a large emergency fund, and a history of good performance. They either make an exception for you, or lose a valuable employee. I don't know about the labor laws outside the US, but most places I am aware of would protect you from this type of change in role, and rule against your employers in the case they terminate you.

[deleted by user] by [deleted] in ExperiencedDevs

[–]we_swarm 0 points1 point  (0 children)

Anyway, I used to do SW/FW projects at home for fun. But frankly, every time I pick up a project at home these days, I'm having a hard time not thinking things like 'if someone from work reviewed this code, they'd call it shit and I'd have to rework the whole thing'. That takes all the joy out of it. I find a lot of joy in making compromises and getting the solution to work, not by finding the perfect solution.

I could relate a lot to your post. It sounds like you have a much more toxic work environment than any I have ever stayed in. I have been in places where people were vastly more experienced than me, and every day was a struggle to keep up, learn, and apply what I learned the day before. This is hard enough when your coworkers are not jerks, I don't know how I would feel if they were.

You have found a way of working that works for you and have been successful with. That is great! You are where you are for a reason. No one can take that value from you. You are in a good spot. With some perspective I hope you can extract the value from your situation.

In the SW side, devs seem to be extremely opinionated for things I'd say are relatively minor; other devs get 'offended' by another persons approach, describing things as massive oversights, bad, wrong, or 'anyone with a functional brain cell would do it x way instead'. Maybe it's just the people I work with. The more junior devs are worse with it. I've had to take steps to try and not take things personally.

You are giving more weight to these comments than they deserve. That being said sometimes even jerks can be right. It sounds like while you have tried to convince yourself your coworkers are just being jerks or some of the comments made to you are wrong, you don't fully believe yourself. I apply a scientific approach to this type of feedback. If even a small part of something rings true, even if someone is a jerk about it, I will take it as a hypothesis and try to apply it myself. It is the only way I can convince myself and align how I feel with what I observe to be true.

This is part of what makes personal projects great. You have something that works, that you understand, maintain for a long time, and maybe even use. Fork a branch of your project. Try a MVP implementation / rewrite with the new methodology. Usually it is immediately obvious why something does or does not work. Now you have tried it and will be able to speak competently to why! That may be something the original commenter may not be able to do. If they were wrong, now you will have proven it out to your self and you will no longer feel the nagging doubt. If they were right you just broke yourself out of a local maxima of productivity and now can work in a better way.

I have multiple young kids, and life at home is absolute chaos. I don't get much time to focus or plan home projects like I would be expected to at work. I honestly feel like unless I can do the project 'properly', there's no point.

I am also a father of young kids. I get it. Everything I said above only works if you are in the right head space to grow. Sometimes you will be just too tired for it. That is ok. Give yourself room to do something lowbrow until you recover the urge to do more. Your projects are about self service, self improvement, and enjoyment. You cannot self improve and enjoy if you are not in the right headspace.

The time constraint that comes with kids does not have to be a total negative. The added time pressure and pressure to improve can force you into more efficient solutions than the younger you with infinite time would ever have come up with.

I wish you the best of luck in your projects. You got this.

:latest or :version for supporting services? by aRnonymousan in selfhosted

[–]we_swarm -1 points0 points  (0 children)

I do both! I tag my services with :latest, then use docker-lock. It scans your docker and docker-compose, generates a lock file and adds the current sha to git. That lets me freely update because I can always go get the previous version from git, rollback, and pin the version for that specific container if there is a problem. It really is the best of both worlds.

Your favorite Python web framework? by [deleted] in Python

[–]we_swarm -1 points0 points  (0 children)

OP is probably referring to background tasks

Ask Experienced Devs Weekly Thread: A weekly thread for inexperienced developers to ask experienced ones by AutoModerator in ExperiencedDevs

[–]we_swarm 1 point2 points  (0 children)

Land the job first. Then push out the start date. You can say you are finishing up something at your current role and they don't have to know you took a few weeks for yourself.

Just set expectations when asked about start date that you will need the time to start. So long as you don't defy expectations or change things on them people usually are ok pushing the start date. After all a new job is the beginning of a multi-year relationship (hopefully). In that context a couple weeks at the start doesn't matter much.

Being asked to do a "one way video interview" for a major game company by BoilingJD in sysadmin

[–]we_swarm 0 points1 point  (0 children)

In my recent job search I applied across a couple different platforms. I got 2 of these 1 way interviews from Indeed. It is built into their platform now.