Open Side Menu Go to the Top

08-03-2017 , 10:59 PM
I feel like if done right a weekend assignment could be pretty decent.

One of my friends had me do the one he uses when I was practicing for interviews and it was pretty good. It was using a data file and parsing it and using express to create pseudo-apis and make pre-written tests pass. The data was a bit funky so you had to create somewhat robust parsing.

I feel like you give a pretty basic test like that and talk through it with the candidate and you should have a pretty good idea if they can hang.

The thing with you where you were then asked "why didn't you build a shadow dom" is just laugh in their face and walk away type stuff tho.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD **
$25m Guaranteed WPM on CoinPoker
Join the action now
Daily Rewards • Splash Pots • CoinRaces
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD **
08-03-2017 , 11:00 PM
Quote:
Originally Posted by daveT
I would like to take this moment to say that the Shopify API is the most disastrous pile of flaming garbage I've ever had the displeasure of working with.
Hmm, every dev I know who has used Shopify for personal stuff has praised it. And I'm thinking of one person with very high standards.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
08-03-2017 , 11:01 PM
Quote:
Originally Posted by daveT
I would think Netflix gets 1,000 applications per day and I would think there is a higher collection of viable candidates, being near all those colleges and stuff. How would they afford to churn that many developers every month?
I'm not a CS grad. Dude reached out to me on LinkedIn because of my experience and talk at node summit. I went through a couple rounds of interviews, but my homework assignment - which was well established was not my expertise - wasn't rock-star-y enough for them.

I had a chance to jump over to the node team, but stayed with the original guy who called me because I thought the work (getting Netflix to work on an endless stream of new devices) sounded more fun. Big mistake in terms of getting the job. But overall I'm happy with the way things turned out. I didn't want to move and I can't stand Sili Valley culture.

They did offer me some back of the house support thing as like a remedial chance to prove myself and work my way up. Felt good to say no to that.

Last edited by suzzer99; 08-03-2017 at 11:07 PM.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
08-03-2017 , 11:03 PM
Quote:
Originally Posted by Larry Legend
I feel like if done right a weekend assignment could be pretty decent.

One of my friends had me do the one he uses when I was practicing for interviews and it was pretty good. It was using a data file and parsing it and using express to create pseudo-apis and make pre-written tests pass. The data was a bit funky so you had to create somewhat robust parsing.

I feel like you give a pretty basic test like that and talk through it with the candidate and you should have a pretty good idea if they can hang.

The thing with you where you were then asked "why didn't you build a shadow dom" is just laugh in their face and walk away type stuff tho.
Yeah - and how dare you have an async race condition bug. We always build perfect software on the first pass here.

Yes I'm still annoyed.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
08-03-2017 , 11:20 PM
Quote:
Originally Posted by Larry Legend
Hmm, every dev I know who has used Shopify for personal stuff has praised it. And I'm thinking of one person with very high standards.
IDK, I understand why certain apps break all the time now.

It's a restful API and they are apparently going through changes in the URL params. Up until a few days ago, the API magically added extra https:// in front of https:// , so you get https://https:// . Remove one (by hand) and everything works.

Now the params are totally different, so hooray, the app doesn't work at all and I have no clue what the fix is. On top of learning Ruby and all the magic sauce built into Sinatra and the API, it's super irritating to face inconsistencies like this.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
08-04-2017 , 09:46 AM
I think you would learn more about an applicants apptitude and culture fit by having them pair program on some easy bug in your code rather than some take home project. This requires a great screening process and probably has some scale issues but is much less gamable than a project you don't watch them code.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
08-04-2017 , 11:22 AM
Agreed.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
08-04-2017 , 11:23 AM
Quote:
Originally Posted by adios
Leaving an inexperienced developer to their own devices while other departments do code reviews is ****ed up.
It's rare that Adios and I agree on anything. So we should celebrate this!
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
08-04-2017 , 11:29 AM
Quote:
Originally Posted by suzzer99
Why not just hire anyone who shows promise to a 3 month contract or something? Or hell a month trial. You know almost immediately with a new dev if they're any good. But white board, interviews, homework projects - can be hit or miss.
A new dev is almost always a net negative on a team in the first month. Too much ramp up and learning before you can do anything super valuable. And that ramp up sucks time/resources away from the people that we already know are good and can get **** done.

Like someone else said too, the majority of good developers can get a good job without jumping through these types of hoops. They can interview at multiple places at the same time and figure out which one they want and get a relatively 'guaranteed' job at the end of it.

