We've had a mix of ~40 t2.u & c4.l instances running for a year with no downtime. Our i3.4xl has fully borked twice (memorable when we lose the ephemeral drives and need to reconstitute the analytics data).
Though it will be much more expensive and less performant, we're moving the system to an RDB-backed c4 soon for reliability, the people time to recover is too expensive.
Companies are looking for what you as a candidate can do for them.
Self-study or taking a class signals some level of "I tried to learn this thing." So that's a start.
Even better is "I built X", where X is obviously based on skill you learned. In which case you can omit the class because you have proof of learning, not just trying to learn.
Even better is "I provided business value V to my employer by building X." Because now you're showing how this skill is useful to someone else. So using skill at work is another thing to try.
Ideal is you write the above, but emphasize V (or choose between multiple things you can list) in a way that suggests you can help the needs of the particular company you're applying to.
So there's having the skill (which is good), but there's also how you present it to show it will provide value (also important).
More on the contrast between having engineering skills and marketing yourself here: https://codewithoutrules.com/2017/01/19/specialist-vs-genera...
I'd say if you don't want to work for a large, respected company first, it's a waste of time. Your degree is your entry ticket to your first job, not more. Later on, you can even work at Google if you want - just make a great product and get acquihired.
Three tips on what you should do instead:
1) BUILD something and show off your skills. Like, continuously. Always have your own challenges, do something about them, put your code online on Github. Host it so it can be seen and played with. Work towards a goal and learn what you need to learn on the side.
2) Focus on applying to companies not listing a degree in their job ad. You'll see there are quite a lot of them.
3) Don't focus on your lack of a degree in any interviews. Don't deny it, but just don't make it seem a deal. Often times, people won't even ask.
If you need structure to go through a few years of coursework on your own, you should go for the degree. If you just want to learn how to put pieces together and not learn how/why they work under the hood, you should opt for something else.
As with most questions about going nontraditional routes, you have to be really good to compensate, and getting really good is constant exhausting work.
Also to add to that most of the work in ML is feature engineering, data cleaning, testing and building pipelines which all require a good software engineering background.
But, honestly, I think it is very difficult to learn data science by yourself. Someone with experience teaching you will make a huge difference. Data science is different than programming as in programming you can see step by step what is happening, in data science most of times it either works or doesn't. And you know it after your algorithm has run through all data for at least an hour. It is really hard to learn this way, you need hints that only someone with experience can provide to you. Moreover you can do a lot of mistakes without knowing it, for example, when cleaning the dataset people use the whole dataset to fill gaps and them split it for training and test. It feels right but that it is a huge mistake that invalidates the whole experiment (because you use information from the test set in the train set, to fill the gaps).
yes, most likely they won't hire you for a "Data Scientist" position, but there are related jobs out there you can be qualified for if you have programming skills and understand DS stuff to some degree.
I've seen setups where a PhD with a "scientist" in his title would act as an architect/co-team lead with a senior engineer running a team of developers.
Someone has to implement DS' ideas after all and unless we're talking a really small team (or a jack of all trades DS) where DS has to write all the code himself - there is a need for developers with "some DS background" in those situations.
If you are like AWS and say that using logistic regression is machine learning, then yes, you can teach yourself data science. Learn SQL, read a couple of books on logistic regression, use some open data for building a couple of models. There are many companies where you can have a decent job and an easy living with SQL and logistic regression on your tool belt.
If you say that data science starts with automating stock trading or building the intelligence of self driving cars, than no, you can not teach yourself data science. You will need at least one degree. Or more.
Also many jobs that aren't data science jobs per se offer many opportunities to do data science type things. Get a job at a company that works with a type of data you find interesting, and that perhaps doesn't have a dedicated in house data scientist, and every time an interesting data related challenge shows up just go "I have a good idea on how we can approach this" (assuming you actually do). Next thing you know people will coming to you with their data science problems and before you know it you have several years of data science experience on your CV.
(1) You could focus on building data processing platforms using, e.g., Spark. This will get you very close to the data science folks and you could probably end up doing some interdisciplinary work if you wanted it and demonstrated enough interest and competence. At the very least, people who can build highly scalable data processing systems and who also have a reasonable understanding of how the data is being used are very valuable.
(2) There are lots of companies out there that don't engage in data science/machine learning at all. You could join such a company and represent the push towards developing a data science or ML division or team. If you're successful this could also get you major credit as a manager as well as putting you very close to real-world data scientists and ML projects.
The skills required for each DS role vary a lot. I wouldn't expect a cloud expert to have learned about the Hadoop stack or HPC workflows in school, at least not to a useful degree. The same goes for DBA or business analyst or data wrangler.
But statistics and ML lie at the other end of the spectrum. These roles require a hierarchy of formal skills that are rarely mastered outside of college. They're expected to keep up with the research literature or formal techniques, which almost always requires the math skills of an engineer or mathematician.
Remember, HR everywhere is technically clueless. If management doesn't tell them the precise set of skills needed for the job, they'll minimize risk and ask for more expertise and experience than is needed -- usually in the form of excess degrees or prestige or buzzwords. The best cure for this is to bypass HR and go straight to a technical manager who knows what s/he wants. That's hardest at large corporations, who tend to outsource their HR needs to the lowest bidder.
At a smaller company, a lack of degree will matter less. If you can convince them you know what they need RIGHT NOW and can learn future material quickly, that's what they want to hear. (That's probably what the bosses of the startup did).
Or if you're targeting a specific project, then if you can show (e.g. via Kaggle or an online portfolio) that you clearly have the needed skills and you're not just a script kiddie, that speaks a lot louder than a mere degree (especially if it's over a decade old).
Obviously, you'll have problems getting past HR/filtering processes, and knowing more than whoever interviews you is a high bar.
It never hurts to learn new things. Another HN poster suggested this channel for beefing up on linear algebra, and I absolutely love it .
Don't listen to them. Every professional will at some point in their career be judged by those less capable.
I don't have a degree but work as a data scientist at a research institution. I'm self-taught and was originally hired as a software engineer on the basis of my projects and work experience.
It's true that you have to convincingly make the case for your competence, but a bachelor's degree is really at best a certificate of minimal competency in a subject. Its signalling value quickly gets swamped out by actual work experience where you're continually learning and improving. So there's a great hack: just do actual good work and put it on your resume. Your portfolio of work should convey your competence so well that having a degree wouldn't really add anything. (So you can skip the degree, but you'll still have to put in the work.)
Remember that any healthy organization wants to hire for competence at job duties. If some company rejects you for not having a degree because the hiring manager has to cover their ass to upper management instead of optimizing for getting work done, you should really just be glad that you dodged a bullet.
I think what's most important is to keep growing and learning. Pg had it right: "If you're worried that your current job is rotting your brain, it probably is".
With that said, a lot of companies hiring for data science roles fall into the category of software startups -- larger companies like Google or Facebook are looking for specialists who tend to hold degrees. But at smaller companies, you can be more of a generalist and there, the old mantra of "show me what you've built" often applies. You could build out a data science career if you found just the right company.
By no means is it easy, but I wouldn't say it's a waste of your time (unless you have some incredible opportunity cost you're using up).
If you were to go about doing it, I found this blog post that can help you with your plan of attack: https://www.springboard.com/blog/learn-data-science-without-...
I've worked around/in data science teams at a large BigCo and I think that you're far overestimating the bar here. There aren't enough people to who can write data pipeline code (SQL/Shell/etc.), much less implement and intelligently explain statistical/ML models. Also, the average decision maker here does not understand the difference between 'created model in Pandas' and 'created model with Amazon's ML API'.
The modal background of data scientists in industry is closer to 'Econ BA + knows Python' than 'Artificial Intelligence PhD'. Moreover, the former will still enjoy a remunerative career if (s)he's sufficiently savvy about identifying problems and showing off how they can be solved with technology.
There may be a point in time when companies can't get a return by throwing math-savvy programmers at a problem, but that will be long after you and I have passed from the scene.
If you're coming from a programming background, I'd suggest becoming a Data Engineer with the goal of becoming a Data Scientist. I've had several students do that. They were general programmers who learned Big Data/data engineering and eventually became more technical Data Scientists. You can start to learn more about the whys here: http://www.jesse-anderson.com/2017/03/what-happens-when-you-....
Their programs express job placement as a perk of graduation.
Educating for the "jobs of the future" is one of Udacity's goals, data scientist being one of those jobs.
Suppose you are setting up a convolutional network to recognize some special object for a company. You will need to understand that math to know what parameters to tweak.
Is it the learning rate? Is it the way you randomized the weights? Is it the activation function?
Although, in fairness, I don't think even a PhD level candidate works out what the reason is likely to be. More than likely they have a few heuristics in their head (oh, it stops learning too soon, let's just drop the learning rate. Oh, it never converges? that activation function can't propagate error and so on).
The point is that you have to know the theory to be useful. It hasn't been worked out. It is very much a living science project. That's the fun of it though.
Along this line, you would just be a "tech", not a "scientist" That's not to say you won't be real well compensated.
Data Science as in you are someone able to make sense of the myriads of conflicting data, derive pattern, synthesize bits and bytes into action plans, there is no degree in that :)
As an example on this line of thought, people may win the Nobel prize in Economics even though they may have no idea on how to use Excel :)
Don't get so caught up in the "degree."
I've met individuals with graduate degrees in computer science (i know OP asked for data science, but the overall point here applies to any field) that didn't hold a candle to self taught developers. If you're actually passionate and interested about something, you will become extremely well-versed in it. On the other hand, if you're not excited about data science, a degree with probably benefit you more than without one since it will force you to learn the topic.
In a nutshell, it's up to you to make yourself valuable and present that value to the world - a degree is just a shortcut for recruiters to filter on, but you can skip recruiters and talk to anyone in any company.
After, meet your boss and tell him something like "I can make this process 10-20% faster with a 3 month projects"
If he accept, you will have data science real world experience in your CV and it will increase your weight on the CV stack when you apply for data science jobs.
So no, not futile.
If you don't know how good you are relative to the competition with PhDs, then it would be worth it to have a discussion with people who have a taste for the field.
It is computing the derivatives of the error with respect to the weights.
If you feel comfortable reading that then you are good to go.
What a self-taught DS would need to do in order for me to feel comfortable hiring them is have a public body of work that I find impressive.
There are a huge number of publicly available datasets packed full of interesting information. Someone that shows they can do the work with a few findings on their github would be equivalent to a degree on a resume.
Even brushing up on probability and linear algebra has benefits. Your learning a skill set that you can use in other areas of life. Heck, if you have kids or will have kids someday, you will have the knowledge to teach them valuable skills.
Would a four year PhD, let's say in ML, be a worthwhile investment from a data science career point of view?
I saw a mention to David Barber's book in one of the threads here, but what else?
Like this Open Source Data Science Masters: http://datasciencemasters.org/
If you want to get a start as a self educated person in IT then, learn what you can on your own and then reach out to contracting firms. Get a few entry level contract gigs under your belt in order to pad your resume with some experience and then move up the ladder.
It's possible to maybe help another team and sequel that into a data science job internally, but outside, forget it.
P.S. It's called statistics.
something to ponder: you just have to know enough to actually deliver on something management wants, and know more about it than everyone else at the company.
Ask the ones who leave, but wait 5 months until they're comfortably settled into new employment. You can bet they'll give it to you straight, but you might not like that either.
If a senior member of the company scheduled a meeting and then asked me on the spot what I would improve about the company I wouldn't be able to give any good ideas.
If instead they sent me a note saying that in three days they would like to meet with me for twenty minutes, and that during this time they would like to hear my thoughts so far about working for the company and to please think about ways in which you think the company can improve. I would be able to provide many ideas in this scenario.
1. The formality of the process.
2. A lack of previous informal conversations. The first time the boss shows up in a new hire's office, a good strategy is often to keep one's mouth shut.
3. Only asking new hires. A sophisticated new hire may realize that they do not know the big picture. Other new hires may not want to throw their team 'under the bus'.
4. The homegrown Google docs and in-house libraries are all "somebody's baby". And if they were a priority problem, then the founders would have fixed them. They haven't, so what is the point in mentioning something that obviously will not change.
My random internet advice:
1. Come up with a real plan to fix the problems everyone knows about.
2. Ask everyone how to improve the process, not just new hires.
3. Build a culture of trust.
Given all that I still think you won't get much feedback until you've done this a while and the current employees let the new hires know that there are no issues with them telling you that things are wrong.
That way you start by being self-critical, which makes people feel more open to complaining.
Btw, remember if you ask this... you have to follow through to _fix_ some of these problems or you can lose trust. Only ask if you really do want to hear feedback and action on some of them.
This can get you get to the roots of problems. Take their advice on administering.
From what you stated, it sounds like the company is in a hierarchy power structure where others don't want to stick their head out too much.
At only 20 people, to have this problem sounds like a problem. Getting an external consultant to do some investigation seems to make sense.
Sounds like what is happening here.
You would probably get more benefit by asking questions that are more related to company culture, such as, how they're settling into the team, how they find the team morale/company culture, who in the team has provided them the most value so far. Those type of questions would hopefully help the new hire understand that you care about the culture at the company and also helps build a more personal relationship, which consequently will build trust between you and your employees to allow them to truthfully answer your initial question a few months later when they are more embedded into the team.
Definitely keep up the regular engagements with new hires though, despite not necessarily receiving the answers you're looking for.
 Are you hiring from a pool of developers who used processes/tools that are the same or inferior to what your company is using? In other words, your company is already excelling compared to their previous experiences.
 Could you be hiring from a pool of developers who have been previously conditioned or selected to "keep their heads down"? From the outside looking in, the finance world seems pretty rough and tumble. The geek/nerd response to being with a bunch of jocks is be to stay quite. [I'm a geek/nerd in case that can be taken the wrong way.]
 Lastly, honest feedback requires either anonymity or trust. Trust is tough. A single case of a guy getting marched out by security when he told his manager "I'm not happy with my salary." trumps all the other times a manager tells someone, "If you're not happy, come see me." Heck, seeing someone marched out by security for any reason destroys pretty much any trust in management. If your new hire worked a place like that before, it's understandable that he might be reticent to trust his new company.
Or, they don't really feel comfortable giving feedback about how to make it better. Maybe they already make such a good salary that they are afraid to risk it. In this case they are disincentivized from actually giving you the feedback.
Have you tried doing a hackathon week? No normal work except system operations but have everyone work on a new feature or streamlining of an existing process. Have you tried offering bonus for people who offer up new ideas and plans to improve the software and processes?
this may be exactly what you need for development, but it'd probably be healthy to bring in some more precocious elements ... maybe as interns so you're not committed to a culture shift
Let them know you are building a manual to help other new hires. Maybe even let Senior people add questions or answer it. This would be sort of like an internal StackOverFlow for just your company, but organize it as a manual.
So instead of them trying to identify what you should be doing better, they just inherently point out where they are getting tripped up in your process.
The only other similar thing that comes to mind is how Tim Ferris wrote about this method of maintaining a FAQ to automate the customer service process in the 4 Hour Work Week.
I think employees at that point would be more willing to offer up requests for improvement.
Maybe do your issue tracking first, and set aside some thing (story points if your agile, time per week/month, etc), visibly there for process/structure/tool improvement in the issue tracking.
That way it feels much more like -> we have something we could do better, and the guys are trying to improve that, let's do that with them. While 'critique' immediately feels negative and kind of creates a barrier.
I submitted ideas at BigCo to their Bright Ideas program and basically got rejection letters and felt crapped on. Expecting me to not only see that something could be improved, but also provide a fully formed solution that would pass muster politically was probably just an exercise in how to make new people feel like they don't belong at all.
Let me suggest you come up with something like a suggestion box or constructive feedback box where you can at least hear "I see a problem with X and my (possibly off the cuff solution would be Y" so you are getting some kind of feedback.
Good communication is incredibly hard, much harder than most people seem to appreciate. Actual good communication tends to be a long, drawn out process. You need to foster the first step here of "I just want to hear what you think is going badly" and that requires trust, assurances that it won't bite them in the butt and willingness to really listen and take it seriously. All of that is extremely, incredibly hard to do. If you, as one of the founders, cringes or winces because someone said something not nice about your baby, you can expect that no one will want to say anything again. You will need to really work at making people feel not only okay but actively good about pointing out problem areas.
This runs against the grain for the vast majority of social experience that the vast majority of people have. "Don't rock the boat" is pretty deeply ingrained in most people. "Don't question authority" is another biggie. It is incredibly hard to convince people you really and truly want to hear how you can improve things.
So, start with finding some method other than one of the founders getting all up in their face to try to give them a safe and welcome path for tossing out ideas. Because this is not it.
Here's how I implemented what you're asking to my company:I would first ask how they are doing and how the project is going. And then I would ask if theres anything we could improve - the first few times, nothing. After that, they would tell me improvements (finally)
People are worried of giving criticism because you're effectively asking them to rate/evaluate your performance. However, when you ask for advice you're either asking what the other person would do in your shoes or you give them an opportunity to boast about their knowledge. While the end goal is the same, at a psychological level, the perceived reason for the question is different.
I'm a sample of one, but when I was 25, I would have tons of feedback after my first couple of weeks in a company. Much of it was bad as I hadn't been there long enough to know why things were as they were.
Now that I'm 40, it takes more time before I have any meaningful feedback. I'm more comfortable with what I don't know, so consequently, I'm more comfortable reserving judgement until I know a little more of why things are.
That said, I have a couple of ideas:
1.) Schedule the 'feedback' session more than a few weeks into their job.
2.) Give your new hires some time to prepare. I think it's best to assume that individual contributors feel uncomfortable with spontaneous, candid conversations until they prove otherwise.
3.) Have you considered trying an anonymous feedback system and comparing the results?
For example: you call out your Google Docs tracking system as something that should be obvious. But that's probably not obvious after only a few weeks. Some companies (especially smaller companies) can get by totally fine with that, and if you've only been at a company for a few weeks, you don't know what kind of company you're at. If they tell you that your Google Docs tracking system is bad, they're probably just reacting to it being different than what they had before.
Anyone who responds with a long list of grievances after only a few weeks is probably the type of engineer that you _don't_ want on your team: it probably means that they're unwilling to evaluate problems and solutions within the current context.
1. Implementation skills: can implement a solution, e.g. knows C++.
2. Problem solving: given a problem, can come up with a solution. "We need an API for X" -> can come up with a design for the API.
3. Identifying problems: can notice problems exist.
(Probably other skill trees as well.)
Assuming confidence, trust and culture aren't an issue, it may just be the developers you're hiring lack the relevant skills to identify problems.
These skills are rarely if ever taught explicitly, so many programmers get by with just implementation skills, or just implementation and problem solving skills. As you realize, though, problem solving and even more so identifying problems are key to productivity (https://codewithoutrules.com/2016/08/25/the-01x-programmer/).
Maybe you should consider teaching these skills, or change hiring process to screen for them, or both.
I'd say a few weeks in a short time to get up to speed. The biggest problem is that lots of places are "different" and not just "better". Often I'd like to do things the way I did at my previous job but that could just be unnecessary - taking time to change and breaking everyone elses process.
I would ask more specific questions. Like if you want to improve CD - ask the guy what tool they used in their previous job and how well did it work.
Someone else mentioned monthly informal chats I'd agree. Over a beer after work you can talk about old companies and what your employees miss about them.
Hey, we have some issues here and here, this is how we are working towards improving it. For example, we could be doing a better job at writing documentation, etc, etc. What I love about having new developer join us is the new ideas they could bring on board, we are open minded to learning and getting better, from what you have seen so far, what can we do to improve? What should we try?
Remember it's stuff you've seen everyday for 14 years, and these people have seen it for maybe 20 minutes. I'd suggest giving them some flow charts / high-level info either in advance or with 20 minutes of quiet time on-site.
The only people I'd expect to respond in the current setting would:
1) Have really high natural intelligence to pick everything up super fast, 2) Be really confident in their skills in the relevant disciplines, and 3) Be really confident you'd take feedback constructively
There's an enormous amount of perceived risk on their end as they have nothing really to gain, and everything to lose.
And I say perceived because it sounds like you're a good guy and are genuinely seeking honest feedback, but they don't know that, to them this whole thing might be a shit test and if they say the wrong thing they could get on your, the founders, bad side.
Did you go to one of the company founders with problems and solutions?
I would be very wary of such an ask unless I had a pre-existing relationship with the person asking the question. You also may have folks telling your new guys to STFU.
Did you frame the conversation in advance with the new hire? Tell them - I want you to make a critical assesment of everything we do. We'll meet again in a month's time. I'll be looking for specific, actionable ideas on how we can do things faster/better/smarter. What would it take to grow 10%?
If new ideas your desired outcome-- formalize the process with a Quarterly Brainstorm/Review pulling together thoughts from the entire team. Then select the top 2-3 to work on. The process helps foster a culture of strategic thinking and innovation.
A few examples of how this could be done:
Give them more than a few weeks to get comfortable with you and the company culture. Give concrete examples of things that have improved due to employee feedback.
And it creates a great feedback culture as i can give feedback as a normal user or anonymously and i can even vote anonymously. The simplicity reduces the perceived effort and makes it more likely that someone gives feedback. The optional anonymity takes out the fear.
(Disclosure: I work for STOMT)
How about building up a relationship with the people first by having regular one-on-ones?
You need to put something concrete behind your words. One off-the-top-of-my-head suggestion: Have a few current engineers start working on some of your known problems as part of their responsibilities. It doesn't have to be 100% their job, just a "kaizen" approach is ok (improve some small part each time they use it). Let them know it will be part of their evaluations.
Now when you ask new employees point to these examples: "John noticed our tracking system was crummy and important issues were slipping through the cracks, so we offered to let him be in charge of re-vamping it."
Obviously you'll have to manage what you allow them to improve, and who gets to work on it. This idea isn't perfect, of course, but the idea is to show them you are serious about these suggestions.
X% of management is aligning incentives (X is some large number). Think about how to incentivize them to give the information you want, and how to remove disincentives. Money and responsibility / autonomy are the most basic incentives.
List those on a piece of paper and have the new developer add one item.
>> Any ideas how we can get feedback from our new developers on how to improve?
The devs in question may have real issues with confidence. Straightforwardly saying up front that their feedback is hands-down not going to get them fired or affect their position or compensation may help a lot here. Explaining how to give feedback, eg by focusing on objective criticism and avoiding personal attacks (and similar common-sense sentiment) may also help.
It may also be useful to think back to when you'd just started at the six companies you mention, and spend some time remembering the mindset you had - in particular the divide that was present between the ideas you had and the difficulty, if any, that you had with actually sharing these ideas. For these new hires this same exact situation is playing out with your employees.
Maybe the company culture could focus more strongly on feedback from the start, instead of abruptly posing the question a few weeks in. It should be integrated into the onboarding, possibly be part of the hiring, etc etc, so that new hires associate "$company == feedback". That may help with the intimidation factor.
Hopefully an approach like this results in a steady stream of feedback from the start.
You're right that ideas developed when adjusting can sometimes have a kind of 20/20 clear vision, but that they can also be bad because they don't fully grasp all the implementation details or culture or whatnot.
It may be a good idea to wait two months+, or until the person in question is consistently producing output, not much surprises them and they seem almost bored, to start looking at some of the less likely-sounding tidbits that come back. I can tell you that if you waited say six weeks before asking me anything I likely would not spit out any useful metrics due to nerves and the newness of everything.
One idea that could be interesting is to start a feedback page somewhere (perhaps a wiki page - or a Docs document everyone can edit would be a start), and add everything you can think of. The hope here is that since there's a bug list, a) there's now an already-started thing so people don't have to overcome that intertia, and b) people will go "wow, this is fairly scathing" and won't feel so bad adding to it. :P
I was also wondering about making feedback anonymous; this could be a good last-resort, but I wouldn't immediately try this: "oh, that was me" is too likely to come out at the most (needlessly) awkward of moments, it promotes a "you can't be honest" mentality (!!!!!!!!), etc. Like I said, very last resort, not recommended.
This topic reminds me of the "customers don't know what they want" problem - asking customers directly what they want in terms of new features or improvements can sometimes simply not produce actionable results, or result in false leads that can take an extremely long time (and in some unfortunate circumstances a lot of money) to discover aren't the core issues. Figuring out how to find the core issues can be tricky. (I unfortunately don't remember where on here that I read about this, but I do remember there not being any simple solutions; if anyone has any links I wouldn't mind remembering!)
If in fact that's what you've got, you need a massive change. Promote based on demonstrated positive impact to the entire company. Encourage risk takers, discourage blame. The people you want working for you would never work at the kind of company I describe above.
Not sure what the solution is, but I feel like building a culture around "best ideas win" and rewarding the process of coming up with improvements and implementing them could be good. You could seed this at first with improvements you were already trying, but when people see "Hey, Joe Schmoe came up with this great idea and now we do it" would be a boon to your improvement culture.
* Your friend may have given LinkedIn access to their contacts and now LinkedIn will start spamming you to connect with them.
* You have a friend-a and friend-b who both gave LinkedIn access to their contacts. You're in friend-a's contacts but not in friend-b's. LinkedIn can assume there's higher than random chance that you know friend-b. LinkedIn will probably try to spam both of you to connect with one another. Why not, right?
* You have a friend-a and friend-b and friend-c who all gave LinkedIn access to their contacts and you're on all 3 but none of them are in each others. LinkedIn will probably try and spam all 4 of you to add each other.
There's prolly plenty more and a team at LinkedIn focusing on just this. Anyone else care to add clever ways to infer connections?
But, they did have some dark patterns you might have missed: https://medium.com/@danrschlosser/linkedin-dark-patterns-3ae...
The feature basically just gives back empty results when the app tries to access, I wish it just fed it back garbage made up accounts.
> "We're deploying some abuse detection and reactive measures to deal with impostors that might try to abuse this sort of attack. Given this, we do not intend to perform validation that the URL matches the branding information."
That last part was in reference to one of my proposed mitigations, which they chose not to implement.
Here's the discussion on the IETF OAuth WG mailing list from that same time period: https://www.ietf.org/mail-archive/web/oauth/current/msg07625...
Yes, we sent the inbox to a blackhole but keep in mind, Mailinator does not and can not actually "Send" any email.
It's a receive-only service. As always, any email "from" @mailinator.com has had it's reply-to forged (which is pretty trivial).
Also - even before we blackholed the email, it's unlikely any email in that inbox (i.e. hhhh..) was read. Each box has a 50 email limit (FIFO) which was immediately overwhelmed. You couldn't click fast enough between seeing the inbox list and clicking an email.
Mailinator is simply a "receiver" in all of this but we have no indication our servers were otherwise involved.
If you fell for this, changing your password is not the right solution - you want to log into your google account and remove permissions from the application.
https://myaccount.google.com/permissions?pli=1 should show a list of apps connected to your account.
Also, if you fell for this, you sent a bunch of emails to people like the one you received, so maybe tell them not to click.
1. I can't believe Google doesn't have basic filters to disallow developers from registering an app named "Google Docs"
2. Perhaps there should be some more validation/limits associated with allowing apps on the platform that can gain full access to email. A secure email account is the One True Source of authentication in the digital world. Google should make it way harder for people to get tricked into granting full access to their inbox.
the root problem seems to be that the identity of OAuth Servers is not authenticated/clearly shown, i.e. a malicious app can claim that its name is Google Docs even though it is not endorsed by Google.
IMPORTANT NOTE: If you are running any website that has "Reset my password" it might be used by attacker, since even though the attacker does not have access to password, the attacker had access to email inbox. Thus the email password reset flow will allow attacker to compromise other websites that rely on Gmail account for password resets.
Below is the Hired notification.
Important: Email Phishing Alert
Hi <first name>,
It has come to our attention that some of our users may have been hit with a Google Docs phishing scam. It appears that this scam has been spreading throughout the internet today, and is not isolated to Hired or our customers and candidates. If you want more information, you can read about it here or here.
If you receive a Hired email that says that someone from Hired has shared a Google Doc with you, please validate with the sender before clicking the link or doing anything else.
If you think your account may have been compromised, be sure to change your password immediately.
We apologize for this interruption to your day. Please let us know if you have any questions.
Thanks, The Hired team
This is what the attack actually looks like: https://twitter.com/zachlatta/status/859843151757955072
Edit: How I got this:
Someone on reddit went to their site when it wasn't down, and downloaded the files linked in the page's HTML. I just posted it here.
This isn't the full source code. There was another PHP file visible on their website that unfortunately isn't visible anymore.
With all of Google's machine learning expertise, how is it that this got past all of their SPAM detectors? It took me 2 seconds to hover over the link and see it was a crazy link that ended up at a domain called google.pro. Really? One of the world's largest and most advanced email systems couldn't figure that out?
On initial inspection the URL looks harmless, but it's got some malicious params in there, mainly
> We're investigating reports of an issue with Google Drive. We will provide more information shortly.
It has come to our attention that some of our users may have been hit with a Google Docs phishing scam. It appears that this scam has been spreading throughout the internet today, and is not isolated to Hired or our customers and candidates. If you want more information, you can read about it here or here.
1) I clicked on the link on my phone's email app. It looked super believable since it was coming from a person I was expecting a Google Doc invite from. I allowed access to "Google Docs" and then the page hit a 502 gateway error.
2) I tried it again on my computer by logging in, and this time, when the page was loading (after I allowed access), I saw the website was not legitimate (based on the url) SO I immediately closed the tab.
Here's the interesting part: None of my contacts got a "Google Docs" invite from me - meaning I didn't "send" any mail. Any idea how I can see if the person behind this has my emails too via API requests?
I guess that might finally change now.
The link went to a page that looked like Google Docs and asked for my Google login, but I noticed the domain was wrong so I didn't sign in. I tried the link again today and it looks like Chrome does flag it as a phishing site now.
I'd be curious at the postmortem how quickly this thing spread.
Though this is unrelated to the topic I think it would be good if Google reviewed apps permissions in Google Play too because users are bad at this.
I decided gmail wasn't for me when I read they harvested your emails for ads. 1GB in 2004 sounded so enticing too!
If you are technically savvy and have access to a static IP, I highly recommend setting up postfix/dovecot and registering a domain. It's fairly straight forward for technical people. You can have it setup, soup to nuts in an hour or two. There's online docs everywhere.
It's probably not going to be as secure as a gmail, but it's a much smaller target. Most internet providers will give you a static for an extra $5 or so.
It looks like Google removed (at least one of) their access tokens
Checked the URL containing:
don't click on unknown links which take you to Google login page and never approve access to your data in any dialog?
double edit:1. replied in above comment.2. dunno. first time using HN, accidentally submitted twice when I was on comment posting cooldown I guess.
In the meantime, enjoy your family time because your kids won't always want to spend all their free time with you (they'll have friends and hobbies to compete with you).
Make sure to exercise. So many on HN experience health problems that originate from inadequate exercise. 30 minutes per day should be sufficient.
8 1/2 hours of sleep per night seems to be an hour longer than what I would expect would be necessary, but if you're getting woken up by a baby then that is good time budgeting.
Having kids emphasized what I already learned in the food industry, don't do silly extraneous tasks ever, and do things as fast as possible without compromising what I do. I rarely wait and do one thing at a time when I'm trying to get stuff done. For example, I'm normally cooking one meal and prepping the kids lunch at the same time.
Unless I absolutely need a break, I don't watch T.V. idly. It maybe in the background, but I'm normally only half paying attention. I turn on CC so I can read the text, and half listen. Watch videos to learn something? You can read (I've heard 4 times) faster than watching a video, so I almost always take that route. The one thing I don't do is listen to podcasts in the car. That is reserved for NPR to catch up on world news.
Most of the time when people want to meet dealing with business, I demand an agenda, then I decide if it's worth it. I've been known to be ruthless at work with this. I focus my life around things like this.
We noticed before we had our first that our friends who were divorced with kids actually got out once in a while, because they shared custody. So we have what amounts to an oncall schedule - certain days I'm 100% in charge of kiddo, certain days he is. There's some exceptions for commute stuff - daycare is closer to my work- but this means you sleep in on your weekend day off, and you can schedule nights to game and hang out with friends, etc.
Most of the time we aren't out; kiddo is fun. But the difference between hanging out with a kid and being in charge of them getting their needs met is pretty significant.
Re: commute, I'm hauling the kiddo in with me on my bicycle, dropping her off at daycare, and heading to my work. It's exercise and commute together and I love it. It's about 40 minutes one way, so I have to be careful about not over training, but it's awesome otherwise.
Edit: We also do side projects on our off nights. And we pay people to clean/do the yard work, which also does a lot for free time.
What I've found works is to be consistently working on same side project over time, dedicate some me-time and set small goals. Instead of trying too many new things, stick to same side project for months at a time. Also "book" a few hours every 2-3 weeks for myself and go work at a Starbucks instead of staying home. Finally set small achievable goals; what I would want to do in 1 day, spread that over a month.
1. My side project is my life. I don't use the computer at all outside of work. I play with the kids, do stuff around the house, spend time with my wife. 2. I moved to being remote full time after killing myself commuting in SoCal. My enjoyment of life has increased tremendously. 3. Like others have said, I don't waste any time. I read Twitter/HN when I'm taking a 15 break in the morning and in the afternoon, but otherwise I work when at work. 4. I pick up new technologies while at work. Part of why we are paid so much is we have to stay on top of what is the latest and greatest best practices. This is like Doctors reading medical journals for their particular area of practice.
I've only really managed side projects during my paternity leave whilst the baby was sleeping or during a period of gardening leave. That's more than prior to kids as I spent most of my free time climbing, skiing and going out. We also rebuilt our house last winter and finished the interior off over the past year. This spring/summer my 'side project' is a lot of manual labour sorting out our garden.
I've always learnt new stuff at work and have been lucky enough to get work that has been pretty new and different each time which obviously helps a lot.
1. Changed jobs to a balanced work/life job. 2. No longer a developer, but still in IT.3. 12 minute walking commute (no buses, cars, or bikes)4. Moved downtown - smaller house than most people, but as noted in #3, walking commute to pretty much everything.5. My side projects are my kids, as they are very young and are not independent by any means. I've dabbled in tiny project which was python to grab Scotch prices. But that was 6 hours. So yeah, not much time. Also, my "heritage" home is a bottomless pit of maintenance, but kind of fun as the kids get involved.
I would say either you work remote, or work from home 1 day a week if you really like your current job. Is it possible to find a closer job? You can gain at least 1.5 to 2 hours hours a day right there.
I cut down my workload dramatically to spend more time with them and I don't regret it for a minute, they grow up so fast. I look at pictures only taken a couple of years ago and the change in them is vast.
You might look to commute less but working at home just didn't work for me, kids get home at 3:30pm and forget trying to concentrate after that. I can still find time in the mornings before they get up at 7:30 if I need it.
Enjoy the ride, for me (and we're all different) my family is more important than any side project.
I have a similar 1hour commute but I only need to be in the office 1 day a week. On the other 4 days I get up at the same time (5:30-6:00am) and I work on my side projects until 8am when I bring my daughter to school and my home-work day starts.
My plan basically. Only step 5 to go.
I work on side projects in the evenings, and at the weekends. Having kids has impacted free-time, as it always will. In order to maximise productive time, I gave up video-games entirely.
> I commute every day 1 hour in each direction.
I know some people are stuck in this situation but I would really recommend finding something closer or getting a fully remote job.
I have had a 100% remote job for the past 5 years and it has made all the difference. I wake up, get the kids breakfast and then head over to the standing desk and get to work. Since we homeschool I always eat lunch and dinner with my kids. Working remotely is the only way this would be possible.
> where do you take time for your side projects or studying new technologies
I do this mainly on the job now, currently learning/implementing Terraform and studying for AWS exams. Take on new challenges at work etc. I also freelance, where I am exposed new tech and challenges.
> full stack developer
There are tons of remote jobs for that skillset, I really encourage you to look elsewhere.
I have 3 kids (8, 4 and 2). When I reflect on the past 8 years my most enjoyable experiences have been first with the kids, wife and friends.
I took steps to work from home after my first child was born. This has allowed me to work at a high demand start up and spend quality time with my family. Now I get to take "wrestle breaks." Best 20 minutes of my day.
Kids coupled with dieing grandparents help you to think about the big picture. I will not be one of those people on their deathbed wishing I spent more time with my family. Know what you have before you lose it.
1) sleep (a normal amount, not extra)
2) being an OK parent
3) a house that is almost always fairly clean
4) side projects/learning
6) a relationship with your partner/spouse that's doing OK
7) actual solo leisure time
Pick four. :-/
[EDIT] Oh, and "staying halfway in shape" comes out of your "actual solo leisure time" hours or possibly "friends" hours if you have the right kind of friends for that.
Before they were born, I always reserved some tasks for weekends, and spend several hours coding at night during workdays.
It took me almost three years to realise that this was absolutely not compatible with family. I used to "steal" sleep time instead of family time, so I ended sleeping between 2 and 4 hours a day.Even productivity was good, I was always tired and in bad mood.
While it was really difficult to change long term habits, I work now from 9.00 to 17.30 with 15 minutes commute time, I dedicate most of my non working time to my kids and wife, and I am now a extremely happy person, and also the people closer to me :)
And productivity has grown because I can focus on the really important things, both at home and at work.
If you value your time at $100/hr (probably low end of the spectrum for a skilled dev in most of the US), that comes to an opportunity cost of $4,000/month you're losing to driving back and forth. And that doesn't even start to account for the actual costs of driving, nor the mental energy of dealing with doing it. (I want to bang my head against the steering wheel after 30 mins in traffic, and then spend at least twice as long decompressing and not productive after that.)
I know that's very different than $4k cash for most people, but it's worth thinking about
Every choice that reduces your time spent developing affects your life as a developer. It doesn't mean you can't be a rockstar as a single dad with 5 kids but it may be harder. Ultimately you have to balance things that make you happy and work.
So... that's how open source projects go to die, and the major reason why I no longer maintain procps. This was painful, but family comes first.
The concept of "quality time" is broken. You can't squeeze life into a few spare moments here and there, and you mostly can't schedule it. You have to live it, being there for the skinned knees that can happen at any moment. There is no substitute for being available.
Side projects are limited to things that can be done with kids. That changes as they grow.
Studying new technology is something I can do at work. I help invent it actually, and I dig into a wide variety of things, so that's fine. Maybe it is different for web developers; ouch if that is the case. I do low-level stuff.
A big difference is that I don't live or work in a "proper" city and haven't since I got married. I tend to live in the sort of place that is borderline big enough for a commercial airport, with perhaps 33,000 to 100,000 people at a density that is well below anything in the Bay Area. This lets me afford to live near work, and it means that there is little traffic. By car, my worst 1-way commute was 15 minutes. It's now about 3 minutes.
Compared to your hour-long commute, that 3 minutes is pretty much a rounding error. It's like I get an extra 10 hours of life per week. You have at most 4 hours for family on weekdays. Imagine if you had 6 hours instead.
I get that big-city life has more entertainment, but you don't seem to have time to take advantage of it.
You have two hours a day where you can't do anything but drive and think.
Audio notes are your friend, take them while your in the car.
What I find when I do this is that I don't really need to reference the notes after I take them! After reading this article ( http://www.atlasobscura.com/articles/pointing-and-calling-ja... ) I think I understand why now.
When I get the time to work on my own stuff I find that I'm much more efficient with it than I would be if I was just sitting down to stare at a screen, and I can accomplish a lot in 15-20 minutes a day on side projects, or research, or ....
Which is to say, I give up side-projects in favor of them.
- Allow parents to bring babies to work (0-6mo)
- Locate in suburbs where parents live instead of in the city
- Hire remote employees who work from home
- Establish a culture of taking an office break around 4-5pm then resume at 8pm for a couple hours
- Do social events during the day instead of after hours
- Suspend email delivery certain hours, such as 4-8pm, and on weekends until Sunday afternoon
- Same as above for real-time chat for most employees (some exceptions for things like sales)
- As an exception to above, have on-call schedules planned way in advance
- Flexibility on holidays to help synchronize with school schedules
Kids are essentially another full time job, with varied and unpredictable overtime.
My side projects have changed from web apps things to:
Making and laminating pictures (PECS) so my youngest can use them to communicate.
Attending various classes relating to ASD.
Fixing IT and Telecoms for the various local charity organisations that support us.
You just have to play the hand your delt the best you can.
Exercise (and for me, meditation) are important balancers too - don't neglect them for the sake of coding, you'll find that you just get burnt out.
Your schedule seems about right. There's definitely worse ones out there. Assuming you have young kids, they will become more independent with time to allow you to have time back for yourself.
My schedule is nearly identical; although I do have to admit I'm about an hour later than you for everything.
To become a semi-successful parent (is that even a thing? We'll see in 18 years) who still gets shit done I've learned to simply utilize every idle moment. It allows me about an hour of extra time for something during the weekdays, and makes my weekends more efficient. I tend to sacrifice my own sleep when I really need more time for something and it usually works out okay, as long as I don't make it a habit for the week (or I'll feel sick, tired, or just unwilling to over-perform).
Right now, I'm going through a home renovation, so the process is slow but it's considered my "side-project". The nice thing about it is that I can involve my kids in it to keep them occupied and still get a little bit of something done.
For keeping up with tech, my pace at work is slow enough that I can continuously evolve the software I write with new technologies and best practices. Before I started where I'm at, I was at a much more fast-pace place which was fun and exciting; but absolutely damning to my home life because of all the other stuff I've got going on. (And nothing angers Mrs. and Kids more than coming home at 8 or 9pm frequently).
I try to keep him entertained as much as possible so that she gets some time for herself even its just a soak in the bath while we play xbox or something.
It's been fun and hardworking but I dont regret it either.
Fortunately they share custody so it's usually half week here, half week at his dads.
That recharge time is important and something a lot of parents never get.
Work from home, so no commute. Work 6-8am Thursday, and then rest of the day off to look after the kid. Usually do a couple of hours on a weekend night, depending on what my partner's doing.
I try to do side-projects, learn new stuff, etc, at nights. It doesn't work too well because I'm exhausted.
I switched to remote hourly contracting so I'd be able to take the Thursday off, but trying to fit in a full week's work on the other days is exhausting. Losing the commute was great; the social isolation and loss of work/home separation sucks.
I think it's just tough.
My wife and I do split things up in ways that make it easier. So we each have a morning off, a weeknight off, and we split the weekends so we each get 1-2 blocks of 4 hours. This is obviously a luxury that is easier with two parents, one kid, etc.
As my daughter turns two, I'm amazed at how quickly her personality is emerging and developing. I've spent a lot of time thinking abou a blog post I read years ago by some founder or investor who pointed out that you really only get about a decade with your kids. From toddler to early teen years where their lives start to diverge and they have their own need for independence. That really drove home the point that this is an incredibly fleeting time, and I have to pay attention and be present, because once it's gone, it's gone forever.
What I'm trying out is getting to bed earlier (hey, if I'm too tired to do the things I value then maybe I should just sleep!), and I'm starting to exercise. I've been told that exercise helps 1) sleep better, 2) feel better, and 3) gives you more energy. We'll see how it goes!
But yeah, try to figure out a way out of that commute. Some people are able to turn their commute into productive time, but I never had the knack. My understanding is that this phase is just that, a phase, and as the kids get older it will get easier in some ways.
It wasn't easy to get the arrangement but I started off with two days of the week at first and then upped it to all five days.
If you can tolerate reduction in income, that's a respectable arrangement to start off with.
That's about 10 to 12 hours a day. It's a lot but I'm usually working on contract or my own business so I love my work.
I don't really believe in side projects. I believe in taking a plunge.
I usually budget 3 - 4 nights a week to side projects.
I saved most of my time by choosing to work remote/close-to-home. I don't make as much as some of my friends who live in the big city or out on the West coast. However I get to wake up at a reasonable hour, walk my kids to school, and stop by the caf on my way to work to catch up on the local gossip.
From about 8 - 11, 3... sometimes 4 nights a week I work on my side projects. I used to do more open source stuff but right now I'm working on a book  and testing the waters with a GraphQL service . I've also committed myself to recording one, short, album a month.
It sounds like a lot but I guess being a parent I've learned to juggle and be effective with what little time I have. I tend to pre-plan my activities and force them into habits, rituals that sort of thing.
Some days I'm too exhausted. But that's ok. Take a little time off and go to bed early.
Super hard to read through listings in a font not suited for legibility.
On the other side, I was never really into side projects in the evenings, simply because I needed that time to cool off and relax a bit. Without that time I would quickly burn out. The best is (and if you can) is to make your "side project" your day job.
The question is still if it actually affected me as a developer in the sense that I can not do the work anymore? No, it did not. I leave work earlier but that's pretty much it. I don't feel less productive than before. Actually I even think I am more productive since the time is more limited. It is all about what you make of it I believe.
Well, I see one obvious thing to cut without sacrificing your work or children, and that is the commute. Get yourself a gig that you can walk/bike in a short amount of time. Choose it well and you'll get exercise too.
Now, I know what you're thinking right now, I can't! Because of X, Y, and Z. Sure, understood in the short term. But, ask yourself where you want to be in a year or two?
If you start looking now, you can find a closer or remote job, or move home to be near a great job---over the medium term. Want to know how I know? Because, I've been doing it for twenty years. So when people say, "oh, I couldn't possibly" BS is called quickly. Good luck.
I also recently had the opportunity to change jobs and made it a point to join a place that doesn't believe in working long hours and staying late. (I used to work in an infamous place for long hours, then I left that to cofound my own startup which was again long hours even if more flexible.) My team here is totally fine with my 9:30-6:00 schedule with working from home 1 day of the week. This is currently how I balance it. I predict having kids will throw a wrench at this scheduling again and I'll have to re-adjust. As for side projects, it's pretty much fitting it in spare minutes on the train commute, when the wife showers, etc.
Since, I've come back to the States and I think I've figured out a good balance. I work remotely now, so I can spend time with the family and watch the kid grow daily. Sure, I won't be a CTO anymore the next few years, but it gives me time to take on a reasonable amount of work.
I think I'll do this for a few more years.
Basically you should go to your boss, if possible and ask to work from home - you could even take a 10K pay cut and it would make no difference financially.
I've worked from home for 10+ years and it's great. You should do it if at all possible.
On the weekend, we both make sure the other has "my time." It's important. I used to get 2hrs+ a night to hack. My productivity at work wasn't nearly as good as it is now. I don't miss it. I like family life way more. My life as a developer has never been better.
Also, I'm surprised no one has suggested daylighting  yet, it can be a reasonable option if your employer pays you to deliver instead of keeping a chair warm for 8 hours.
Once the kids are in bed, there's not much to do on a Friday or Saturday night. As a result, in the last 5 years I've built and launched several small side-projects.
1. Prioritize, prioritize, prioritize,
2. You'll never have enough time.
3. Timeshift and batch up tasks
4. Trade money for time.
Father of 2 kids (3 and 6mo) here. RUTHLESS prioritization has been critical in helping me reach my goals. Having the two kiddos has taught me to be absolutely ruthless and efficient with my time. Prioritization is the key and saying no is something you need to get used to. I'm a people-pleaser at heart so this has been a difficult transition but, after accepting that I can't say yes to everyone and everything, I've been able to make more progress towards my goals.
There aren't enough hours in the day to do all that you want. Period. You need to take a hard look at every single activity you do and decide whether it's worth spending time on. If something isn't in the Top 3 of your priorities for the day, drop it and don't even consider it. Trying to do everything ends up wasting time because you end up having to half-ass everything. Time is precious.
Timeshift and batch tasks. Pre-plan what you can so that you can be present for whatever it is you are doing. Meal plan your week in advance so you don't waste time deciding what to cook. Decide on what you're going to wear for the week in advance to speed up your morning routine. Have your kids do the same (mine actually likes it).
Learn to delegate to trade money for time, at least temporarily, if you have the resources. Hire a gardener, hire a house cleaner, hire a VA, outsource any tasks that can be outsourced. Deliver food if necessary. If I said you could buy an extra hour a day for $20, would you? I certainly would (and do).
Side note: HUGE props to the single parents out there. Don't think I could handle two w/o my (awesome!) SO.
Step 1 is to reconcile your ideal of who you'll be in the future -- what job, how smart, how influential, etc. -- with the resources actually available to you now. I had to downshift considerably.
Your kids aren't going away, and you're not going to be able to sustain what you're doing now until they get old enough. You need to make a change, and soon, because if you don't you're going to end up wondering how and why you mortgaged your life to your goddamn kids.
I have three boys: 5, 8, and 10. For my first six years of having kids, every time someone told me to "enjoy them while you can" I wanted to punch that person in the throat. I knew they were right, but there are days when that's just not even in the realm of possibility.
There are a lot of parents who are tired, and sick of walking on dropped cereal, and miss being able to pick an actual restaurant that serves actual grown-up food. But there's also a huge societal more to not talk about it, or to aways end with something like, "But it's so worth it," or "It's the hardest job I've ever loved," especially for women. But while it's almost certainly "worth it" for the majority of parents the majority of the time, there are going to be days when it's just NOT.
The clich is that "The years are short, but the days are long." It's true. In hindsight, the fact that I have a ten-year-old seems insane -- how could it have been ten years? What the hell have I been doing for the last decade? Do I even remember life before kids -- what it was like to just have a wife, to set my own schedule?
At the same time, every night at 6:30pm I find myself asking, "How can it only be 6:30?"
I spent a good number of years just basically resenting the crap out of my boys, which is about as healthy as you might guess. I hated dealing with my kids, hating myself for hating dealing with my kids, and knew I'd hate myself later for not enjoying the young-kid experience while I could. I, my kids, and my wife all suffered.
Now I've got therapy and some drugs and a CPAP, and things are better. Not every day, but most days. Well, many days.
Kids completely take over your life, at least for a while, and it's almost impossible to see the light at the end of the tunnel. Your job -- your JOB -- is to figure out how to enjoy them now so that the sacrifices are worth it to you.
- ability to work from home
- not too competitive environment (otherwise you'd get put aside by young people)
- good health coverage
Ask HN: Developers with kids, how do you skill up? | https://news.ycombinator.com/item?id=13816627
I would have to say my time hacking on a project is more focused with kids. You have to be if you want to get things done.
10-20 years old = if Zuckerberg then stop here, else:
20-30 years old = Best perk, best company, best project
30-40 years old = Work from home, short commute, less work
40-60 years old = QA or maintain legacy code
My "side projects" encompasses more than than software programming -- martial arts, meditation, biking, etc. I used to be able to do a lot of things, but I can't anymore. My step-daughter comes home around 15:30 and it tends to go on until around 21:30. More if there was a meltdown or some sort of family drama (which, in the past few months have happened frequently, but thankfully, is trending less now). I've had to take over getting her up in the morning -- both my wife and my wife's mother have had significant trouble getting her out of bed, showered, dressed and ready for school. Likewise for getting ready for bed.
I've had to accept that my life and lifestyle has changed. (I thought I was prepared for it; I wasn't). I've had to work through a lot of things myself, including periodic, arising feelings of resentment that is toxic to a child growing up. The meditation helps, but ultimately, I had to accept change and the fact that I am not as in control of my life as I used to be.
I had also been working with her a lot on homework -- to stop doing her math and reading like she is mashing buttons while playing a video game. I quickly found that there are even more basic wisdom and skills that my daughter never learned: what it means to be a part of a community; what responsibility means; what respect and speaking respectfully means. We've also been trying to wean her off of the meds and learn how to process her emotions.
Over time, I've been coaching her through different things. Our current theme is "organization" -- how to organize her time, how to organize her things, how to check things off a list by herself instead of "mashing buttons" (she has a tendency to try something to quickly satisfy what she perceives as what my wife or I wants instead of thinking things through, or methodically checking through things). The idea is to transfer more and more responsibility for herself to her rather than helicopter parenting and enabling this attitude of "parents are service providers". It takes time, it's bearing fruit, and this process goes at its own pace.
And yeah, at the end of the night, I'm exhausted too.
Some five years back, I got into an internet flame-war with someone about this. He was working 60-hour weeks with kids, trapped in his job, and I was talking about side-projects. I was single with a lot of mobility. Joke's on me.
Within the population of programming jobs, some are actually pretty serious, actually require solid CS basis and a scientific approach. If I was hiring for that sort of job, Id look for higher degrees and experience. Similarly with data science type stuff. When it gets hard, you need the right background.
I don't know where you're based right now, but I'd say most recruiters across the world wouldn't understand the concept of a Udacity nanodegree. Most of them don't understand that you really don't need a piece of paper stating that you can write code; recruiters simply don't understand that it doesn't matter whether the person is even a graduate or not, if s/he can write code.
I'd just tell the person to keep trying. I kept trying, and I got lucky with a media house that was okay with hiring me to write code without a relevant degree or experience. I'm sure I can't be the only one to get lucky.
So, if I were hiring a candidate, would a Udacity Nanodegree weigh in their favor? Absolutely. Would I hire them if they had no other formal credentials at all? Absolutely, depending on all of the other factors. But as for that matter, you can ask me "would you hire somebody with no formal credentials at all" and the answer is still "absolutely, depending on all of the other factors".
So Don Knuth might be writing the checks but they may not be getting cashed.
Unfortunately, phones still don't support a physical security key. But you can still use the authenticator app there. On your laptop, U2F is a big step up.
Whatever you decide, you should not use SMS as your second factor. U2F keys, TOTP (the authenticator app) and push notifications are all significantly safer.
- 2x4s and 1x3s
- currogated metal
- PVC Piping
- roofing material
- garage door & track
I am thinking about biting the bullet and buying materials and milling my own as well as experimenting pouring concrete in small amounts and maybe making a drywall type material. Idk if other people would even want this, or similar stuff; but it's like $100 for some lousy balsa wood stuff and for that money; I'd rather cut and mill wood myself w/ calipers for proper scale
Edit: I also mean a bulk set to actually make something large. The bulk orders I have seen of full sized material go to a job site are for example; 2x4s arriving as a pallet of 104 pieces of lumber (stack of like 13 8 beams high) which could lay a lot of 16" on center walls. Each piece at AC Moore/hobby lobby is at best about 0.50 so just that is like 50 bucks!
Even if you have no idea of writing a book now, writing it down now would probably encapsulate a bunch of details that will have faded years from now. And at that point you'd be in a good position to decide to share it or not.
Does the company have Glassdoor reviews? Are those reflective of your experience? If so, then there's a warning to new hires out there already, at least.
About 10% actually did a review of us on launch which gaves us a major boost. However, the ones that reviewed us a few months later are those with a long tail.
Reach out to those that love good products. Even if they have a small audience, it all adds up in the end.
Since Coach is an online course platform, we're not only giving people a demo of our product, but we're also providing value through content.
For example, we giveaway a free eBook on selling more online courses & digital products: https://coach.withcoach.com/level-up-your-sales
We also run a free email course on launching your next digital products in 10 days: https://coach.withcoach.com/10-day-product-bootcamp
Both have driven thousands of leads to our product.
Pretty easy (results in days): Answering questions on Quora was a relatively easy, quick win. I answered a question on salary negotiation or job interviews every day for a month, and immediately saw a lot more interest in my site.
Harder (results in 90+ days): A focus on SEO has really paid off. SEO takes a while to build up, but once it's built up, it's pretty reliable traffic source. That means I can spend time working to offer more value to visitors so they'll stick around and come back later.
For https://weddinglovely.com, I work with small businesses and running the weddings blog has been our biggest marketing win. Our businesses send us content, which we publish, getting traffic and also cementing our relationship with the submitting business. We've also started getting significant affiliate revenue ($2k+ mo) from past articles we've written.
If you'd rather not comment on this thread, I've also created a quick survey here:
About 20% of my visible audience took part in the assessment and/or bought the product. I got a really good vibe of the people that are most likely to engage and who I should be focusing on.
Surprisingly, people that my content is reaching are further along in their journey than I had intended on reaching out to.
This has been my biggest result so far from my efforts
Be active not reactive.
Back in the time, I had this problem with sending emails from my private server to yahoo or microsoft (hotmail, live.com, etc...), both refusing to deliver my emails to their clients as I could be a potential evil spammer.
For the subscription fees, a few weeks ago I saw a price chart for <I don't remember which company, probably Microsoft> about how much you have to pay them depending on your situation and how many emails you plan to send to their servers. Unfortunately I didn't find this page again.
That being said, I recently switched to https://mailbox.org (they have a very good reputation). Mainly because I love the web UI it's an awesome service and I get CalDAV and CardDAV that works beautifully.
Self-hosting is still possible nowadays but email delivery is an uphill battle. You can expect to write several major email providers to remove you from their blacklists even if your address and domain reputation is good.
VPS privacy and security is questionable and dedicated servers are usually expensive. Hosting SMTP from home is virtually impossible without a VPN to a "proper" IP.
Are you willing to spend the time to update all parts of your infrastructure on a regular basis? Are you certain you will keep up to date on recommended ciphers and protocols?
How is your data going to be secured at rest? If it's encrypted, how are you going to provide the keys during unexpected reboots?
If you want push notifications, synchronized calendars, contacts and notes you will need to add another layer of complexity to your setup.
Critics of Protonmail and similar will point out that browser based encryption is a weakness, however that doesn't change the fact that it is a major step in the right direction. The battle for privacy is fought in depth, not absolutes.
Protonmail is hosted in a Swiss datacenter, run by a Swiss company under strict data protection laws. They offer a free tier and a paid one for your own domains.
If you still want to go the self hosted route iRedMail and Mailinabox both work well. Sovereign runs too many services - it should really be split into VMs or containers.
The mail server is fully built into the platform itself and automatically takes care of all the tiny details required to get over the often stated deliverability issues (SPF, dkim, PTR, ...). So far we have found that many of the issues described here are not actually a big issue as long as everything is setup the way those large providers want it to be. The occasional report from a user about getting blacklisted usually is a matter of submitting the required form on the providers unlisting site. They do act timely as well in my experience and the process is not very time consuming.
Overall I was pretty surprised how well it works in the end, given that there are so many reports about selfhosting email is too complex to deal with.
I have a mailserver handling some personal email, but I feel it's too risky (to take the responsibility) and too much effort to host email accounts for just a few other people. You can and probably will be every once in a while blacklisted by one of the big providers or have legitimate email bounce, even if you have SPF, DKIM, TLS and your own spam filters set up. You also have to keep an eye on your servers to see if no new filth gets through. And you'd probably want to keep a backup relay ready. You have to provide ways for the users to configure or fine-tune their individual spam settings and mark messages. You most likely want to install a web interface next to the IMAP and/or POP service, which opens another can of worms.
I feel I'm too old now meaning I have so many other responsibilities that I don't want to babysit something that is after all rather crucial and should "just work". If you have the energy and time, please go for it, otherwise just search for a reliable paid service.
Note that assuming privacy when talking about email, even though most protocol interactions might be encrypted these days, is in my opinion somewhat misguided. Don't use email if it's truly private. Or use end-to-end encryption, such as PGP.
There might be a hole in the market for a company that helps geeks host reliable email servers, for those that want more control than just an IMAP account with sieve support, but maybe the margins are too low and fighting spamming subscribers too hard.
Hosting an email server yourself is a great learning exercise but you'll be forever playing whack-a-mole with spam and wondering if your setup is actually properly secure and waiting for the day you get hacked.
I did this myself for a few years and at one point had very few deliverability problems, then one day out of the blue I ended up on a black list and started getting complaint emails. After that it was either rebuild on a new ip address and start again or choose a paid provider and move on, I did the latter and opted for Fastmail.
Formerly, I'd say maintaining your own email server isn't easy. It was hell trying to set one up 10-15 years ago. This guy (and the contributors) have made it about as easy as it can get. I've hosted mail for one of my domains on a DO droplet, where I set up a mail server with that guide. Been running it for ~4 years. No issues. Highly recommended.
Deliverability will only be an issue if you land up on an IP address that was previously abused, so it may be worth checking out the IP address reputation on DNSBL  before setting up Mail-in-a-Box.
Make sure you configure an SPF record for the server's IP address, and then also set up DKIM and SPF. I have yet to see any deliverability issues using this setup.
So I used a scaleway.com instance and installed https://github.com/sovereign/sovereign/
I forked it and made it especially for my own usecase working for the scaleway VPNhttps://github.com/tomw1808/sovereign
So far I am pretty pleased. I opted against mailinabox because I want to use the server for other things too and mailinabox strongly suggests against it...
If you want to use another web mail service other than GMail then I can recommend;
https://kolabnow.com/ (the lite option just gives you webmail)
https://posteo.de/en (very green-energy and privacy focused
Failing that, head on over to https://privacytoolsio.github.io/privacytools.io/ and check out alternatives and other related information.
I had to ask my ISP to disable some rules on their end and pay a fee to have a static IP address, but overall it was pretty painless. Though I can imagine some providers being much worse.
After the initial hurdle of setting everything up in my experience everything went mostly fine. I had to whitelist my domain on Microsoft's site, but Gmail and Yahoo worked fine from the start. I haven't had a problem since. My university teachers receive my email just fine, so did my co-workers before I was given a corporate email address.
Is it worth it? Maybe not. It was more of a learning experience for me, but I find it works just as well as any other provider I've used. At least for now.
As others have said there are lots of outdated guides. I found the Archlinux Wiki and the manpages to be the most useful resources. Also please stay up to date on the software.
Hosted I would look at fastmail, mailbox.org and proton mail.
I'm a little bit worried what happens when gmail is blocking my account for whatever reasons, but if, i would create a second own managed mail address only for accounts.
Another reason to pick a library you actually use is because you will go into it with additional curiosity and expectations. I'm always a bit thrilled to find out that a library which I can't even begin to imagine being clever or thoughtful enough to design is indeed much smarter than I imagined, or, is actually kept together with duct tape. The latter situation has actually helped me overcome productivity declines that come from obsessing in vain over whether I've got the details down right. I just need to remind myself that a much more useful and popular library that I depend on has apparently flaws that end up not impeding development or public usage.
Find some software that you're interested in. Do you follow their GitHub account, subscribe to the mailing list (especially dev list), keep up to date on changes that are new? Have you looked at their source? Is there anything you wish the software did better, or any bugs you wish were fixed?
Learning how everything fits together for a software project can be a great learning experience, and if you take notes as you go, you'll naturally write docs (and be the hero of the day).
I'm thinking of scraping GitHub, Bitbucket, HackerOne, etc for metrics that correspond to projects that a) need help and b) need the kind of help you'd want to give.
This is the problem you're staring at right now, so you're already interested in solving it.
Also I like to check out tools that I use daily and see if there are issues I can tackle. You can follow mailing lists, public slack channels, etc. too.
Just talking to others will give you ideas to get started. And if you can't find anything quickly, start your own and have fun with it!
It's a Rails/React app for professors to run Wikipedia assignments, where instead of writing term papers, the students improve Wikipedia articles.
I'd love to have help from experienced devs -- especially someone to help me get started migrating to Redux.
If you can, try to look at how the project communicates with the community (mailing list, irc, gitter,slack,..) and just ask the community where the pain points are if you can't find any open issues.
A typical sheet of A4 printer paper is about 6237 cubic millimeters in exterior volume (i.e. including interstices between fibers within the sheet.) Say you could soak a sheet of paper in soluble DNA and dry it such that you ended up with 6000 mm^3 of DNA in and on it. That'd be roughly 4000 petabytes.
 - https://en.wikipedia.org/wiki/DNA_digital_data_storage - https://www.ncbi.nlm.nih.gov/pubmed/22903519
