Oh, it's W2 contract - agency work. So tax situation is the same, there's benefits but they're not great, and the gig has an expiration date.
What's the price difference on the benefits? Do the benefit differences matter to you?
Like if the 180k's benefits are missing like "free dental coverage" fuck off you can pay to have all your teeth pulled and upgraded with mammoth ivory at that price difference.
Hard disagree. 180 vs 135 is a hit, but it is absolutely worth 45k/year to not be "the most expendable person in the building", not counting benefits/etc.
Also, short-term high dollar contracts always make me smell "temporary" and "someone is getting screwed", and that person is probably eventually you. Figure how much the agency has to be getting to give you that much... And what's the money on a no-poaching clause in their vendor contract?
Edit: In fairness, I've had some really good experiences as a long term vendor. You're still expendable, and it's still only marginally stable if that, and at this point I don't go for unstable unless it's one absolute hell of a truck of money.
Times are a changing, 180k isn't even out of the ordinary for just a normal run of the mill software developer now. It's on the higher end for sure. But yes I would lean heavily onto the other ones unless they're truely not that different. But if you're still doing stupid ass contract work through some 3rd party like that, grab the FTE at 135/140 instead.
bowen on
not a doctor, not a lawyer, examples I use may not be fully researched so don't take out of context plz, don't @ me
+1
GnomeTankWhat the what?Portland, OregonRegistered Userregular
I think there are two things to be clear about here:
No matter how much more money you make as a contractor, you will never feel as secure in your job. You are always the first to go if there is a squeeze.
If you want to make the move to only considering FTE positions, you will probably have to take a hit initially to get in the door and get the full time experience under your belt.
It's also worth pointing out that while you can pay for the equivalent benefits as an FTE as a contractor, you end up having to manage all that bullshit yourself rather than having an HR department to do it for you.
+3
GnomeTankWhat the what?Portland, OregonRegistered Userregular
One other thing I will point out about being an FTE: You may take a salary hit upfront, but in my opinion the quality of life/lowering of anxiety it affords via career control is invaluable. I made the transition to only accepting FTE positions about 12 years ago and I wouldn't go back. I've only dealt with one layoff situation, for which I received a handsome severance because I was an FTE. Every other time I've changed jobs it's because I wanted to. The added sense of control over your career this provides can't be overstated.
Oh, it's W2 contract - agency work. So tax situation is the same, there's benefits but they're not great, and the gig has an expiration date.
What's the price difference on the benefits? Do the benefit differences matter to you?
Like if the 180k's benefits are missing like "free dental coverage" fuck off you can pay to have all your teeth pulled and upgraded with mammoth ivory at that price difference.
Hard disagree. 180 vs 135 is a hit, but it is absolutely worth 45k/year to not be "the most expendable person in the building", not counting benefits/etc.
Also, short-term high dollar contracts always make me smell "temporary" and "someone is getting screwed", and that person is probably eventually you. Figure how much the agency has to be getting to give you that much... And what's the money on a no-poaching clause in their vendor contract?
Edit: In fairness, I've had some really good experiences as a long term vendor. You're still expendable, and it's still only marginally stable if that, and at this point I don't go for unstable unless it's one absolute hell of a truck of money.
Times are a changing, 180k isn't even out of the ordinary for just a normal run of the mill software developer now. It's on the higher end for sure. But yes I would lean heavily onto the other ones unless they're truely not that different. But if you're still doing stupid ass contract work through some 3rd party like that, grab the FTE at 135/140 instead.
Probably depends on where you are. I'm PNW, so... The numbers are pretty ridiculous. Mountain View is higher, but that's about it. Don't expect someone in like, Montana is seeing the same salary ranges.
(Which is an entire other problem mind, but aside from this topic.)
Edit: Anyway, point was that 180k to the developer is "normal dev numbers", but the agency is probably pulling a multiple of that, and that has the implication that some beancounter is gonna go "wait a sec..." at some point and wonder why they're paying so much more for something.
One other thing I will point out about being an FTE: You may take a salary hit upfront, but in my opinion the quality of life/lowering of anxiety it affords via career control is invaluable. I made the transition to only accepting FTE positions about 12 years ago and I wouldn't go back. I've only dealt with one layoff situation, for which I received a handsome severance because I was an FTE. Every other time I've changed jobs it's because I wanted to. The added sense of control over your career this provides can't be overstated.
Yeah I remember someone trying to talk me up to doing contract work when I first started, I think it might have even been on the PA forums, and I was just so not interested in making "six figures" and having to find a job every 1-3 years. I'd rather make 2/3 that and never think about it again.
not a doctor, not a lawyer, examples I use may not be fully researched so don't take out of context plz, don't @ me
0
Ear3nd1lEärendil the Mariner, father of ElrondRegistered Userregular
edited December 2021
I've been contract only for 3.5 years, and aside from a couple of hiccups, I'm enjoying it. I never have to work overtime. I don't get quite as pissed off when the project lead makes poor decisions because I know that I won't have to live with those issues for years afterward. It's somewhat freeing to be able to think "Yeah, that's a bad decision, but in the end it's not my problem." Don't get me wrong, I still try to steer them to making better choices, but ultimately they have to be happy with it when I'm gone so I'll do it however they decide.
That said, I do sometimes miss having ownership in a project, and certainly things like vacation time. But for me at least, the benefits outweigh the drawbacks. I realize however that I'm a bit of an edge case.
EDIT: Just to clarify my stance a bit, when I say "It's not my problem", I don't mean that I don't care about delivering a great product. What I'm trying to say is that even as an FTE, you sometimes fight losing battles and get overruled. Now as a contractor, I don't get stressed about it because I know I'm not there forever.
Ear3nd1l on
0
OrcaAlso known as EspressosaurusWrexRegistered Userregular
I've been contract only for 3.5 years, and aside from a couple of hiccups, I'm enjoying it. I never have to work overtime. I don't get quite as pissed off when the project lead makes poor decisions because I know that I won't have to live with those issues for years afterward. It's somewhat freeing to be able to think "Yeah, that's a bad decision, but in the end it's not my problem." Don't get me wrong, I still try to steer them to making better choices, but ultimately they have to be happy with it when I'm gone so I'll do it however they decide.
That said, I do sometimes miss having ownership in a project, and certainly things like vacation time. But for me at least, the benefits outweigh the drawbacks. I realize however that I'm a bit of an edge case.
EDIT: Just to clarify my stance a bit, when I say "It's not my problem", I don't mean that I don't care about delivering a great product. What I'm trying to say is that even as an FTE, you sometimes fight losing battles and get overruled. Now as a contractor, I don't get stressed about it because I know I'm not there forever.
As someone who has spent the last two years dealing with other people's bad decisions that I got slapped down for calling out as being bad decisions before they were made...I'm certainly sympathetic to that viewpoint.
+2
GnomeTankWhat the what?Portland, OregonRegistered Userregular
I'm at a title level now where I'm the one making the bad decisions.
I just turned down $90/hr. That doesn't even feel real. 140k job won.
I've been bouncing around contracts for a couple years now, and have got to a point where they don't feel unstable because I know I'll have something else lined up immediately after. I don't care about other people's bad decisions because if I don't want to deal with them I can just walk away.
But 140k job is going to pay me to make POC apps in Blazor/SignalR AND will pay me when I decide to fuck off to Vegas mid-week. I haven't had a paid vacation in over five years unless you could some really long restroom breaks.
Hey, does anyone have any useful alternatives to Docker Desktop for running Docker on macOS? I use Docker Desktop pretty much only to install Docker + CLI tools, the Docker Desktop UI I don't use or care about.
Their license changes mean we can't use their free tier at EchoCorp any longer, and it feels wasteful to get licenses when we'd just use it as a glorified Docker CLI installer.
Since Docker Engine only runs on Linux, developers who use Windows and macOS for software development cannot run the engine until they spin up a virtual machine (VM) that runs linux. That is where Docker Desktop comes in. Docker Desktop is a closed-source software that allows developers working on Windows/macOS to use container technology seamlessly on their development environment without needing to manage the complexity of operating a VM and all the nitty-gritty that comes along with it (networking, virtualization, knowledge of linux etc.). Docker Desktop is meant to be used during software development, it does not play a part in containers that run on production-like environments, where only Docker Engine is mostly involved.
Echo on
0
AkimboEGMr. FancypantsWears very fine pants indeedRegistered Userregular
Yeah, Docker Desktop on Mac is serving as a linux VM for the actual docker engine. You could run a VM yourself, but that would require a bit more manual work to get integrations going.
Another thing to keep in mind is that bind mounts are incredibly slow on Mac, to the point where depending on your workflow, running tests / watching for file changes might be unrealistic.
Give me a kiss to build a dream on; And my imagination will thrive upon that kiss; Sweetheart, I ask no more than this; A kiss to build a dream on
Yeah, Docker Desktop on Mac is serving as a linux VM for the actual docker engine. You could run a VM yourself, but that would require a bit more manual work to get integrations going.
Another thing to keep in mind is that bind mounts are incredibly slow on Mac, to the point where depending on your workflow, running tests / watching for file changes might be unrealistic.
Yeah, I've noted that it's hella slow for file operations on mounted stuff. Luckily I almost never need that, for local development I just spin up DB/Redis etc and run integration tests.
We concluded that we still fall under their free tier, so for now I'm filing this under "problem for later".
{'guard': {'description': 'a burly guard', 'tags': , 'location': 'field', 'details': 'The guard is a really big fellow.', 'contents': 'He has', 'health': 100, 'capacity': 20,'light':100}, 'player': {'description': 'yourself', 'tags': , 'location': 'field', 'details': 'You would need a mirror to look at yourself.', 'contents': 'You have', 'health': 100, 'capacity': 20}}
2
So now I want to access the first object (and also the data inside) but I don't know how to ask to get it from the array. I would think that "print (objects[0])" would just return the "guard{....}" umm.. element? I don't understand how this is put together.
For the most complex example I want to get the second tag in the second object. "you", but while I'm drilling down, I want to identify the name of the.. I don't know what it's called.. "Identifier" I'm looking for something like this back
where i iterate though this array of things and collect up the names and values and put them in to strings for me to manhandle later
so like for each object, drill inside, and get the identifier and the value.
The whole Idea is I'm trying to convert this into c file (Basically a code generator), so if a particular element is missing, it just puts in a default value. I can do all the string manipulation. I just can't seem to extract the data from the json properly.
Example output code below:
static bool alwaysTrue(void) { return true; }
//this is hand genrated
typedef struct object {
bool (*condition)(void);
const char *description;
const char **tags;
struct object *location;
struct object *destination;
struct object *prospect;
const char *details;
const char *contents;
const char *textGo;
int weight;
int capacity;
int health;
int light;
void (*open)(void);
void (*close)(void);
void (*lock)(void);
void (*unlock)(void);
} OBJECT;
//this is taken from the json
static const char *tags0[] = { "guard", "burly guard", NULL};
static const char *tags1[] = { "yourself", NULL};
//this is taken from the json, and missing values in the JSON are filled in with defaults.
OBJECT objs[] = {
{ /* 0 = guard */
alwaysTrue,
"a burly guard",
tags0,
field,
NULL,
NULL,
"The guard is a really big fellow.",
"He has",
"You can't get much closer than this.",
99,
20,
100,
100,
cannotBeOpened,
cannotBeClosed,
cannotBeLocked,
cannotBeUnlocked
},
{ /* 1 = player */
alwaysTrue,
"yourself",
tags1,
field,
NULL,
NULL,
"You would need a mirror to look at yourself.",
"You have",
"You can't get much closer than this.",
99,
20,
100,
0,
cannotBeOpened,
cannotBeClosed,
cannotBeLocked,
cannotBeUnlocked
}
}
Accessing things inside dicts and lists just means stacking them. so something like:
guardlocation=mydict["guard"]["location"]
firstguardtag=mydict["guard"]["tags"][0]
Note that you'll want to have a bunch of try/catch error logic in there in case some locations are empty/don't exist.
Accessing things inside dicts and lists just means stacking them. so something like:
guardlocation=mydict["guard"]["location"]
firstguardtag=mydict["guard"]["tags"][0]
Note that you'll want to have a bunch of try/catch error logic in there in case some locations are empty/don't exist.
Oh I didn't know about the dict type. That makes things easier to Google when you know what it's called
Python is dicts all the way down. Also, JSON is basically a materialized dict, so any time you're playing with JSON using the native libraries, it will shove it in an ordered dict by default. Apologize if this is pedantic (I'm terribad at most coding), but if you're going to use a lot of JSON, start thinking of things in a call and response way, with the call being the key and the response being the value returned. You can do some nutty things that way. Also, shoving new things in with the same key will just overwrite, so you can cheat and use dicts to de-duplicate lists if that's your preference. There's no practical limit to nesting lists and dicts either. AWS is a good example where some of their responses have 20-30 layers of nesting (I'd say don't do that, but it's definitely possible), so you can use that to create ownership as well (like a standard "inventory" dict that everyone gets which fills up with items).
I picked up JSON as it's what we use for information interchange at work and wanted to use it in my own project as a data file. The idea is I have a game that is going to have an unwieldy amount of objects and manually updating the .c and .h file is a pain. I was using a text file + awk to generate the source files, but that got too... dumb and so why not use a standard format and a newer language. It was a contest between JSON and XML, but JSON seemed to have that new car smell.
I just can't seem to let things go...
OK, I have my JSON, and my python script generates .c and .h files fine. So I decided "You know, maybe I should make a schema for this so I can validate my data in Visual Studio"
So, I'm tying to make a schema and it's validating the wrong thing.
Here my example
{
"field": {
"description": "an open field",
"tags": [
"field"
],
"details": "The field is a nice and quiet place under a clear blue sky.",
"capacity": 9999,
"light": 100
},
"player": {
"description": "yourself",
"tags": [
"yourself"
],
"location": "field",
"details": "You would need a mirror to look at yourself.",
"contents": "You have",
"health": 100,
"capacity": 20
}
}
Now I want to validate the object attributes (such as tags, details, contents, health)
but my schema keeps trying to validate the object name (field, player)
those will have random names, I want to validate what's inside them.
The schema is below.. I need to check inside each object, not the outer level. How do I do that?
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "Objects",
"description": "Game objects",
"type": "object",
"properties": {
"description": {
"description": "Terse passive description of object",
"type": "string"
},
"tags": {
"description": "Nouns that the object can be called by",
"type": "array"
},
"location": {
"description": "Object that the object is in",
"type": "string"
}
},
"required": [ "tags" ]
}
halkun on
0
admanbunionize your workplaceSeattle, WARegistered Userregular
I think you need to put your properties definition inside an additionalProperties, per this doc. A schema has to validate the entire document, not just a subsection of it, so you need to define your schema in such a way that it understands your properties are children of another (arbitrarily named) property.
Yeah lots of standard editors will do syntax highlighting and typically point out if you screw up braces and such, but I'm not sure what you're actually looking for
GnomeTankWhat the what?Portland, OregonRegistered Userregular
edited December 2021
Do you want a visual data structure editor that does JSON (e.g. a hierarchical edit view), or just a text editor with syntax highlighting? If the latter than Visual Studio Code and Atom are pretty much the go to for huge swathes of the dev community these days. I can't comment on Atom, but VSC comes with full JSON support, with formatting, out of the box. If you want more comprehensive formatting with options both should support Prettier.
If the former I would be shocked if VSC or Atom didn't have a plugin.
I use VSC for basically everything these days. Little reason to need another text editor unless you're looking for full IDE support.
I'm looking for something that breaks out each data block into a graph. I'm just thinking I'm going to have many, many objects and maintaining even the list will be problematic without a schema. The issue is that I think I made my JSON in such a way that a schema would be near impossible make. (I made my all my top level object keys different)
Because I use a unique key for all root objects, there is not key template to check the attributes against a key type. It appears that it doesn't validate the attributes unless there is a top-level key to match against for validation.
Then again, I just may make a program to manage it all.
===== Hot edit =====
I figured out how to correct my JSON. I have to rewrite my python parser.. Evidently {} and [] make a difference on how you create arrays.
=== Edit edit ====
Nope. I'll stick with the JSON I have. I'll validate when I do the json -> C code conversion as I've been doing.
Posts
Times are a changing, 180k isn't even out of the ordinary for just a normal run of the mill software developer now. It's on the higher end for sure. But yes I would lean heavily onto the other ones unless they're truely not that different. But if you're still doing stupid ass contract work through some 3rd party like that, grab the FTE at 135/140 instead.
Probably depends on where you are. I'm PNW, so... The numbers are pretty ridiculous. Mountain View is higher, but that's about it. Don't expect someone in like, Montana is seeing the same salary ranges.
(Which is an entire other problem mind, but aside from this topic.)
Edit: Anyway, point was that 180k to the developer is "normal dev numbers", but the agency is probably pulling a multiple of that, and that has the implication that some beancounter is gonna go "wait a sec..." at some point and wonder why they're paying so much more for something.
Yeah I remember someone trying to talk me up to doing contract work when I first started, I think it might have even been on the PA forums, and I was just so not interested in making "six figures" and having to find a job every 1-3 years. I'd rather make 2/3 that and never think about it again.
That said, I do sometimes miss having ownership in a project, and certainly things like vacation time. But for me at least, the benefits outweigh the drawbacks. I realize however that I'm a bit of an edge case.
EDIT: Just to clarify my stance a bit, when I say "It's not my problem", I don't mean that I don't care about delivering a great product. What I'm trying to say is that even as an FTE, you sometimes fight losing battles and get overruled. Now as a contractor, I don't get stressed about it because I know I'm not there forever.
As someone who has spent the last two years dealing with other people's bad decisions that I got slapped down for calling out as being bad decisions before they were made...I'm certainly sympathetic to that viewpoint.
So, everything is your fault then.
I've been bouncing around contracts for a couple years now, and have got to a point where they don't feel unstable because I know I'll have something else lined up immediately after. I don't care about other people's bad decisions because if I don't want to deal with them I can just walk away.
But 140k job is going to pay me to make POC apps in Blazor/SignalR AND will pay me when I decide to fuck off to Vegas mid-week. I haven't had a paid vacation in over five years unless you could some really long restroom breaks.
Their license changes mean we can't use their free tier at EchoCorp any longer, and it feels wasteful to get licenses when we'd just use it as a glorified Docker CLI installer.
edit: guess I actually use some features.
Another thing to keep in mind is that bind mounts are incredibly slow on Mac, to the point where depending on your workflow, running tests / watching for file changes might be unrealistic.
Yeah, I've noted that it's hella slow for file operations on mounted stuff. Luckily I almost never need that, for local development I just spin up DB/Redis etc and run integration tests.
We concluded that we still fall under their free tier, so for now I'm filing this under "problem for later".
Looks like us-east-1 is down in AWS right now.
How's that DR/BC plan going?
We've decided to close the stores for as long as necessary until AWS comes back.
Not great then.
So I'm trying to parse some JSON I wrote and I don't know how to access the data after l loaded it because I don't understand how the arrays work.
Here is an example
Here is a json file with two objects
{ "guard": { "description": "a burly guard", "tags": [ "guard", "burly guard" ], "location": "field", "details": "The guard is a really big fellow.", "contents": "He has", "health": 100, "capacity": 20 "light": 100 }, "player": { "description": "yourself", "tags": [ "yourself" ], "location": "field", "details": "You would need a mirror to look at yourself.", "contents": "You have", "health": 100, "capacity": 20 } }and here is a quick loader I have
import json objectFile= open("object.json", "r") objectText=objectFile.read() objects = json.loads(objectText) numberOfObjects = len(objects) print(objects) print(numberOfObjects)This is the output :
So now I want to access the first object (and also the data inside) but I don't know how to ask to get it from the array. I would think that "print (objects[0])" would just return the "guard{....}" umm.. element? I don't understand how this is put together.
For the most complex example I want to get the second tag in the second object. "you", but while I'm drilling down, I want to identify the name of the.. I don't know what it's called.. "Identifier" I'm looking for something like this back
element(1) = "player"
element(1,3) = "tags"
element(1,3,2) = "you"
where i iterate though this array of things and collect up the names and values and put them in to strings for me to manhandle later
so like for each object, drill inside, and get the identifier and the value.
The whole Idea is I'm trying to convert this into c file (Basically a code generator), so if a particular element is missing, it just puts in a default value. I can do all the string manipulation. I just can't seem to extract the data from the json properly.
Example output code below:
static bool alwaysTrue(void) { return true; } //this is hand genrated typedef struct object { bool (*condition)(void); const char *description; const char **tags; struct object *location; struct object *destination; struct object *prospect; const char *details; const char *contents; const char *textGo; int weight; int capacity; int health; int light; void (*open)(void); void (*close)(void); void (*lock)(void); void (*unlock)(void); } OBJECT; //this is taken from the json static const char *tags0[] = { "guard", "burly guard", NULL}; static const char *tags1[] = { "yourself", NULL}; //this is taken from the json, and missing values in the JSON are filled in with defaults. OBJECT objs[] = { { /* 0 = guard */ alwaysTrue, "a burly guard", tags0, field, NULL, NULL, "The guard is a really big fellow.", "He has", "You can't get much closer than this.", 99, 20, 100, 100, cannotBeOpened, cannotBeClosed, cannotBeLocked, cannotBeUnlocked }, { /* 1 = player */ alwaysTrue, "yourself", tags1, field, NULL, NULL, "You would need a mirror to look at yourself.", "You have", "You can't get much closer than this.", 99, 20, 100, 0, cannotBeOpened, cannotBeClosed, cannotBeLocked, cannotBeUnlocked } }Does that make sense?
guardlocation=mydict["guard"]["location"]
firstguardtag=mydict["guard"]["tags"][0]
Note that you'll want to have a bunch of try/catch error logic in there in case some locations are empty/don't exist.
Also, if you're doing this for a wide variety of things with similar characteristics, you'll want to use dataclasses - https://docs.python.org/3/library/dataclasses.html or https://realpython.com/python-data-classes/
Also, using
mydict.get("guard")is a safe way to get things (basically returns empty if nothing is found) which can make things easier to read by removing those specific try/catches.Python is dicts all the way down. Also, JSON is basically a materialized dict, so any time you're playing with JSON using the native libraries, it will shove it in an ordered dict by default. Apologize if this is pedantic (I'm terribad at most coding), but if you're going to use a lot of JSON, start thinking of things in a call and response way, with the call being the key and the response being the value returned. You can do some nutty things that way. Also, shoving new things in with the same key will just overwrite, so you can cheat and use dicts to de-duplicate lists if that's your preference. There's no practical limit to nesting lists and dicts either. AWS is a good example where some of their responses have 20-30 layers of nesting (I'd say don't do that, but it's definitely possible), so you can use that to create ownership as well (like a standard "inventory" dict that everyone gets which fills up with items).
OK, I have my JSON, and my python script generates .c and .h files fine. So I decided "You know, maybe I should make a schema for this so I can validate my data in Visual Studio"
So, I'm tying to make a schema and it's validating the wrong thing.
Here my example
{ "field": { "description": "an open field", "tags": [ "field" ], "details": "The field is a nice and quiet place under a clear blue sky.", "capacity": 9999, "light": 100 }, "player": { "description": "yourself", "tags": [ "yourself" ], "location": "field", "details": "You would need a mirror to look at yourself.", "contents": "You have", "health": 100, "capacity": 20 } }Now I want to validate the object attributes (such as tags, details, contents, health)
but my schema keeps trying to validate the object name (field, player)
those will have random names, I want to validate what's inside them.
The schema is below.. I need to check inside each object, not the outer level. How do I do that?
{ "$schema": "http://json-schema.org/draft-04/schema#", "title": "Objects", "description": "Game objects", "type": "object", "properties": { "description": { "description": "Terse passive description of object", "type": "string" }, "tags": { "description": "Nouns that the object can be called by", "type": "array" }, "location": { "description": "Object that the object is in", "type": "string" } }, "required": [ "tags" ] }As the saying goes, the difference between a junior and a senior software developer is that the senior knows what to google.
Or the other option, "the junior googles stuff, the senior goes directly to stackoverflow"
Caveat: I haven't used this
Pretty sure most IDEs know how at this point, even if they're not spectacular at it. Sublime (with plugin), Xcode, damn near all the Jetbrains apps...
If the former I would be shocked if VSC or Atom didn't have a plugin.
I use VSC for basically everything these days. Little reason to need another text editor unless you're looking for full IDE support.
Because I use a unique key for all root objects, there is not key template to check the attributes against a key type. It appears that it doesn't validate the attributes unless there is a top-level key to match against for validation.
Then again, I just may make a program to manage it all.
===== Hot edit =====
I figured out how to correct my JSON. I have to rewrite my python parser.. Evidently {} and [] make a difference on how you create arrays.
=== Edit edit ====
Nope. I'll stick with the JSON I have. I'll validate when I do the json -> C code conversion as I've been doing.