I hardly think microframeworks are a problem, so much as people not thinking about the ramifications of their dependencies. When I actually gave that one some thought (since Go is really subject to the problem) I started just `govendor add +ext` all my packages. Dependencies get stored right next to source code, so the source always builds.
And that's exactly what people should be doing with node_modules because storage is a lot cheaper then the hours you'll waste sorting out why the URL for something changed.
EDIT: Hell, when I go insane, I'm going to try and push this idea onto our Java dev's I think. We've spent a ridiculous amount of time messing around with artifactory recently, and I'm just thinking "let's check everything in, if you want to bump a dependency, everyone gets to see when you did it and what that did".
EDIT: Hell, when I go insane, I'm going to try and push this idea onto our Java dev's I think. We've spent a ridiculous amount of time messing around with artifactory recently, and I'm just thinking "let's check everything in, if you want to bump a dependency, everyone gets to see when you did it and what that did".
I work at a place doing Java and we moved from (our own locally hosted) artifactory to putting dependencies in source control. I'd say it's almost been pure upside for us.
The one thing is that in order to do that, you kinda need to have a monolithic repository. Having twelve copies of Apache commons in source control - one in each project repo - is a bit ugh.
Since you guys are on the subject, summer semester is coming up and I am unsure if I should take java or c++. I'll be finishing up adv. C# this semester. I kinda wish there were more options because java seems like the one I should take next but seeing comments here leads me to think otherwise.
Since you guys are on the subject, summer semester is coming up and I am unsure if I should take java or c++. I'll be finishing up adv. C# this semester. I kinda wish there were more options because java seems like the one I should take next but seeing comments here leads me to think otherwise.
If you already know c# go with c++ without question.
If you go with java you'll basically just be learning another dialect of C#. You could do this in a weekend more than likely.
If you go with C++ you'll be learning a whole different way of thinking about stuff. An old, arcane, fiddly way of thinking, but an important one.
Learn and use C#, if you ever have to use Java then you'll just do it no problem.
You want to expose yourself to multiple ways of programming, not for the specific languages but so that you understand what is language specific and what is truly universal in concept.
You're not gonna learn much of anything taking a Java class if you've already taken "Adv. C#". They're very, verrrry similar languages, which C# being the nicer one to work with. I got my current job as a C# developer with zero C# experience, but 2 or 3 years of Java experience. I had no problem jumping straight into C# code on day 1.
Of course I've had problems bringing myself to actually code in Java after making the switch to C#. It's usually when I get to the difference in object initializers or getters/setters that I start getting angry at Java for not being C#
Thanks for the info. On another note how do you keep your knowledge from atrophying? I am saving some of my lessons for reference but some of this stuff is still very tenuous in my mind. How confident did you feel about your first jobs?
Look up imposter syndrome. It is pretty much universal in our field.
If you feel like you're way not prepared for your first job, that's usual. Expect to google the shit out of things, and this is why you need strong foundational understanding. You need problem-solving skills. Knowing an API off the top of your head isn't going to serve you much.
Look up imposter syndrome. It is pretty much universal in our field.
If you feel like you're way not prepared for your first job, that's usual. Expect to google the shit out of things, and this is why you need strong foundational understanding. You need problem-solving skills. Knowing an API off the top of your head isn't going to serve you much.
This 100%. Learning C# or java* is kind of like buying a toolbox. You've got what you need in there to do what needs to be done, for sure, but you don't go to college because they give you fancy tools, you go to college so you can identify when you should use a nail vs. a screw, and techniques about where to put those nails and screws, and how to hold a hammer, and perhaps most importantly of all, how to measure and plan all this stuff out before you start.
*Learning C++ is kind of like buying one of those weird hand tools that comes with one handle and like thirty replaceable heads so you can make a single hand tool into whatever you want and yeah I guess it's efficient or something but more often than not it's just a lot of extra effort and hurts your hand a little
+2
admanbunionize your workplaceSeattle, WARegistered Userregular
Thanks for the info. On another note how do you keep your knowledge from atrophying? I am saving some of my lessons for reference but some of this stuff is still very tenuous in my mind. How confident did you feel about your first jobs?
I've been coding for 15 years, professionally for six. A couple weeks ago I forgot how to write a JavaScript for loop.
Yep, I hired a dev straight out of school, mentoring him and getting him rolling.
I pulled up JavaScript MDN to look up substring. And made a point of how I can't fucking remember how it works because each language does quirky shit that all lines up but doesn't.
He got the message pretty quick that I need him to think and not memorize language features.
I like having the documentation for what I'm working with open no matter how well I know the language because sometimes you'll be surprised to find out that there's actually a built in method for exactly what you're trying to do that you've never had to use before.
Foo(std::chrono::milliseconds(500));
Foo(std::chrono::duration<float>(1.5f));
Foo(std::chrono::nanoseconds(10000));
Foo(1.5s); // with appropriate usings
all work as expected. Good job spec!
Also telling whether a timestamp is from the system clock, a monotomic clock, etc is pretty handy! You can do waits internally with steady_clock and still handle system_clock times
I'm not sure if everyone is up on the situation I've been dealing with at my office the past... ohhhh three or four weeks but here's a recap:
My application is running on Javascript, and in our lab we purchased about 30 or so Surface tablets for each workstation as it seemed like a good idea at the time. Shortly thereafter we ran into issues where the Surfaces decide to stop charging their batteries, even though they are constantly plugged in. So after 8 hours you have to unplug them, wait thirty minutes, then they start to charge again. No idea why and we can't fix it. January 19th we open a Jira ticket to our IT manager about the problem. He begins "researching" new solutions that we can use instead of the Surface tablets. In the meantime we have to swap in and out about 8 or so tablets a day when they die.
March 4th and still no progress on these tablets. The lab (our employer) is asking about them daily. Manager seems to be completely ignoring any and all requests for these for whatever reason. I take 20 minutes out of my day (along with the other Sys Admin) and update the Jira ticket with a direct amazon link to a replacement that would be suitable for our lab use. We hammer him about not getting this ticket done and it's basically met with bullshit excuses.
About two weeks ago the Surfaces got a new Windows update that completely broke the on-screen keyboard. For whatever reason the keyboard does NOT show up when you click on a text field on a web application (this includes Chrome/Firefox/!IE), but it does show up everywhere else. We try everything to get it to show up but nothing works. My app is also running in full screen so they can't click the button to get to the on screen keyboard. They have to long-tap on something, click reload page, and then it'll go out of full screen mode. The next day I add a button for them to click to switch between full screen and not-full screen mode so they can at least type. We press him some more and met with more excuses about "researching" or whatever. Lab manager gets involved and asks if he is ever going to order them and if he needs help then either me or the other Sys Admin is willing to do it. He said he's got 4 on order that we'll get to test in the next few days.
The next day we get a shipment of tablets. Oh wait... No these tablets are for a completely unrelated issue. They are like 28" big and completely unable to fit in the lab. Next day at our standup he mentions that he has others on order and should be arriving today. They, too, ended up being for the other unrelated issue. Another bullshit excuse about how researching and testing is important and blahblablah.
Last Friday comes. 4 tablets arrive and they are actually ones that would go into the lab! Sweet! The other Sys Admin and I are tasked to unbox them and test them to be sure they work and we'll go to the lab and swap them out and try them to see if they like the new ones. One of those 4 is the tablet I suggested on March 4th.
Today I get forwarded an email from the IT Manager (because I wasn't on the list) that was sent to the CEO, Lab Manager, Lab Assistant, and Product manager. Here's what it said:
Notice how many times he mentions "I" in the email, and doesn't ever mention that he literally didn't do shit about it since January?
I'm not sure if everyone is up on the situation I've been dealing with at my office the past... ohhhh three or four weeks but here's a recap:
My application is running on Javascript, and in our lab we purchased about 30 or so Surface tablets for each workstation as it seemed like a good idea at the time. Shortly thereafter we ran into issues where the Surfaces decide to stop charging their batteries, even though they are constantly plugged in. So after 8 hours you have to unplug them, wait thirty minutes, then they start to charge again. No idea why and we can't fix it. January 19th we open a Jira ticket to our IT manager about the problem. He begins "researching" new solutions that we can use instead of the Surface tablets. In the meantime we have to swap in and out about 8 or so tablets a day when they die.
March 4th and still no progress on these tablets. The lab (our employer) is asking about them daily. Manager seems to be completely ignoring any and all requests for these for whatever reason. I take 20 minutes out of my day (along with the other Sys Admin) and update the Jira ticket with a direct amazon link to a replacement that would be suitable for our lab use. We hammer him about not getting this ticket done and it's basically met with bullshit excuses.
About two weeks ago the Surfaces got a new Windows update that completely broke the on-screen keyboard. For whatever reason the keyboard does NOT show up when you click on a text field on a web application (this includes Chrome/Firefox/!IE), but it does show up everywhere else. We try everything to get it to show up but nothing works. My app is also running in full screen so they can't click the button to get to the on screen keyboard. They have to long-tap on something, click reload page, and then it'll go out of full screen mode. The next day I add a button for them to click to switch between full screen and not-full screen mode so they can at least type. We press him some more and met with more excuses about "researching" or whatever. Lab manager gets involved and asks if he is ever going to order them and if he needs help then either me or the other Sys Admin is willing to do it. He said he's got 4 on order that we'll get to test in the next few days.
The next day we get a shipment of tablets. Oh wait... No these tablets are for a completely unrelated issue. They are like 28" big and completely unable to fit in the lab. Next day at our standup he mentions that he has others on order and should be arriving today. They, too, ended up being for the other unrelated issue. Another bullshit excuse about how researching and testing is important and blahblablah.
Last Friday comes. 4 tablets arrive and they are actually ones that would go into the lab! Sweet! The other Sys Admin and I are tasked to unbox them and test them to be sure they work and we'll go to the lab and swap them out and try them to see if they like the new ones. One of those 4 is the tablet I suggested on March 4th.
Today I get forwarded an email from the IT Manager (because I wasn't on the list) that was sent to the CEO, Lab Manager, Lab Assistant, and Product manager. Here's what it said:
Notice how many times he mentions "I" in the email, and doesn't ever mention that he literally didn't do shit about it since January?
I realized that it's probably because he didn't come up with the solutions. If he had he would be on it like no one's business. But because I had stepped in and tried to get the ball moving: He took his sweet time and then ended up taking credit for it.
Anyway, I'm pretty sure you have two npm's in your path. The first one will probably be the one that comes with Node, which is why you'll never see an update actually apply. I believe Node adds its installation directory to the path when installing.
You can either remove Node's directory from the path, or delete the npm executable from that directory, or just use that version. I generally just take that last option. Which brings me back to the first question: why do you have to update npm?
0
NogsCrap, crap, mega crap.Crap, crap, mega crap.Registered Userregular
That allows me to easily switch between node 0.12, 4 and 5. And thats how i swtch my npm versions too. Node5 comes with npm3, so if i update my node 5 version, then my npm 3 version gets updated with it.
If you only support node 4, then you probably shouldnt be using npm3, as it doesnt ship with node 4.
Anyway, I'm pretty sure you have two npm's in your path. The first one will probably be the one that comes with Node, which is why you'll never see an update actually apply. I believe Node adds its installation directory to the path when installing.
You can either remove Node's directory from the path, or delete the npm executable from that directory, or just use that version. I generally just take that last option. Which brings me back to the first question: why do you have to update npm?
Was attempting to run the code from our offshore team and ran into an error that suggested that I update npm and try again. Turns out if I learned to read that it wasn't the issue and got it resolved without updating it. But I do remember spending about an hour trying to figure this out.
But I'm guessing you're right about the path variable.
0
admanbunionize your workplaceSeattle, WARegistered Userregular
I judge languages in part by how good their documentation is because lord knows I'm going to be googling what methods Array offers two weeks from now.
I once applied for a job where the guy interviewing me expected me to have the entire MDN for JavaScript memorized and actually got quite pissy when I couldn't remember all the methods Array offers.
Needless to say we were both in agreement that the job probably wasn't a good fit for me. I pity the fool that actually got that job.
I judge languages in part by how good their documentation is because lord knows I'm going to be googling what methods Array offers two weeks from now.
I once applied for a job where the guy interviewing me expected me to have the entire MDN for JavaScript memorized and actually got quite pissy when I couldn't remember all the methods Array offers.
Needless to say we were both in agreement that the job probably wasn't a good fit for me. I pity the fool that actually got that job.
This is not that surprising in our field, unfortunately. I went into an interview that asked me some ridiculous Java questions, and when I couldn't answer them without a little research they sorta scoffed and pointed at my resume with the Oracle Java Developer Certificate or whatever.
I judge languages in part by how good their documentation is because lord knows I'm going to be googling what methods Array offers two weeks from now.
I once applied for a job where the guy interviewing me expected me to have the entire MDN for JavaScript memorized and actually got quite pissy when I couldn't remember all the methods Array offers.
Needless to say we were both in agreement that the job probably wasn't a good fit for me. I pity the fool that actually got that job.
This is not that surprising in our field, unfortunately. I went into an interview that asked me some ridiculous Java questions, and when I couldn't answer them without a little research they sorta scoffed and pointed at my resume with the Oracle Java Developer Certificate or whatever.
But I studied for MONTHS for that waste of paper.
Imo "I'd need to reference the docs for syntax, but it would look basically like this..." is almost always a reasonable answer in reference to stuff more complex than primitives
I judge languages in part by how good their documentation is because lord knows I'm going to be googling what methods Array offers two weeks from now.
I once applied for a job where the guy interviewing me expected me to have the entire MDN for JavaScript memorized and actually got quite pissy when I couldn't remember all the methods Array offers.
Needless to say we were both in agreement that the job probably wasn't a good fit for me. I pity the fool that actually got that job.
I regularly consult the docs for std::string, vector, map, etc. There are 6 versions of std::string::compare and I would be impressed if anyone knows all of them and how to use them without consulting a reference
When I do windows programming I often have a dozen or more MSDN tabs open. And this is with intellisense helping out
It dawned on me today that the infrastructure projects I've been chipping away at for the last year are essentially just crude facsimiles of the tools I miss: package management, an automated development pipeline and unit tests.
replicated with:
perl
git hooks
cronjobs
Nothing fancy, but paradigm-wise I think we're finally in the mid-to-late 90's as opposed to the early 80's
I seem to spend way less time embroiled in docs since I've been pairing and using resharper. It's really rare that all of myself, my pair, and resharper's expanded autocompletion know nothing about the interface for the code we are preparing to write.
Posts
there's a greater than 50% chance that after I finish this project I will probably retire from programming full time professionally
maybe one day then I can love it enough to actually start doing it at home again
And that's exactly what people should be doing with node_modules because storage is a lot cheaper then the hours you'll waste sorting out why the URL for something changed.
EDIT: Hell, when I go insane, I'm going to try and push this idea onto our Java dev's I think. We've spent a ridiculous amount of time messing around with artifactory recently, and I'm just thinking "let's check everything in, if you want to bump a dependency, everyone gets to see when you did it and what that did".
The one thing is that in order to do that, you kinda need to have a monolithic repository. Having twelve copies of Apache commons in source control - one in each project repo - is a bit ugh.
If you already know c# go with c++ without question.
If you go with java you'll basically just be learning another dialect of C#. You could do this in a weekend more than likely.
If you go with C++ you'll be learning a whole different way of thinking about stuff. An old, arcane, fiddly way of thinking, but an important one.
Learn and use C#, if you ever have to use Java then you'll just do it no problem.
You want to expose yourself to multiple ways of programming, not for the specific languages but so that you understand what is language specific and what is truly universal in concept.
Of course I've had problems bringing myself to actually code in Java after making the switch to C#. It's usually when I get to the difference in object initializers or getters/setters that I start getting angry at Java for not being C#
If you feel like you're way not prepared for your first job, that's usual. Expect to google the shit out of things, and this is why you need strong foundational understanding. You need problem-solving skills. Knowing an API off the top of your head isn't going to serve you much.
This 100%. Learning C# or java* is kind of like buying a toolbox. You've got what you need in there to do what needs to be done, for sure, but you don't go to college because they give you fancy tools, you go to college so you can identify when you should use a nail vs. a screw, and techniques about where to put those nails and screws, and how to hold a hammer, and perhaps most importantly of all, how to measure and plan all this stuff out before you start.
*Learning C++ is kind of like buying one of those weird hand tools that comes with one handle and like thirty replaceable heads so you can make a single hand tool into whatever you want and yeah I guess it's efficient or something but more often than not it's just a lot of extra effort and hurts your hand a little
I've been coding for 15 years, professionally for six. A couple weeks ago I forgot how to write a JavaScript for loop.
Don't worry about it.
syntax doesn't mean anything, it's literally just an "API" for a concept.
understanding concepts, critical thinking and good problem solving skills are the important things.
PARKER, YOU'RE FIRED! <-- My comic book podcast! Satan look here!
I pulled up JavaScript MDN to look up substring. And made a point of how I can't fucking remember how it works because each language does quirky shit that all lines up but doesn't.
He got the message pretty quick that I need him to think and not memorize language features.
I legit hate Python's documentation so much. I don't know how it's so fucking bad.
Do NOT assume anything sensible or consistent about PHP functions.
3? Lightweight.
do they ever tell you your score?
template<class R, class P> void Foo(std::chrono::duration<R, P> time) { Foo(std::chrono::duration_cast<std::chrono::microseconds>(time).count()); } void Foo(uint64_t microseconds);so
all work as expected. Good job spec!
Also telling whether a timestamp is from the system clock, a monotomic clock, etc is pretty handy! You can do waits internally with steady_clock and still handle system_clock times
My application is running on Javascript, and in our lab we purchased about 30 or so Surface tablets for each workstation as it seemed like a good idea at the time. Shortly thereafter we ran into issues where the Surfaces decide to stop charging their batteries, even though they are constantly plugged in. So after 8 hours you have to unplug them, wait thirty minutes, then they start to charge again. No idea why and we can't fix it. January 19th we open a Jira ticket to our IT manager about the problem. He begins "researching" new solutions that we can use instead of the Surface tablets. In the meantime we have to swap in and out about 8 or so tablets a day when they die.
March 4th and still no progress on these tablets. The lab (our employer) is asking about them daily. Manager seems to be completely ignoring any and all requests for these for whatever reason. I take 20 minutes out of my day (along with the other Sys Admin) and update the Jira ticket with a direct amazon link to a replacement that would be suitable for our lab use. We hammer him about not getting this ticket done and it's basically met with bullshit excuses.
About two weeks ago the Surfaces got a new Windows update that completely broke the on-screen keyboard. For whatever reason the keyboard does NOT show up when you click on a text field on a web application (this includes Chrome/Firefox/!IE), but it does show up everywhere else. We try everything to get it to show up but nothing works. My app is also running in full screen so they can't click the button to get to the on screen keyboard. They have to long-tap on something, click reload page, and then it'll go out of full screen mode. The next day I add a button for them to click to switch between full screen and not-full screen mode so they can at least type. We press him some more and met with more excuses about "researching" or whatever. Lab manager gets involved and asks if he is ever going to order them and if he needs help then either me or the other Sys Admin is willing to do it. He said he's got 4 on order that we'll get to test in the next few days.
The next day we get a shipment of tablets. Oh wait... No these tablets are for a completely unrelated issue. They are like 28" big and completely unable to fit in the lab. Next day at our standup he mentions that he has others on order and should be arriving today. They, too, ended up being for the other unrelated issue. Another bullshit excuse about how researching and testing is important and blahblablah.
Last Friday comes. 4 tablets arrive and they are actually ones that would go into the lab! Sweet! The other Sys Admin and I are tasked to unbox them and test them to be sure they work and we'll go to the lab and swap them out and try them to see if they like the new ones. One of those 4 is the tablet I suggested on March 4th.
Today I get forwarded an email from the IT Manager (because I wasn't on the list) that was sent to the CEO, Lab Manager, Lab Assistant, and Product manager. Here's what it said:
Notice how many times he mentions "I" in the email, and doesn't ever mention that he literally didn't do shit about it since January?
Is that not everyone's experience with managers?
Until I run into a situation where I have to update npm.
Okay, update using npm install -g npm
Okay that claims that it's updated to 3.8.3.
Restart terminal...
Anyway, I'm pretty sure you have two npm's in your path. The first one will probably be the one that comes with Node, which is why you'll never see an update actually apply. I believe Node adds its installation directory to the path when installing.
You can either remove Node's directory from the path, or delete the npm executable from that directory, or just use that version. I generally just take that last option. Which brings me back to the first question: why do you have to update npm?
That allows me to easily switch between node 0.12, 4 and 5. And thats how i swtch my npm versions too. Node5 comes with npm3, so if i update my node 5 version, then my npm 3 version gets updated with it.
If you only support node 4, then you probably shouldnt be using npm3, as it doesnt ship with node 4.
PARKER, YOU'RE FIRED! <-- My comic book podcast! Satan look here!
Was attempting to run the code from our offshore team and ran into an error that suggested that I update npm and try again. Turns out if I learned to read that it wasn't the issue and got it resolved without updating it. But I do remember spending about an hour trying to figure this out.
But I'm guessing you're right about the path variable.
Otherwise the recommended way is to install a newer version of Node that brings the NPM update with it.
Oh man that is so stupid. But thanks!
I once applied for a job where the guy interviewing me expected me to have the entire MDN for JavaScript memorized and actually got quite pissy when I couldn't remember all the methods Array offers.
Needless to say we were both in agreement that the job probably wasn't a good fit for me. I pity the fool that actually got that job.
This is not that surprising in our field, unfortunately. I went into an interview that asked me some ridiculous Java questions, and when I couldn't answer them without a little research they sorta scoffed and pointed at my resume with the Oracle Java Developer Certificate or whatever.
But I studied for MONTHS for that waste of paper.
Imo "I'd need to reference the docs for syntax, but it would look basically like this..." is almost always a reasonable answer in reference to stuff more complex than primitives
I regularly consult the docs for std::string, vector, map, etc. There are 6 versions of std::string::compare and I would be impressed if anyone knows all of them and how to use them without consulting a reference
When I do windows programming I often have a dozen or more MSDN tabs open. And this is with intellisense helping out
replicated with:
perl
git hooks
cronjobs
Nothing fancy, but paradigm-wise I think we're finally in the mid-to-late 90's as opposed to the early 80's
:whistle:
https://docs.google.com/spreadsheets/d/1OLcAGbXhWIVcl5IziVpG0eKFJS3xi_Sac9kYMkRFvD8/edit?usp=sharing