An A4 sheet of paper is 62370 sqmm. A good printer can print a 1 sq mm character. Therefore, at a minimum you have 62370 bytes * 2, so basically 0.12 of a megabyte, which is pretty bad.
However, say you store something on the piece of paper that uses the second from midnight as a translator, such that the contents mean something else, depending on which second in the day you read it. Let's also say this translation is not using a hash type function, but is completely arithmetic and the formula to do this can be stored on the back side of the sheet in its entirety. This would take the 0.12MB /2 (you're not using both sides now) and multiply that by every second of the day, until the next, so 86400 seconds * 0.06MB = about 5 gigabytes.
Honestly I think you could get into the zetabytes. There are other factors you could use that I haven't considered:
1. Smell of the paper
2. Electrical charge
3. Feel of the paper (who said we're not printing in three dimensions)?
4. Taste (you could use a single piece of paper formed from different types, which have unique tastes).
I think the main limitation is as you add more factors to increase the compression you increase the complexity and time in which it takes to decompress, or get the information back. I'm sure there's some sort of law on this.Let's add in the orientation, in degrees of the piece of paper as well. Let's say you can reliably use all 360 degrees to permute the existing formula. Now you have 5 gigabytes * 360 = 1800 gigabytes. Let's just call this 2 terabytes.
which I found via this repository, that makes a comment regarding apparent abandonment of the original:
Also from memory, there is at least one other such "ginormous barcode" utility/application that gained some attention, some years back. It may well be the "paperback" one that another commenter mentions, here.
At least one of these had configurable resolution and redundancy parameters.
Many HN reader apps implement this as well.
Enjoy, do not forget to take frequent breaks from the great material to hydrate
Khan Academy has good material as well.
Subjects? Varies... lots of software stuff obviously, but I also read books on general science, history, business, marketing, biology, electronics, biographies, etc.
If you really want to see what I read, add me on Goodreads:
I've recently cut my reading time and I am spending more time recollecting and figuring out how to apply what I read.
You said you don't read a lot but I would 1st suggest that you increase the time needed to understand how to apply what you read rather than just add reading time.
Make a list of what you want to improve, get a book on that and use it.
I don't read tech books in these times. Usually history, biography, and art history. I make another time slot for books like tech books that I ""study"".
Talk about it - talk about how it's easy to use this app because the designers made it easy to use, or it's hard to use this app because the designers made it hard to use. When reading books talk about the images and the fonts. (For example, Sam and Dave Dig A Hole has lovely drawings, large print, and a clean simple font with high contrast. Farther has a weird font in a low contrast.)
Involve them in decisions about decoration and room layout. Introduce simple design and art concepts early, and help them spot patterns. "Colour wheels" are simple enough, so you could buy a bunch of paint and do some potato printing with complementary colours, and clashing colours.
PS: If you're involved in children's books, and you want to use a weird font: just fucking don't.
Show them how design is responsible for every day things that they're already using. Take them to an industrial design museum, perhaps a conference that focuses on 3D printing so they can see with their own eyes how everyday things are created from scratch. Next time you drive past a stop sign, ask them why they think it's red - that alone opens up doors to discussions about everything from psychology to evolution.
ps.: ODB is GPL v2. We have a commercial license to avoid it. ODB also offers a "free" commercial license that imposes limits on the size of your database.
When a database is used in C++, the application is typically not very portable and/or small and simple and/or performance critical and/or not object-centric, and an ORM would offer little or no benefit over using a more direct API.
There are companies that value your new skills. But more companies will find those new skills scary.
I'm surprised to learn that there are people working in Tech currently finding it hard to apply. Where are you located?
Here in Europe, at least in my experience, it's getting easier every day. Tech is incredibly popular, but demand is still even higher.
You might be viewed as overqualified because of your business experience if you apply to startups.
You might just make basic mistakes that the book will teach you not to do.
Explain to them you've applied, and you've not heard back, but you're interested.
You're a person then, not an email/CV-to-be-dealt-with, and people generally want to help people. They'll often commit there on the phone to setting up an interview with you.
On my last job i sat right next to the corner where we interviewed candidates, so i could hear everything and would occasionally pop in to participate. There was a scary amount of people like that - boasting a big resume but unable to tell a mutex from a semaphore.
So, i suspect you failed to pass some initial HR-level filters designed to filter out the sludge so that the actual programmers would be able to cope with the amount of candidates left to interview.
First job out of college took about three months of applying.
Second job, six month.
Third job was a wash, went 8 months freelancing for bits of cash before I went to company at job no. 1 to consult for them. But the pay was terrible.
Fourth job I took after 6 months of applying. Then I got laid off late 2014.
And I couldn't get a full time job since.
I am not so naive to think I'm the only one like this. But for at least a few, the job market has gotten less forgiving. My experience is not helping balance that out.
I'm currently interviewing with a small company and I'll be doing a face-to-face with them next week.
I know it's hard to get feedback when you don't get an interview in the first place, but how does your resume look? You can have a lot of great stuff on there without giving enough specific points to generate interest. Or, you could not be applying to enough jobs.
Job searching is tough and un-fun, good luck out there!
One way to sell a remote-style work is to make it part of a perk you want in the position or job. There is a ton of talent and skill already willing to move right into the company's parking lot and LIVE ( literally ) there: https://www.youtube.com/watch?v=KG0_KiM9Mv8
You're not competitive with them at all if it comes to just comparing apples and oranges. The way the market is, offering remote-work can be sold as a perk by the company, or something you need to negotiate for. But expect to either fly to the office or meet them atleast once a week, maybe less or more depending... most likely more than once a week.
Of course there are not too many jobs where I am. Where are you located and where are you applying?
I always tell people (that ask): The hardest part is getting the first interview. Stand out (seriously, just be yourself) but don't be loud in doing so.
In total, took me ~4 months while working full time to wrap my head around everything and build the website + deployment (Nginx, Fabric, Celery, supervisor... all the usual stuff).
If I had weeks, I'd choose React (server + browser with a single code base) in TypeScript with SCSS.
I know its very anti-TDD to write tests from a reactionary perspective, but I find this is a good way to gradually get test coverage where it is needed while still being able to prototype the parts of the side project that are interesting.
* Humans can determine if your code does what it's supposed to.
* Automated tests can keep your code stable, i.e. make sure it doesn't change.
If you care about correctness you want manual testing and code review. If you care about stability you want automated testing like unit tests.
If you care about both correctness and stability you need both kinds of testing.
Personally I've mostly written libraries, where stability is very important, so yes, lots of unit tests.
Longer version: https://codewithoutrules.com/2017/03/26/why-how-test-softwar...
I have integrated testsuit for core framework components, which can be run separately, i tend to have separate tests for more upper level stuff, and i rarely have unit tests for actual programs.
It tends to be a drag that is very easy to half-ass, so i try not to waste it.
One of my side projects is also a test framework, so that has tests of itself using itself, in hindsight this was a poor decision.
1. C-based lineage
2. Designed for industry use
Haskell has become the "nights and weekends" language. People are using it on pet projects outside of work and they're arguably becoming better programmers for having done so. Rust though is in the C family of languages, for which nearly every developer has familiarity, and was designed for larger project teams to collaborate and maintain large projects. Add in Rust's memory management strategy and it's not requiring a VM (unlike Java/C#) so it runs fast in a Docker container and you have a winner.
To me a more interesting question to ask, because the answer isn't nearly as clear-cut, is whether Rust or Go will be used more in industry?
My guess: Rust.
Why you should believe my guess: Rust seems to be growing faster than Haskell.
Why you should not believe my guess: I'm primarily in the embedded space, where Rust fits well with the problems I'm used to having to solve. Haskell? Not so much. This makes Rust appear much more generally useful to me, when it may only be more useful in my specific area.
And there's a good argument to be made that you shouldn't be passionate about software development: http://www.virtuouscode.com/2014/02/10/the-passion-gospel/
Creativity is not "all about passion". It's a skill you can apply with or without passion.
Creativity on the other hand is when you come up in an idea or a solution to a problem. When you let out the stream of thoughts regarding a given topic, unfiltered by rational thinking. So creativity is the process of getting rid of your prejudices and looking a topic from different angles.
I guess they are both very different kind of concepts.
Creativity can be a passion, see artists, musicians. But also the most un-creative activity, e.g. sorting stamps, can be a passion.
It is just a bunch on computers connected over a wire, on a phenomenal scale...
To reach the next breakthrough, we ll first have to go through the next big global crisis...Our next breakthroughs will rise from its ashes.
So our generation might see the start of this crisis. Couple of your next generations will live through it..Maybe after even more generations, if we have learned a couple of things from the past (I mean, the present as of now), our intellects might be free enough so that human kind can create further breakthroughs...