There's also the issue with security/IP/etc. Nothing super critical, but its work to deal with correctly (similar to the work you have to do if you regularly use interns).
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
08-04-2017 , 12:02 PM
Quote:
Originally Posted by kerowo
I think you would learn more about an applicants apptitude and culture fit by having them pair program on some easy bug in your code rather than some take home project. This requires a great screening process and probably has some scale issues but is much less gamable than a project you don't watch them code.
This has a lot of problems too:

1. It's still super stressful for the candidate, so you're not really going to get a true feel for how they work.

2. It doesn't let them work with their personal os/environment/tools/etc. Whenever I try to use someone else's IDE set up I look like a complete moron. Random windows/modals popping up because I use short cuts that don't work, typing nonsense characters, etc.

3. It's actually hard (at least for me) to find a steady supply of "good simple bugs". They need to require little to no context for the new person. Be in code that's in a relatively decent shape. Have a fix that's not trivial, but also not too complex. Etc.

4. You have a very different process for each candidate, making it hard to sync expectations and everything properly.

Obviously, the common interview approaches companies use suck in lots of ways too. But I don't think there are any obvious better alternatives.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
08-04-2017 , 01:48 PM
Lol round 3 of the code review from hell. See if you can spot a problem here.

Code:
   var metaPromise = new Promise(function (resolve,reject){
            unirest.get("http://"+serviceOptions.host+serviceOptions.path).end(function(response){
                if (response.status === 200) {
                    if (response.body !== null && response.body !== undefined) {
                        metadataObj.metadataSuccess = true;
                        resolve();
                    } else {
                        logger.log('error', "Error receiving data from the Metadata service call");
                        metadataObj.metadataSuccess = false;
                        reject();
                    }
Code:
 metaPromise.then(function(){
            return metadataObj;
        }, function(){
            logger.log('error', "attributemetadata service call promise failed");
            return metadataObj;
        });
    }

Last edited by suzzer99; 08-04-2017 at 02:02 PM.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
08-04-2017 , 01:58 PM
I don't even know javascript and even to me that looks wrong/stupid. the caller can't know whether it failed or not, unless somehow metadataobj contains that info
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
08-04-2017 , 02:00 PM
Sorry I left out a piece of the code. See my edit above.

Promises implement a resolve() or reject() method. resolve() goes to the first argument of then(), reject() goes to the second. So that part is correct.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
08-04-2017 , 02:26 PM
ok that is really dumb

ETA: for at least 3 reasons

ETA 2: maybe 4, depending on JS variable scoping
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
08-04-2017 , 02:38 PM
I should have included the outer function:

Code:
module.exports = {
    metadataCall: function(app, logger) {

        const metadataObj = {
            metadataSuccess: null,
            obfuscatedYesInMetadata : []
        };


        var metaPromise = new Promise(function (resolve,reject){
            unirest.get("http://"+serviceOptions.host+serviceOptions.path).end(function(response){
                if (response.status === 200) {
                    if (response.body !== null && response.body !== undefined) {
                         metadataObj.metadataSuccess = true;
                         resolve();
                     } else {
                         logger.log('error', "Error receiving data from the Metadata service call");
                         metadataObj.metadataSuccess = false;
                         reject();
                     }

...

        metaPromise.then(function(){
                return metadataObj;
            }, function(){
                logger.log('error', "attributemetadata service call promise failed");
                return metadataObj;
            });
        }
    }
};
There's no other return statement from metadataCall(). Elsewhere in server.js (node's entry point script):

Code:
/**
 * Making the Metadata call as the server starts to retrieve the data and use it for Profile call
 */
const metadataObject = require("./get-metadata.js").metadataCall(app,logger);
I pointed out to him that his methods in promise.then() are returning metadataObj to nowhere. So I just saw him check in a new PR where he replaces the promise.then() block above with this original:

Code:
 return metadataObj;
Infinite facepalm.

I think the problem is this might actually be working for him, because he's returning metadataObj as a reference, then changing it later when the promise comes back. So even though he's returning a default object, the reference is getting updated with the results of the async call.

Ugh - it's like trying to untangle a crazy person's argument.

Last edited by suzzer99; 08-04-2017 at 02:51 PM.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
08-04-2017 , 02:54 PM
And that's why the politics forum is so good for you!
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
08-04-2017 , 05:03 PM
What are the standard rates for an average dev for: freelance and contract to hire?

I'm going to guess that in hourly rates it's probably freelance > contract to hire. Correct? I'm asking because I just said no to an interview that wanted to hire me as a "contract to hire" but actually doing a freelance gig. At which point, they may or may not hire me or probably would have led to being kept on as a freelancer. If it helps you guys decide, when I asked about the period of time the contract would stipulate, the CEO said "oh there won't be any contracts signed"

I easily responded "oh that's not a contract to hire, that's freelancing". He wasn't aware that it was different. I left shortly after. Would anyone take a fake "contract" for less than 1 weeks time(he kept insinuating it would take less than 1 day )?

Last edited by whb; 08-04-2017 at 05:08 PM. Reason: English
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
08-04-2017 , 05:26 PM
Run as fast as you can in the opposite direction. No one does 1 day contract to hires. If there's no contract, you aren't a contractor.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
08-04-2017 , 05:38 PM


My company's expense report system use's middle out compression to upload receipts. Who says we're not tech leaders!
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
08-04-2017 , 05:48 PM
Gonna have to see your weissman score before I decide whether I'm impressed
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
08-04-2017 , 06:06 PM
Quote:
Originally Posted by jjshabado
And that's why the politics forum is so good for you!
I was clean of Politics for over 2 months. The Mooch broke me. In full-blown relapse mode right now.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
08-04-2017 , 06:09 PM
Quote:
Originally Posted by RustyBrooks
Gonna have to see your weissman score before I decide whether I'm impressed
I uploaded this image to test our lossless compression. NAILED IT

** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
08-04-2017 , 06:11 PM
Quote:
Originally Posted by suzzer99
Well this relevant: https://medium.com/@micaksica/your-n...g-f1a3bf831a46

Quote:
One of the more questionable things in Node.js development is that authentication is largely left as an exercise to the individual developer. The de facto authentication solution in the Express.js world is Passport, which offers a host of strategies for authentication. If you want a robust solution similar to Plataformatec’s Devise for Ruby on Rails, you’ll likely be pointed to Auth0, a startup who has made authentication as a service.

Compared to Devise, Passport is simply authentication middleware, and does not handle any of the other parts of authentication for you: that means the Node.js developer is likely to roll their own API token mechanisms, password reset token mechanisms, user authentication routes and endpoints, and views in whatever templating language is the rage today. Because of this, there are a lot of tutorials that specialize in setting up Passport for your Express.js application, and nearly all of them are wrong in some way or another, and none properly implement the full stack necessary for a working web application.
You (I think?) touched on this earlier wrt "why is there no general auth library" but I implemented login-with-Google for a dumb side project I'm working on, using Passport, and I was shocked by how much code I had to write to fit all the glue together that a.) felt like pure boilerplate b.) still isn't even close to production ready (my session store just lives in memory since I haven't gotten around to putting it in a db, so every time I restart it all sessions are invalidated; I'm sure there's dozens of crypto things I should be doing that I'm not doing and that anyone who cared could hack this thing easily; etc). Like, this sort of thing is a serious problem for any developer and it feels like you have to become very educated on the topic just to deliver the most basic auth functionality (assuming reliability and security is a requirement, which they should be).

I spent hours going through one of the aforementioned tutorials about Passport just to do this **** myself, and I'm sure doing it badly.

Last edited by goofyballer; 08-04-2017 at 06:16 PM. Reason: there's probably something funny about posting this on a forum where you log in via plain http
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
08-04-2017 , 06:25 PM
Yeah if you came to me I'd just point you to auth0. Even implementing passport for that is tricky, but much easier than rolling your own auth from scratch. Or Rails or .net.

This is a microcosm of node development. Everyone wants to be a rock star and they like the free-wheeling nature of it. My OS projects aim to make node easier to pick up for new devs who just want to focus on easily spinning up features and business logic. I always felt like something like that would take off eventually but it hasn't. Maybe I'll just start a boilerplate all-in-one auth project build on my nodules idea. Hmmmm...

FWIW - putting your session in a DB is as easy as spinning up redis (or whatever DB you're already using - see stores at the bottom, I wrote the hazelcast one) then pointing express sessions to it at config time. IMO you should develop from day 1 assuming multiple instances of node and shared session state (if you need sessions). Stuff like application-level caching is ok for each instance to just grab it's own copy and story it in local memory.

Just be careful not to accidentally put a request-level property into application scope (IE outside express middleware) - or you'll wind up with a gnarly bug that only shows up in a multi-instance or multi-user scenario. This is the free-wheeling node stuff that keeps me up at night, given the level of developers we sometimes have to work with.

Last edited by suzzer99; 08-04-2017 at 06:36 PM.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
08-04-2017 , 06:27 PM
ya and a forum thats been hax0r3d like 5 times including that infamous 2012 episode where it was down for weeks. or mebbe it just felt like weeks. regardless, every single user had to reset their password. ya that was about as much lol 2p2 as possible.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD **
$25m Guaranteed WPM on CoinPoker
Join the action now
Daily Rewards • Splash Pots • CoinRaces
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD **

      
m