Programming

levels.fyi

Thanks!

1 Like

What’s a “refresher”?
What’s ‘TC’ (as in 'a 300K +TC job)?

TC is total compensation. It wraps all your salary, stock, and bonuses into one number.

A refresher is an additional stock grant

Probably should have figured that one out. I assume you’re not counting stuff like health insurance, though. I think the + threw me off. I read it as 300K plus something else, instead of ‘over 300K’.

This one I have definitely never heard of.

Our stock is down quite a bit. I’m likely to get promoted (DS junior manager → senior manager) in a few months, but if they quote my stock at $300 when giving me RSUs instead of the $200 it is, gonna start hitting the leetcode (and DS equivalents) in the next year. I got recruiters banging down my door right now.

We’re currently quoting $300 to new hires, which is just insane. I can’t imagine many companies are this bad at doing stock price setting for RSUs, but maybe it’s just because we are crazy volatile.

Thanks.

This whole thing brings to mind a question I have always thought about.

Let’s say your employer offers you the option of either

$X worth of cash
$Y worth of stock

How low does the ratio of X to Y (i.e. X/Y) have to go before an employee will prefer to take the compensation in stock.

Yeah at my company they have some sort of magic formula that says what the stock is worth intrinsically or some bullshit. Usually it tracks about the stock’s current price, but right now it’s brutally low. The worst we had was when we were posting a $180 target and the stock was at $30

1 Like

Hi all, I have a programming scope question. For reference I do basic SQL for work and I got like halfway through a self taught Python beginners course because I was just making list after list and didn’t see any use case.

So at a basic level I’m looking to make an overlay/HUD. I play mtga and when you open a draft you are presented with 15 possible picks, you grab one and then are shown 14 possible picks in the next pack and so on until you’re down to 0.

https://imgur.com/a/g1UAZPB

What I want to do is take those cards and overlay the stats from this website

https://www.17lands.com/card_ratings

namely the ALSA (average last seen at) and the GIH WR (game in hand win rate) over the top of those possible picks. I know it’s possible because there is already an overlay here

that shows different (less useful imo) information on the cards.

My question is is this something a total noob like me could consider attempting (without spending money) and if so how long do you imagine it would take me. If not how much would someone charge to create something like this?

If the image is just image and there’s no associated text/data forget it.

If there’s data there you can see its possible. Autohotkey? Wouldn’t be easy. Would probably take me a week but I just do web so would have to learn stuff. For novices 3+ weeks I’d guess. Start with wireshark.

1 Like

Apple has new text recognition in images functionality. If you use Apple maybe you could script something that imports the photo and copies the text? Then map text to cards yourself?

Not sure if there’s other software out there that does that.

Python has some OCR libraries for this sort of thing

Yeah using AHK you can probably just sample a couple pixels at certain locations in the window and figure out what the cards are. I would definitely not recommend that a novice try this project though. The idea of trying to do it fills me with dread because I know it would be fiddly and annoying.

1 Like

MTGA pushes everything to a log file, you don’t need to do image mapping or whatever.

For example:

[UnityCrossThreadLogger]12/15/2021 10:23:18 PM
<== Event_GetCourses(d9ce961e-855e-449c-a94a-f5b405fa3c95)
{"Courses":[{"CourseId":"96ff92bd-d305-4ac8-9008-92f70a2ab41e","InternalEventName":"Constructed_BestOf3","CurrentModule":4,"ModulePayload":"","CourseDeckSummary":{"DeckId":"6f0c40ac-bd96-4186-9303-50cce2817c8a","Name":"Rakdos Midrange","Attributes":[{"name":"lastPlayed","value":"10/17/2020 8:03:29 PM"},{"name":"Format","value":"TraditionalStandard"}],"Description":"","DeckTileId":70262,"FormatLegalities":{"TraditionalStandard":true},"CardBack":"CardBack_Default","DeckValidationSummaries":[],"UnownedCards":{}},"CourseDeck":{"MainDeck":[{"cardId":70262,"quantity":4},{"cardId":70732,"quantity":4},{"cardId":73350,"quantity":4},{"cardId":70616,"quantity":3},{"cardId":70244,"quantity":2},{"cardId":70248,"quantity":2},{"cardId":71946,"quantity":2},{"cardId":73284,"quantity":2},{"cardId":73290,"quantity":3},{"cardId":73363,"quantity":2},{"cardId":70598,"quantity":1},{"cardId":73302,"quantity":2},{"cardId":71158,"quantity":3},{"cardId":71203,"quantity":1},{"cardId":73370,"quantity":2},{"cardId":70602,"quantity":1},{"cardId":70629,"quantity":3},{"cardId":70388,"quantity":1},{"cardId":72028,"quantity":1},{"cardId":70391,"quantity":3},{"cardId":75555,"quantity":4},{"cardId":75557,"quantity":6},{"cardId":70758,"quantity":4}],"ReducedSideboard":[],"Sideboard":[{"cardId":70598,"quantity":1},{"cardId":71203,"quantity":2},{"cardId":70594,"quantity":3},{"cardId":70269,"quantity":1},{"cardId":71155,"quantity":2},{"cardId":73324,"quantity":3},{"cardId":70748,"quantity":3}],"CommandZone":[],"Companions":[],"CardSkins":[]},"CardPool":[]},{"CourseId":"3b7046bd-2727-4b6e-a659-6d83a361b631","InternalEventName":"Play","CurrentModule":4,"ModulePayload":"","CourseDeckSummary":{"DeckId":"4f943673-633f-4864-bb01-285ea06a587f","Name":"Izzet","Attributes":[{"name":"Format","value":"Standard"}],"Description":"","DeckTileId":66057,"FormatLegalities":{"Standard":true},"DeckValidationSummaries":[],"UnownedCards":{}},"CourseDeck":{"MainDeck":[{"cardId":66057,"quantity":4},{"cardId":67017,"quantity":7},{"cardId":67021,"quantity":8},{"cardId":67992,"quantity":4},{"cardId":68112,"quantity":3},{"cardId":68732,"quantity":4},{"cardId":67598,"quantity":1},{"cardId":68186,"quantity":2},{"cardId":66091,"quantity":4},{"cardId":68624,"quantity":4},{"cardId":68688,"quantity":4},{"cardId":68738,"quantity":2},{"cardId":68569,"quantity":3},{"cardId":68615,"quantity":2},{"cardId":68653,"quantity":2},{"cardId":66067,"quantity":3},{"cardId":66125,"quantity":2},{"cardId":66109,"quantity":1}],"ReducedSideboard":[],"Sideboard":[],"CommandZone":[],"Companions":[],"CardSkins":[]},"CardPool":[]},{"CourseId":"ac0d0654-84d3-4080-81b9-1031fb0e2d42","InternalEventName":"Play_Brawl_Historic","CurrentModule":7,"ModulePayload":"","CourseDeckSummary":{"DeckId":"d40a8478-5aad-42b8-8a83-9222ed4e47b7","Mana":"UG","Name":"New Deck (6)","Attributes":[{"name":"Version","value":"11"},{"name":"TileID","value":"69323"},{"name":"LastPlayed","value":"\"2021-08-25T23:06:46.6436021\""},{"name":"LastUpdated","value":"\"2021-08-25T23:06:42.0205417\""},{"name":"IsFavorite","value":"false"},{"name":"Format","value":"HistoricBrawl"}],"DeckTileId":69323,"FormatLegalities":{},"DeckValidationSummaries":[],"UnownedCards":{}},"CourseDeck":{"MainDeck":[{"cardId":69828,"quantity":1},{"cardId":77467,"quantity":16},{"cardId":50873,"quantity":1},{"cardId":73976,"quantity":1},{"cardId":77479,"quantity":16},{"cardId":70456,"quantity":1},{"cardId":72447,"quantity":1},{"cardId":68164,"quantity":1},{"cardId":69600,"quantity":1},{"cardId":69501,"quantity":1},{"cardId":61419,"quantity":1},{"cardId":75231,"quantity":1},{"cardId":73402,"quantity":1},{"cardId":77305,"quantity":1},{"cardId":72504,"quantity":1},{"cardId":73827,"quantity":1},{"cardId":69839,"quantity":1},{"cardId":67790,"quantity":1},{"cardId":73249,"quantity":1},{"cardId":68040,"quantity":1},{"cardId":66889,"quantity":1},{"cardId":71975,"quantity":1},{"cardId":68072,"quantity":1},{"cardId":69519,"quantity":1},{"cardId":76626,"quantity":1},{"cardId":69302,"quantity":1},{"cardId":72021,"quantity":1},{"cardId":50943,"quantity":1},{"cardId":69837,"quantity":1},{"cardId":69250,"quantity":1},{"cardId":69952,"quantity":1},{"cardId":72498,"quantity":1},{"cardId":71229,"quantity":1},{"cardId":73985,"quantity":1},{"cardId":70389,"quantity":1},{"cardId":73267,"quantity":1},{"cardId":70387,"quantity":1},{"cardId":73420,"quantity":1},{"cardId":73386,"quantity":1},{"cardId":73425,"quantity":1},{"cardId":75859,"quantity":1},{"cardId":69394,"quantity":1},{"cardId":67584,"quantity":1},{"cardId":70040,"quantity":1},{"cardId":76682,"quantity":1},{"cardId":77494,"quantity":1},{"cardId":75268,"quantity":1},{"cardId":76625,"quantity":1},{"cardId":76585,"quantity":1},{"cardId":71856,"quantity":1},{"cardId":71137,"quantity":1},{"cardId":77495,"quantity":1},{"cardId":73849,"quantity":1},{"cardId":69683,"quantity":1},{"cardId":70002,"quantity":1},{"cardId":76613,"quantity":1},{"cardId":75780,"quantity":1},{"cardId":77343,"quantity":1},{"cardId":67516,"quantity":1},{"cardId":69311,"quantity":1},{"cardId":66429,"quantity":1},{"cardId":77540,"quantity":1},{"cardId":70466,"quantity":1},{"cardId":70464,"quantity":1},{"cardId":69259,"quantity":1},{"cardId":69622,"quantity":1},{"cardId":70685,"quantity":1},{"cardId":75223,"quantity":1},{"cardId":70307,"quantity":1}],"ReducedSideboard":[],"Sideboard":[],"CommandZone":[{"cardId":69323,"quantity":1}],"Companions":[],"CardSkins":[{"GrpId":69323,"CCV":"DA"},{"GrpId":69828,"CCV":"DA"},{"GrpId":70456,"CCV":"DA"},{"GrpId":68164,"CCV":"DA"},{"GrpId":69394,"CCV":"DA"},{"GrpId":76625,"CCV":"DA"},{"GrpId":76585,"CCV":"DA"},{"GrpId":70002,"CCV":"DA"},{"GrpId":77540,"CCV":"JP"},{"GrpId":69259,"CCV":"DA"}]},"CurrentWins":1,"CardPool":[]},{"CourseId":"5b8d23f0-678b-4630-a467-79a327a9cd47","InternalEventName":"Traditional_Historic_Ladder","CurrentModule":4,"ModulePayload":"","CourseDeckSummary":{"DeckId":"77b78d67-a363-44ee-8d21-2ec12bd89e9d","Mana":"WU","Name":"UW Historic","Attributes":[{"name":"Version","value":"11"},{"name":"TileID","value":"75272"},{"name":"LastPlayed","value":"\"2021-12-12T23:56:00.8389562\""},{"name":"LastUpdated","value":"\"2021-12-12T23:55:36.3321552\""},{"name":"IsFavorite","value":"false"},{"name":"Format","value":"TraditionalAlchemy"}],"DeckTileId":75272,"FormatLegalities":{},"DeckValidationSummaries":[],"UnownedCards":{}},"CourseDeck":{"MainDeck":[{"cardId":75272,"quantity":1},{"cardId":79092,"quantity":5},{"cardId":79093,"quantity":4},{"cardId":78612,"quantity":2},{"cardId":73194,"quantity":1},{"cardId":77138,"quantity":2},{"cardId":78345,"quantity":2},{"cardId":78825,"quantity":2},{"cardId":75044,"quantity":4},{"cardId":78374,"quantity":3},{"cardId":73254,"quantity":3},{"cardId":76434,"quantity":4},{"cardId":76452,"quantity":2},{"cardId":79918,"quantity":2},{"cardId":75115,"quantity":2},{"cardId":78396,"quantity":2},{"cardId":79965,"quantity":3},{"cardId":78850,"quantity":2},{"cardId":77362,"quantity":2},{"cardId":78629,"quantity":4},{"cardId":75310,"quantity":4},{"cardId":79969,"quantity":2},{"cardId":66487,"quantity":2}],"ReducedSideboard":[{"cardId":77138,"quantity":2},{"cardId":78782,"quantity":1},{"cardId":78791,"quantity":1},{"cardId":78367,"quantity":2},{"cardId":75057,"quantity":1}],"Sideboard":[{"cardId":77138,"quantity":2},{"cardId":78782,"quantity":1},{"cardId":78367,"quantity":2},{"cardId":75057,"quantity":1},{"cardId":78791,"quantity":1},{"cardId":78394,"quantity":2},{"cardId":68498,"quantity":1},{"cardId":76450,"quantity":1},{"cardId":76393,"quantity":1},{"cardId":76397,"quantity":1},{"cardId":78825,"quantity":1},{"cardId":79920,"quantity":1}],"CommandZone":[],"Companions":[],"CardSkins":[{"GrpId":73254,"CCV":"DA"},{"GrpId":76434,"CCV":"DA"},{"GrpId":77362,"CCV":"DA"},{"GrpId":75057,"CCV":"DA"}]},"CardPool":[]},{"CourseId":"7ef909ae-7556-4e7f-9bc5-dae44a18561e","InternalEventName":"Traditional_Alchemy_Ladder","CurrentModule":7,"ModulePayload":"","CourseDeckSummary":{"DeckId":"77b78d67-a363-44ee-8d21-2ec12bd89e9d","Mana":"WU","Name":"UW Historic","Attributes":[{"name":"Version","value":"11"},{"name":"TileID","value":"75272"},{"name":"LastPlayed","value":"\"2021-12-14T19:51:52.3041242\""},{"name":"LastUpdated","value":"\"2021-12-12T23:55:36.3321552\""},{"name":"IsFavorite","value":"false"},{"name":"Format","value":"TraditionalAlchemy"}],"DeckTileId":75272,"FormatLegalities":{},"DeckValidationSummaries":[],"UnownedCards":{}},"CourseDeck":{"MainDeck":[{"cardId":75272,"quantity":1},{"cardId":79092,"quantity":5},{"cardId":79093,"quantity":4},{"cardId":78612,"quantity":2},{"cardId":73194,"quantity":1},{"cardId":77138,"quantity":2},{"cardId":78345,"quantity":2},{"cardId":78825,"quantity":2},{"cardId":75044,"quantity":4},{"cardId":78374,"quantity":3},{"cardId":73254,"quantity":3},{"cardId":76434,"quantity":4},{"cardId":76452,"quantity":2},{"cardId":79918,"quantity":2},{"cardId":75115,"quantity":2},{"cardId":78396,"quantity":2},{"cardId":79965,"quantity":3},{"cardId":78850,"quantity":2},{"cardId":77362,"quantity":2},{"cardId":78629,"quantity":4},{"cardId":75310,"quantity":4},{"cardId":79969,"quantity":2},{"cardId":66487,"quantity":2}],"ReducedSideboard":[{"cardId":77138,"quantity":2},{"cardId":78782,"quantity":1},{"cardId":78791,"quantity":1},{"cardId":78367,"quantity":2},{"cardId":75057,"quantity":1}],"Sideboard":[{"cardId":77138,"quantity":2},{"cardId":78782,"quantity":1},{"cardId":78367,"quantity":2},{"cardId":75057,"quantity":1},{"cardId":78791,"quantity":1},{"cardId":78394,"quantity":2},{"cardId":68498,"quantity":1},{"cardId":76450,"quantity":1},{"cardId":76393,"quantity":1},{"cardId":76397,"quantity":1},{"cardId":78825,"quantity":1},{"cardId":79920,"quantity":1}],"CommandZone":[],"Companions":[],"CardSkins":[{"GrpId":73254,"CCV":"DA"},{"GrpId":76434,"CCV":"DA"},{"GrpId":77362,"CCV":"DA"},{"GrpId":75057,"CCV":"DA"}]},"CurrentWins":1,"CardPool":[]}]}

Here’s a GitHub of someone who did a draft overlay: https://github.com/HearthSim/LotusTracker/blob/d49ae6c1e88c77fbcb10f6f3ceec0759c3d5c790/src/ui/deckoverlaydraft.cpp

It would probably take you around 100+ hours to do this as a total noob, and probably wouldn’t conform to good programming standards. You might be able to fork one of these git repositories and make small changes that use 17lands (instead of their LSV rating class), and in that case may be on the order of 10-40 hours.

Either way, I’d chat to the 17 lands folks and ask them about if anyone is attempting this and if you can collab.

Sounds like somebody did a workaround using another tracker here: Reddit - Dive into anything

1 Like

With the application logging everything (that’s nice of them!) and code out there on GitHub demoing how to do an overlay, the project is starting to sound a lot easier. 17lands outputs their data as very simple JSON, so reading that into memory would be a breeze. I could probably do this in a few days now and I’ve never written in C++ before. If I had overlay demo code to work with in a language I’ve used a lot like C#, it would probably be like a day, maybe less.

1 Like

Question for those in the industry. My wife is looking to break in. Did a boot camp during the pandemic focused on back end, currently is a junior systems analyst for a company with a proprietary interface focused on building software for non-profits.

Obv what shes doing now builds on her boot camp experience but she is looking to get into more of back end coding. Where should she start? Is a BS in computer science the right way to go? Seems like it might be a considerable time/money committment but if its a neccesity to get into the industry maybe thats the right idea.

Should she be looking for an internship? (Hopefully paid.) If so, is there a good resource to look at outside of the standard job boards for something along those lines?

I also know a lot of people here are in the industry. Do your companies have openings for internships or entry level positions? My wife is one of those “dog with a bone” type people who will get a problem or something she doesnt yet know and work on it forever until she gets the solution. Passion and desire arent a problem here, we are just looking for a springboard to get her close to where she wants to be.

Don’t need school/degree if she’s self motivated to study/learn. Start building things. Make a portfolio even if its just sample crud apps (would also need some front end though). Apply for contract jobs when ready.

More or less that worked for me getting started about 10 years ago with no degree and also no job at all for 8 years.

I need to hire someone to make a very simple, clean web UI for a game. Just needs to display some data from a database and filter it based on user input. Also needs to connect to metamask and have a button to make one Ethereum contract interaction.

Also need to make my base homepage and whitepaper look like it was made by someone competent.

Shouldn’t be at all hard for someone who knows what they are doing, but I need it to be bug-free and preferably done soon.

  1. Any of you want to do this?
  2. How much should I expect to pay for this?
  3. What’s the best way to find someone competent to hire?

did a virtual google interview loop yesterday. kinda glad it’s over, although i would wager probably no offer.

in the meantime, wanted to post this as it’s making the rounds on company slack. i’ve done that interview, and yes it’s the single best question that stands out to me over the years.

I have a noob C++ question. There’s an open source program I’ve successfully compiled and run on two different machines, but now I’m struggling to build it on my Pinebook Pro, whose architecture is ARM if that’s relevant. The compiler isn’t able to recognize type __int128

The code has this comment:

// __int128 is a g++ non portable type. Use the following line limited to 64bits board for C++ compatibility
// using position_t = uint64_t;

But 64bit isn’t sufficient for what I’m trying to do. Am I SOL? I don’t understand the comment because I am compiling with g++, just like I did on another linux machine.