Eventually other people started submitting it in response to questions online in forums like HN, where people would ask things like, "What's the Best Productivity Tool You've Found" or, "What Secret Thing Do You Wish Everyone Knew About." Started getting more spikes in users, then a regular base of users, then paying customers, then enterprise customers! Pretty cool organic spread.
It's definitely a side project, but making some money on it which is awesome.
Tried Google AdWords, total waste of (free up to coupon amount) money. Maybe one new user with $250 spent.
So I would say: Build a good product and maybe if people will like it enough you will get some organic growth.
edit to say: I'm still 1000% just doing this as a fun aide project that I built to serve a need I specifically had, but am happy to answer specific questions about what I stumbled through and did to kind of get off the ground enough to pay monthly costs and make a little profit.
My number one marketing approach by far has been to tailor the site to the HN audience.
I do this primarily by asking questions that people on HN always like to see answered (how much money are you making? how did you come up with the idea? what tech did you use? what are your best marketing channels? etc). Lots of similar sites don't ask any of these questions, especially not the revenue one.
I tend to share the most interesting interviews with the HN audience every couple weeks or so, and they usually do pretty well!
When it comes to the former, getting HN front-paged, a Techcrunch write-up, PH, etc tends to lead to a spike in traffic and eye balls, but very rarely do you get your true base of customers from these things. (But hey, they don't hurt!)
In the latter category you'll hear things like SEO, content marketing etc. Those are all important and must-haves, but these days it's also table stakes since it's what everyone is doing as well. When it comes to getting differentiators that can take you from $1k to $2k or $2k to $4k you need a distribution channel -- preferably a partner or a distribution platform where you can narrowly focus on a small audience. Yes, this means you'll need to reach out and talk to people with similar audiences and folks who are willing to help. For those of us who prefer talking to computers (coding) more than talking to humans (eww emails and phone calls) this can be unnatural but is also extremely important.
I'm personally happy to chat with any part-timers looking to grow their projects or even become full-time entrepreneurs. Just hit me up via my profile here on HN.
My personal experience: I've started two businesses as side projects that went on to be full-time ventures. Ronin (https://www.roninapp.com) was started in 2008 (eventually went full-time, acquired, and then spun out). Later on Reamaze (https://www.reamaze.com) was actually a side project on a side project, but is now at full time with a small team and growing very nicely.
I also ran across a Reddit post where someone created a Twitter bot which favorited and retwitted posts with certain tags to attract potential customers for a product the OP was marketing. Those who ended up checking out his Twitter page found a note which said that followers would get a deal if signed up. The OP mentioned he got his first 20+ paid customers this way. Not sure how effective this is but thought I'd share.
The effectiveness of ads has unfortunately dropped over the years, but in the first 20 months or so built a roster of 10,000 customers or so who have stayed very loyal and allowed us to expand to products with much higher volume.
But before and even after that, emails to game review sites were universally ignored (with Rock Paper Shotgun as the one exception). Even the Ars Technica guy who proclaimed it as his "latest obsession" wouldn't reply to an email.
I understand these people are inundated with emails, but I was still a little surprised.
While it's not bringing in tens of thousands of bucks, it's brought in enough to make it worthwhile (in part through affiliate linksmy strategy is to link to the weirdest things on Amazon I can find, with the assumption people will eventually go back to buy something else).
I've also tried to find ways to minimize costs on my end, including switching email providers so that the financial impact of sending thousands of emails every month is small.
1. Hacker News has provided exposure but not a lot of direct business. Sometimes people find us on other channels but recognize us from HN. I would say, don't worry too much if you never front page here.
2. Working on SEO consistently over the years has been our most valuable source of high quality traffic.
3. Work with influencers in your industry. When a popular AWS blogger wrote about Cronitor and was tweeted by their AWS community lead Jeff Barr we added 8 subscribers that day that are still with us.
4. Re-marketing to sign-ups that didn't convert. Every month our product noticeably gets better in some way, and those early sign-ups to our free plan that didn't subscribe have been an invaluable source of later conversion.
The ProductHunt post was augmented by the fact the product (https://uimovement.com) was clearly for a certain community (designers), so it was picked up and shared on other publications/social media accounts within the community.
From the PH post, it was picked up and shared on DesignerNews, r/web_design, Webdesignernews, Codrops, Smashing Mag, etc. The other sources brought in way more traffic than PH in the end.
For more long-term, but slower growth, automating social media has been helpful too, but that can only work for content-heavy products.
Surprisingly, the best thing that I did to get it some traction was having a few influential people in the design/craft community post it to pinterest. A couple years ago, a single pin generated dozens of orders.
Other than that, some SEO fu has always helped. It used to be on page 1 for "Instagram christmas cards" and I'd get lots of traffic from that (currently on page 2). So, some SEO basics (good titles, good headings, a blog/news section) always helps.
Cater to the audience and engage with the founders and it has a steady flow of increasing subscribers.
I just make sure my newsletter has good content consistently for my readers.
Then I got busy at work and haven't spent as much time marketing it.
It was actually posted on PH once before, but that time it wasn't featured. Almost one year later, I built an API, several extensions, increased the amount of content, and integrated it with DDG. Eventually I decided it was worth giving the PH people a shout to see if it would get reposted (they let you repost if your product makes substantial progress). It successfully got featured that time.
To answer your question, for us listening to customer feedback and releasing new versions periodically worked best so far.
That's how it used to work. It still does.
Create a separate landing page for each. Here are some free landing page templates you can use:
Here is a blog post on the ebook option:
Even though you might have the most insightful newsletter, getting awareness about this with a target audience can be tough. I'm not sure what the subject on your wife's newsletter is but, if she's not already, she should be active in the community targeting this audience. E.g. if there are discussion forums regarding the newsletter's subject then your wife should participate as an insightful and active member of this community and be viewed as an authority on the subject. Then having a newsletter sign up link in your public profile of these communities might then help in getting genuine subscribers.
But I would highly recommend the syndication route if it's likely to gain pickup through that method.
If you like to study/read: the famous Coursera Andrew Ng machine learning course: https://www.coursera.org/learn/machine-learning
If you just want course materials from UC Berkeley, here's their 101 course: https://news.ycombinator.com/item?id=11897766
If you want a web based intro to a "simpler" machine learning approach, "decision trees": https://news.ycombinator.com/item?id=12609822
Here's a list of top "deep learning" projects on Github and great HN commentary on some tips on getting started: https://news.ycombinator.com/item?id=12266623
If you just want a high level overview: https://medium.com/@ageitgey/machine-learning-is-fun-80ea3ec...
I strongly advice for:
- using Python in the interactive environment Jupyter Notebook,
- starting with classical machine learning (scikit-learn), NOT from deep learning; first learn logistic regression (a prerequisite for any neural network), kNN, PCA, Random Forest, t-SNE; concepts like log-loss and (cross-)validation,
- playing with real data,
- it is cool to add neural networks afterwards (here bare TensorFlow is a good choice, but I would suggest Keras).
Instead, learn decision trees and more importantly enough statistics so you aren't dangerous.
Do you know what the central limit theorem is and why it is important? Can you do 5-fold cross validation on a random forest model in your choice of tool?
Fine, now you are ready to do deep learning stuff.
The reason I say not to do neural networks first is because they aren't very effective with small amounts of data. When you are starting out you want to be able to iterate quickly and learn, not wait for hours for a NN to train and then be unsure why it isn't working.
1. Machine Learning by Andrew Ng (https://www.coursera.org/learn/machine-learning) /// Class notes: (http://holehouse.org/mlclass/index.html)
2. Yaser Abu-Mostafas Machine Learning course which focuses much more on theory than the Coursera class but it is still relevant for beginners.(https://work.caltech.edu/telecourse.html)
3. Neural Networks and Deep Learning (Recommended by Google Brain Team) (http://neuralnetworksanddeeplearning.com/)
4. Probabilistic Graphical Models (https://www.coursera.org/learn/probabilistic-graphical-model...)
4. Computational Neuroscience (https://www.coursera.org/learn/computational-neuroscience)
5. Statistical Machine Learning (http://www.stat.cmu.edu/~larry/=sml/)
If you want to learn AI:https://medium.com/open-intelligence/recommended-resources-f...
If you don't understand something in the book, back up and learn the pre-reqs as needed.
Khan Academy looks like a good beginning for linear algebra:https://www.khanacademy.org/math/linear-algebra
MIT 6.041SC seems like a good beginning for probability theory:https://www.youtube.com/playlist?list=PLUl4u3cNGP60A3XMwZ5se...
Then, for machine learning itself, pretty much everyone agrees that Andrew Ng's class on Coursera is a good introduction:https://www.coursera.org/learn/machine-learning
If you like books, "Pattern Recognition and Machine Learning" by Chris Bishop is an excellent reference of "traditional" machine learning (i.e., without deep learning).
"Machine Learning: a Probabilistic Perspective" book by Kevin Murphy is also an excellent (and heavy) book:https://www.cs.ubc.ca/~murphyk/MLbook/
This online book is a very good resource to gain intuitive and practical knowledge about neural networks and deep learning:http://neuralnetworksanddeeplearning.com/
Finally, I think it's very beneficial to spend time on probabilistic graphical models. Here is a good resource:https://www.coursera.org/learn/probabilistic-graphical-model...
In addition to the linear algebra and statistics MOOCS mentioned, I'll also add:
* No bullshit guide to Linear Algebra: https://gumroad.com/l/noBSLA
* Statistical Models: Theory and Practice: https://www.amazon.com/Statistical-Models-Practice-David-Fre...
Also Fermat's Library is going to be annotating the book, which should make it even more accessible: http://fermatslibrary.com/list/neural-networks-and-deep-lear...
Has some great links if you already have some knowledge about software engineering and want to get into Machine Learning
Josh Gordon from Google also has a extremely nice handson "how to start with Machine Learning" course on YouTube featuring scikit-learn and TensorFlow:
Really great content from Andrej and his coworkers. This guy is great.
You can easily find all classes videos on YouTube too.
If you're a python dev, maybe download scikit-learn and see what kinds of things you can put together after a few lectures.
Why numerical methods?
* They might produce the right answer
* They frequently do
* They are easy to visualize or imagine
* You get used to working with a routine that is both fallible but quite simple and remarkably able to work in a wide variety of situations. This is what machine learning does, but there are more sophisticated routines.
At some point you need to make a decision to go down the road more focused on analysis & modelling vs machine learning & prediction. It's not that the two are exclusive, but they really do seek to address really big forks in the problem space of using a computer to eat up data and -- give me predictions or give me correct answers
Google needs lots of prediction to fill in holes where no data may ever exists. Analysis and modeling can really fall down when there is no data to confirm a hypothesis or regress against.
An engineer needs a really good model or the helium tank in the Falcon 9 will explode one time in twenty vs one time in a trillion. The model can predict, based on the simulation of the range of parameters that will slip through QA, how many tanks will explode. Most prediction methods are not trying to solve problems like this and provide little guidance on how to set up the model.
On the prediction side, you will learn all the neural net and SVM stuff.
On the analysis and modelling side, get ready for tons of probability and Monte Carlo stuff.
They are all fun.
I too felt like ML is something new to try, but the lack of real world use cases on a small scale ( not google, Microsoft, ... ) Has kept me from trying/doing.
I only saw the farm with image recognition for vegetables as an example for now.
Anyone has other examples?
Mathematical Monk - https://www.youtube.com/user/mathematicalmonk#p/c/0/ydlkjtov... (includes a probability primer)
Awesome Courses - https://github.com/prakhar1989/awesome-courses - its a very extensive list of university courses including subjects apart from Machine Learning as well
Programming Collective Intelligence - http://www.amazon.com/programming-collective-intelligence-bu... - heard very good reviews about this
Many other resources available apart from the above. You can access more such resources at http://www.tutorack.com/search?subject=machine%20learning
I think its a good idea to go through one or more beginner level courses like that offered by Andrew Ng on Coursera and then do an actual project.
[Disclaimer - I work at tutorack.com mentioned in the comment]
and then continue with https://www.coursera.org/learn/neural-networks/
I think it's important for people to know where to go for good resources, but this exact question keeps coming up incessantly.
Now practical: I think the best way to learn is pick an algorithm & representation and implement it in your favorite language. Bonus if you have your own language to work with.
I would start looking into Decision Trees first, implement them and then implement some use cases(, which follow after implementing them). Do this for other approaches, like ANN, which you can have it beat you at checkers which is strangely satisfying.
But keep in mind Minsky. I think he is like Archimedes doing "Calculus"-type approaches without fully realizing. Maybe you could be Newton?
Start with a tutorial/pre-made script for one of the Kaggle Knowledge competitions. Move on to a real Kaggle competition and team up with someone who is in the same position on the learning curve as you. Use something like Skype or a Github repo to learn new tricks from one another.
HackerRank (YC S11) has one coming up in 2 weeks (filter by Domains > AI) .
I plan to participate as well just to explore the space. Feel free to shoot me a message if you'd like to discuss more.
i.e : Tutorial, Getting Started, ...
There are basic things I think you must know before jumping into a framework or int any specific algorithm. First thing you probably will have to do is to collect the data and clean it. In order to do this correctly you need some basic statistics. For example you need to know what is a gaussian distribution and collect samples in a way that are representative of your problem. Then you may need to clean the samples, remove outlines, complete blank data, etc. So it is basic you know some statistics to do this right.I have seem people with a lot of knowledge of tools than then they are not able to create a train/test/validation set correctly and the experiment is completely invalid from here no matter what you do next (http://stats.stackexchange.com/questions/152907/how-do-you-u..., https://www.youtube.com/watch?v=S06JpVoNaA0&feature=youtu.be ). You also need to know how are you going to test your results, so again you need to know how to use a statistical test (f-test, t-test). So first thing, jump into statistics to understand your data.
The next step I think is to know some common things in machine learning as the no free lunch theorem, curse of dimensionality, overfitting, feature selection, how to select the current metric to asses your model and common pitfalls. I think the only way to learn this is reading a lot about machine learning and making mistakes by your own. At least now you have some things to search in google an start learning.
The third step would be to understand some basic algorithms and get the feeling of the type of algorithms, so you know when a clustering algorithm is needed or your problem is related classification or with prediction. Sometimes a simple random forest algorithm or logistic regression is enough for your problem and you don't need to use tensorflow at all.
Once you know the landscape of the algorithms I think it is time to improve your maths skills and try to understand better how the algorithms works internally. You might not need to know how a deep network works completely, but you should understand how a neural network works and how backpropagation works. The same with algorithms as k-means, ID3, A*, montecarlo tree search or most popular algorithms that you are probably are going to use in day to day work. In any case you are going to need to learn some calculus and algebra. Vectors, matrix and differential equations are almost everywhere.
You would probably have seen some examples when learning all the stuff I talked about, then it is time to go to real examples. Go to kaggle and read some tutorials, read articles about how the community of kaggle has faced and winning the competitions. From here is just practice and read.
You can jump directly into a framework, learn to use it, have 99% accuracy in your test and 0% accuracy with real data. This is the most probably scenario if you skip the basic things of machine learning. I have seen people doing this and end up very frustrated because they don't understand how their awesome model with 99% accuracy doesn't work in the real world. I have also seen people using very complex things as tensorflow with problems that can be solved with linear regression. Machine learning is a very broad area and you need maths and statistics for sure. Learn a framework is useless if you don't understand how to use it and it might lead you to frustration.
So you could start with some really simple example code for demand forecasting but where you put in your data and your signals. In this way you can learn what you need to solve a particular problem, 'getting lucky' from only having to adapt examples. Sure it might be nice to learn all the fundamentals first but it is sometimes nice to scratch an itch, every company has plenty, choose one and see how far you get and learn along the way.
I think as well it really depends where you are coming from / what your background is. The reason i say this is i have recently gone through a similar transition into machine learning 'from scratch' except once i got there i realised i knew more than i thought. My academic background is in psychology / biomedical science which involved a LOT of statistics. From my perspective once i started getting into the field i realised there are a lot of things i already knew from stats with different terms in ML. It was also quite inspiring to see many of the eminent ML guys have backgrounds in Psychology (for instance Hinton) meaning i felt perhaps a bit more of an advantage on the theoretical side that many of my programming peers don't have.
I realise most people entering the field right now have a programming background so will be coming at things from an opposite angle. For me i find understanding the vast majority of the tests and data manipulation pretty standard undergraduate stuff (using python / SK Learn is incredible because the library does so much of the heavy lifting for you!). Where i have been struggling is in things that an average programmer probably finds very basic - it took me 3 days to get my development environment set up before i could even start coding (solved by Anaconda - great tool and lessons learned). Iterating over dictionaries = an nightmare for me (at first anyway, again getting better).
I think (though i may be biased) it's easier to go from programming to ML rather than the other way around because so much of ML is contingent on having decent programming skills. If you have a decent programming skill set you can almost 'avoid' the math component in a sense due to the libraries available and support online. There are some real pluses to ML compared to traditional statistics - i.e. tests that are normally ran in stats to check you are able to apply the test (i.e. shape of the data: skewness / kurtosis, multicollinearity etc) become less of an issue as the algorythms role is to deliver an output given the input.
I would still recommend some reading into the stats side of things to get a sense of how data can be manipulated to give different results because i think this will give you a more intuitive feel for parameter tuning.
This book does not look very relevant but it's actually a really useful introduction to thinking about data and where the numbers we hear about actually come from
In conclusion if you can programme and have a good attitude towards learning and are diligent with efforts I think this should be a simple transition for you.
The very first thing you should do is play! Identify a dataset you are interested in and get the entire machine learning pipeline up and running for it. Here's how I would go about it.
1) Get Jupyter up and running. You don't really need to do much to set it up. Just grab a Docker image.
2) Choose a dataset.
I wouldn't collect my own data first thing. I would just choose something that's already out there. You don't want to be bogged down by having to wrangle data into the format you need while learning NumPy and Pandas at the same time. You can find some interesting datasets here:
And don't go with a neural net first thing, even though it is currently in vogue. It requires a lot of tuning before it actually works. Go with a gradient-boosted tree. It works well enough out of the box.
3) Write a classifier for it. Set up the entire supervised machine learning pipeline. Become familiar with feature extraction, feature importance, feature selection, dimensionality reduction, model selection, hyperparameter tuning using grid search, cross-validation, ....
For this step, let scikit-learn be your guide. It has terrific tutorials, and the documentation is a better educational resource than beginning coursework.
4) Now you've built out the supervised machine learning pipeline all the way through! At this point, you should just play:
4a) Experiment with different models: Bayes' nets, random forests, ensembling, hidden Markov models, and even unsupervised learning models such as Guassian mixture models and clustering. The scikit-learn documentation is your guide.
4b) Let your emerging skills loose on several datasets. Experiment with audio and image data so you can learn about a variety of different features, such as spectrograms and MFCCs. Collect your own data!
4c) Along the way, become familiar with the SciPy stack, in particular, NumPy, Pandas, SciPy itself, and Matplotlib.
5) Once you've gained a bit of confidence, look into convolutional and recurrent neural nets. Don't reach for TensorFlow. Use Keras instead. It is an abstraction layer that makes things a bit easier, and you can actually swap out Tensorflow for Theano.
6) Once you feel that you're ready to learn more of the theory, then go ahead and take coursework, such Andrew Ng's course on Coursera. Once you've gone through that course, you can go through the course as it actually has been offered at Stanford here (it's more rigorous and more difficult):
I will also throw in an endorsement for Cal's introductory AI course, which I think is of exceptionally high quality. A great deal of care was put into preparing it.
There are other good resources that are more applied, such as:
I hope this helps. What I am trying to impart is that you will understand and retain coursework material better if you've already got experience, or better yet, projects in progress that are related to your coursework. You don't need to undergo the extensive preparation that is being proposed elsewhere before you can start PLAYING.
Forget about the code part. It's the least difficult part.
I figured I'd work hard while I have any bit of youth and energy left and relax later in life.
Just as you (hopefully) get to choose how many hours you work, your coworkers also get to choose how many hours they work.
I'd ask yourself two questions:
1: Are you happy with your current work/life balance?
2: Can you achieve your career goals at your current workplace while maintaining your desired work/life balance?
If the answer to either of those questions is "no", you should have a conversation with your manager.
If the company evaluation process is so bad that one person on a team signalling - plausibly or otherwise - how hardworking they are with a few late emails reduces your salary raise then you should probably consider moving to a different company anyway, depending on how much you care about that raise. It's not that individual's fault the process is broken, and that individual changing their behaviour isn't going to fix it. If the company process isn't that bad or nobody in management bothers to read the timestamps on his emails when they read them the following morning anyway, then who cares about his showing off (or unusual pattern of organising flexible work)?
tbh if you have remote email access and sending the odd late email actually counts in your favour, and you actually care about the internal politics of appearing to be harder working than you actually are, it's not that difficult to hit the send button on an email you drafted in working hours after you've sat down at home and had your dinner. Or use a plugin to automate the process with some email systems.
Switch teams or departments, or mention to your manager that you're getting discouraged by how the incentives are set up in your company. Most managers are happy to have a hard working team member, but not at the cost of their other 5 good team members leaving or getting discouraged.
1. If there is a direct correlation between hours worked and productivity for the team, then compensation is not relative.
2. To the degree that emails late at night is cast as toxic office politics, so are attempts to normalize the productive efforts of the coworker.
3. Pathologizing a coworker as 'workaholic' delegitmates the person and their values. It tends to provide an excuse for treating the individual poorly 'for their own good' rather than accepting the individual as what they are: a hard worker.
But I also try to establish that understanding with folks I supervise early on. I have known managers who use someone in their group who is really over working to "get everyone to be more productive" (usually by praising the level of output of the over working employee). It always blows up the team in my experience and they wonder why nobody wants to work for them.
This may be due to any number of reasons from proving false a manager claiming that they don't work to impostor syndrome to office politics to actually compensating that they don't really work but that's probably something you want to address directly with the mate. That's also a reason for which a number of places/teams I've worked at/with tend to normalize reports to once per day or once per week. That and the fact that managers just can't cope with twenty reports per night.
You also want to address the issue with the manager and make sure that you are not judged by number of emails but rather by actual impact. If that fails, you're probably working in the wrong place.
P.S.: When I write "in my experience", I've been the "worker who sends emails at all hours of night", in my case because of an abusive manager and an ongoing burnout.
Performance reviews aren't usually that objective. If you're getting dinged, it might be a problem with your attitude vs your performance. It's unfair, but you're working with humans, not vulcans.
Said another way: If management likes you personally, and you work hard enough, you're not going to get bad performance reviews.
If this coworker is a ball hog, that's a different story, and management will pick up on it over time. The best thing you can do in the meantime is worry about your own output and do good work with people who do want to work with you.
If your company's evaluation doesn't work that way, you need to have a talk with management about why it should.
(Also, if your co-worker is working long hours but not actually more productive, and your management can't tell the difference between those two but you can, you may need to have a conversation with management about that too.)
Talk with him and see what really excites him. Suggest that you work together with him on an open source side project (possibly related to a something your team is building). A piece of the project he can get excited about and occupy his excess energy.
Help him promote it so he can get him some recognition / feedback outside of just the internal company employees. And your team might still get some additional benefits from the open source project he's working on.
I wonder what would you all reply to an "Ask HN" thread like "I am working day and night and sending emails even outside business hours, but my colleagues do not reply unless it's business hours and that is really bugging me".
Btw, did you all consider that maybe that guy just needs or wants really hard that promotion or that salary level-up and is "just" working as hard as he can towards such goal? He/she/They might have duties you do not have (kids, family members, health expenses or other stuff).
@OP: I'd say, as long as you feel honest about your output and feel you're working fairly hard for your company you are okay. You might just want to take a break and think if there is any way to improve/optimise your output.
* The expectation of your manager will get elevated and if one fails to be consistent in working for long hours, it's a negative.
* One does not have much room to accommodate something else at times of need. Think of an outage, you have already worked for 18 hours and fail to deliver at that crucial time.
* It's very difficult to innovate in an insomniac state.
Remember, doing hard work is easier that smart work. It requires much more learning and thinking. But, if you are able to do it, you will be able to contribute much more.
Appraisal based on relative performance: This sounds logical. If a person contributes better to the company's goal, he/she should be appreciated for that. Think yourself being that person it should make sense.
Note: I am not taking the political aspects of your office into consideration. If your manager loves late night availability, long emails at weird hours, it is his weakness. Probably, you can be smart and automate sending 'corporate bullshit' emails at night ;)
Or just find yourself a right workplace.
Since it seems like you want compete with this guy but not put in the hours (and I don't think you should) you need to work smarter. Look up some posts about value proposals and find a way to increase your value for the team. I.e. focus your efforts in increasing your output per worked hour.
I see this as a huge red flag. It is clearly evident that you may not be marked above average for the next appraisal. Obviously being marked as irresponsible shows that the upper level is expecting you to work like a donkey!!!
I would just start preparing for my next move.
>> Changing job would be resetting all the good will and trust that I have built here.
To this, I can say from experience, that our job is to look for the next better job. While this is a bit sarcastic maybe, but really, as we know, that companies won't think of that goodwill when the next round of letting go people comes along. And going by your description, your goodwill is because of your quality of work, so if you plan/prepare/put the efforts for the next move while you are in this job, you will really be better off.
>> I don't really want to portray my peer as bad(He is mostly nice on the face),
Most likely and I think you imply politely that he is not nice really and he understands the game being played and is playing it. You don't want to play that game, which is fair enough, but you will lose as a consequence.
So overall, just my opinion, is that now this job is no longer the right fit and moving on seems the most sensible thing to do.
The key word here is value. Take a big step back and consider what value your colleague brings to the company. What "jobs" and "roles" does she fulfill within the team? Is she staying up late fixing random bugs or doing things others don't want to do? Is she staying late making sure a release goes well or delivering insights to execs to push the product forward?
You used the phrase "stuck with" which suggests negativity and possibly a sense of "it's unfair to me". Is she actively working against the team or is she outperforming others?
Consider what value you bring to the team. Do your manager/people in charge of your compensation recognize the value you bring?
As with most "soft skill" conversations the details of a situation are key.
(If you really love the place and want to fight your "workaholic" team mate, start scheduling a couple of your emails at random times during weird hours.)
In general, and true in my situation, when you work crazy hours, other aspects of your work life may be subpar (for instance, another team member may be a better communicator or a thoughtful architect)
That said, I haven't had much luck getting the usb-c dock working 100% correctly with Ubuntu 16.04. Going from laptop to attached to a separate monitor and peripherals works, but workstation to laptop more often than not will leave me with the laptop still 'seeing' the external monitor and treating the laptop monitor as the secondary display.
Lenovo t460 (or t460p)Asus UX305ADell XPS 13 Dev Edition
However I ended up not buying any of those.
I had bought a toshiba i3 with 8 gb of ram 2 years ago for 300 and I didn't felt like any of those laptops would give an improvement worth the price.
Laptopts are a little bit stuck it seems. I sincerely tried to buy one but just couldn't justify... I am running Ubuntu 16.04 perfectly, everything just works.
People will want to practice their English with you. Be stubborn. Reply in the foreign language and let them talk in English.
For the first 2 months you will feel incredibly tired at the end of each day. Your brain will fight to stay afloat but that stress will make it learn so much faster. Around the 3rd month something clicks and you start to talk more and more. After that, the progress becomes almost automatic. Try to study something, or work or be part of some local group.
One key element is to avoid perfection. Understand that you will never speak perfect grammar for years (just like kids make silly mistakes, you will too). Embrace it, have fun, make mistakes ... enjoy the trial and error discovery and the challenge of communicating ideas with rudimentary tools. Be patient. You will get frustrated because your brain has complex and nuanced ideas but your language is as basic as "me not good" or "me good". You will learn that body language and tone already communicate more than you can tell with your basic language.
After a year you'll be pretty fluent (You'll be able to hold a conversation with anybody, on any topic, but still peppered with clarifications and questions). Mastering a new language would still take many years (with lots of reading, writing, talking, etc).
(source: I speak French and Spanish as native languages, English as third language and German as 4th which I learnt as an adult living in Germany for a year)
1) learn phonetics and pronunciation
2) learn a base of of the most common words (he has a list of 625 words, I think wikipedias "simple english" word requirements would be another good source). Do this with anki.
3) start studying grammar
4) move onto native materials (while continuing with anki)
I also think that most people massively underrate vocabulary study. With consistency, at only 15 words a day you could deeply learn ~5400 words a year with anki. I think it would be pretty easy to do more if you were dedicated, but 15 is pretty sustainable. The rate you tend to be taught vocabulary in college level courses is crazy low.
: http://fourhourworkweek.com/2014/07/16/how-to-learn-any-lang... I swear this guy isn't the type of charlatan you'd expect to be associated with Ferris.
I hope this doesn't feel too spammy but I'd love if people had any feedback on the basic idea behind the tool I posted here: https://news.ycombinator.com/reply?id=12717657
The most important part in my opinion is to live in a country that speaks the language you want to learn. You have to immerse yourself as much as possible with the culture and language.
Also very important that you aren't afraid to try to use what you learned. Even though it's very basic, you learn a lot by actively trying to understand and use the language. It might be tiresome and frustrating at first, but you will learn crazy fast. What I mean with that is: Change your OS to that language and accept that you don't understand anything at first. Make internet friends and refuse to use English with them even though you have to translate every second sentence. Every time you see something you don't know, try to understand why it's written that way.
Lastly, if you have time and money: Do a 6 months ~ 1 year intensive every-day language course in the country that speaks the language you want. By doing that every day AND surrounding yourself with the culture + language, you will be able to speak after 6 month and become very good with it after 1 year.
On languages from a similar family (speak: English <-> German <-> French <-> Spanish || Japanese <-> Korean), you can get pretty far by buying books or doing internet courses.
For words, I prefer the spaced repetition method of tools like Anki. Important here is that you only create flashcards for words that you personally encountered to allow your brain to make connections to where you saw that word. Don't learn from wordlists.
For me, the process occurred in three phases:
1. Bootstrapping to the point where I could kinda-sorta read books and kinda-sorta carry on conversations. I personally used Assimil for this, which is excellent if you like learning by osmosis and you can spare 20 to 40 minutes a day for 5 months. Nine out of ten "language learning" apps just encourage you to screw around at this level with minimal progress, but if you just focus and get it done, it should only take a couple hundred hours (assuming you already know a vaguely related languagefor an English speaker, French is easier than Japanese).
2. Using the language (as best I could). I read about 2.5 million words and watched about 15 seasons of television shows. This took my comprehension from vague and dodgy to automatic and nearly complete. I also spent many hours speaking, and I wrote a few dozen short texts which I had corrected.
3. Gradual improvement. I speak French every day of my life now, but my rate of improvement has slowed down because I don't currently need to be any better. I mostly talk to the same handful of people. To get better, I'd realistically need to work for a French-speaking company.
[a] I've taken an online statistics course for French speakers, and the language was rarely a problem.
[b] I've had multi-hour technical conversations with French-speaking programmers while debugging code.
The number one most important thing in my opinion is regular, consistent practice over a sustained period of time.
So long as you are using decent materials (there are plenty for whatever language you are learning) and as long as you have incorporated some sort of feedback mechanism to spot mistakes (recording yourself speaking, speaking with native speakers), you'll slowly but surely make progress.
Regarding time, I'd say it took me about 5 years to get comfortable with the language (including reading/writing) such that I could conduct myself in Mandarin in a given situation without worrying that my language skills (or lack of them) would trip me up.
The way I learned Dutch came from having a long-distance relationship with a girl from Belgium. When I was visiting her on vacation her family would speak Dutch with one another at the dinner table and I would sit and listen. In the evening they would watch TV. Sometimes we would sit with them and I'd look at the subtitles in Dutch and try to map that to the English audio. At this point I didn't intend to learn the language; I simply saw it as an intellectual challenge to see how much I could make out. At times I'd even join to watch a programme in Dutch. I found that very helpful since they always had subtitles turned on and this helped me with one of the more difficult parts of learning a new language: parsing the steady stream of sounds into words.
Through this simple manner of absorbing the language I started recognising an increasing portion of the vocabulary. Once I felt comfortable forming a few simple sentences, I asked my girlfriend's mother to speak Dutch with me. She was all too happy to use her own language, rather than being forced to use English.
Once I felt able to speak in a limited manner about a few everyday topics (and I was living in Belgium as an exchange student) I took a course called "Dutch for foreigners". This was great for learning grammar.
Finally, after a year of living in Belgium I moved back to Sweden and my girlfriend soon followed. Since she had to speak Swedish all day at work I suggested that we would speak Dutch at home. That way she got to use her own language and I got to practice my Dutch.
We have now lived together in Sweden for five years, we're married and since Dutch has become the language I use at home I've found it difficult to remember to use Swedish when speaking to our son.
To sum it all up: pick a method and practice daily. You can do this anywhere with little investment beyond 60 minutes of uninterrupted study per day.
Otherwise it is extremely difficult to get the necessary amount of daily exposure to new and novel situations where the language you want to study is used. You can try by watching a lot of foreign TV series and movies, reading books, but those are not necessarily representative of the vocabulary useful in real life.
If you are a US citizen I think the only language you could get fluent in without leaving the country would be Spanish.
For English, I didn't have to make much of an effort. I was 12, loved Dragonball Z -- we have subtitled television. I wanted to know more about it, the US was further in the series than The Netherlands, so I started reading English websites even though I didn't understand much of it.
Eventually I got on forums being a smartass that Goku's power level was not xyz because at website abc.com I read it was abc. All the while I was forced to look in the dictionary from time to time. Also, we went on vacation, then you have to speak English or their native tongue, so I always chose English.
I got on more forums after realizing that the English web has more information than the Dutch web. I started writing there as well. Eventually I'd watch English instruction videos on any topic and learned a lot of things. Eventually I'd even watch psychology courses from Harvard while still being a high school kid.
Then I got to uni and some Dutch people had trouble with academic writing or writing English in general. All that I understood from those people is that they haven't been as much on the English web as I have been.
So yea like many of us who learned English as a 2nd language (in order of importance): the web, videos/series/movies, instructional books, vacations, games and music.
Note: if Japanese would've had a roman alphabet and a stronger web presence I'd be better in that too, since anime is kind of 'force feeding' me Japanese words as well.
My mother tongue is Italian, however it's since been superseded by the other languages.
How do you accomplish this? Travel.
You absolutely need to immerse yourself to be fluent. Save your money. Make hard choices. Pick up and commit to spending 2+ years in a new country, society and culture.
It will be hard, but you will get a perspective that is lost on so many: what is the immigrant experience really like? what does it feel like to be victimized or discriminated against (assuming here that you're a white, English speaking American)? what does it feel like the first time you can successfully tell a joke? the first time you can give a presentation? the first time you can seduce a partner?
Get out there snowdragon, immerse yourself!
In retrospect, what helped me the most in the early days were reading children's books and copying them down on separate piece of paper, and memorizing the most basic vocabularies that all native speakers naturally learned during their childhood years. These alone seemed to have improved reading comprehension and writing skills from level zero to the basic level. At first, try to write down the words in your native language next to the foreign words you are trying to memorize in order to make that initial connection, and later, try to memorize the definitions in the foreign language itself. I was using just pencil and paper throughout this process I wasn't even aware that I could've used computers to do this at the time.
Fast forward to teenage years and up to early 20s, listening to podcasts and audio-based grammar courses helped with refining speech. I used to repeat after every sentence and even respond to questions that the hosts asked their guests in some radio shows as if the hosts were asking me the questions.
In regards to expanding my knowledge of vocabularies, I used to spend hours every week memorizing SAT vocabularies, but nowadays I try to use the new vocabularies that I come across as soon as possible in real conversations.
For now, I think you should focus on memorizing words for the things that you encounter most frequently every day, in addition to learning conversational speech rather than diving deep into the nuances of grammar and trying to cram all the vocabularies you can get your hands on into your brain. It's a long and arduous process yet very rewarding, and IF you're a coder, you might know that there's a narrative by Peter Norvig to set a long-term goal (up to 10 years) in learning a programming language I think the same goes for spoken languages albeit it may take much longer to achieve an adequate level of fluency. Good luck.
There are multiple ways which can be used together to get the best way. Totally depends on the learner. Here are some of them:
1. Find a good mentor and you're half way through.
2. Join a good institute e.g Goethe Institute for German, Alliance Francaise for French. They have great sources of knowledge and know exactly how those languages are taught.
3.If you have basic knowledge of the language, start listening to simple Radio clips. It helps you improve your pronunciation. Or simply go to youtube and see/listen to the videos. There are many well-known resources and also some reading material on the net. Jump according to the needs and levels.
4.Try to find the meaning of every single word you come across. Use the dictionary for German, French, Spanish, and more. Keep google translator as your last option.
5.Finally, it is a language. It does take time to learn. Have some patience. Enjoy every bit of it and go ahead.
Best of luck. :)
Read, read a lot. But not hard-copy books. Read short articles. Read something you're interested in and already have some knowledge of. Technical stuff is easier than literature. No metaphors, no hidden meaning. You might not understand much in the beginning, but that's ok. If you at least get the gist of the article, you're good to go. It keeps you interested. Install the "Wiktionary and Google Translate" addon (if on Firefox, or similar for other browsers). Double-click a word to pop up it's definition. Or select whole sentences to instant-translate them. Every word definition is a click away. The more you see, the better you become.
Watch your favourite tv show with subtitles. If the tv show is in English and you already know English, that's all you need. Put on the subtitles in the language you want to learn and see the magic happen. You'll pick up words and expressions in no time. Dramas/thrillers work better than comedy. Comedy is usually fast-paced and has complicated expressions. Recommended: Dexter, Breaking Bad, SOA, etc. Not recommended: Friends, Big Bang Theory, etc. You get the idea.
It takes time, but it's better than learning all the grammar before you even have the chance to use the language. It's like learning the geometry of the hammer without ever using it. A little grammar right at the beginning might help, of course. But don't stay too long in that corner.
I learnt English at the age of 10 (which was best not to have any negative influence on the primary language as well), when I stayed in Australia for 3 years only but it stuck with me even after 20 years when my parents got much less confident in the language today. (Partially thanks to Internet where I could expose myself to English daily since then.)
As for pronunciation, I can still make converstation with natives as I kept reading English vocally when I read online materials to this day. I think it's very important to keep your tongue and mouth remember the flow by actively speaking if you are no longer in a position to talk with natives.
That plus the fact knowing the culture and the people in foreign country really makes a difference as an adult because you're no longer "afraid" of them (I especially feel this attitude in my country as a Japanese), those experiences have been such huge additions to my life, I'll be taking my kid abroad at certain age when I get one.
But when there (here) structured learning in the form of a few books to round-off vocabulary/grammar and a few lessons mainly to track progress and give feedback helped hugely in going from basic to intermediary. Pleco dictionary and flashcards for 1-2 hours per day also very useful.
I'd say variety is your friend. I don't know any learner who has mastered a language by sticking to a single technique. You would do everything, maybe with varying levels of comittment - read textbooks, take classes, do flashcards, do speech shadowing, talk to native speakers, watch movies and TV programs, etc.
After becoming able to say what I want (more or less), participating online discussions in the topics I care has been useful for me. It taught me how to structure longer chunks of text to express more complex ideas - you would be surprised to see how often sentence-to-sentence translation fails (between Japanese and English, at least).
If you are starting as an adult, native-level pronunciation would be difficult to achieve, even if you invest decades into it. I have almost given up on that front, and instead am focussing on how I can make my pronunciation less misunderstood. Part of that is to pay attention to vowels and consonants I'm not good at (or to use easier-to-pronounce synonyms where possible).
-School might be good for the first basis, forget it soon (at least for easier languages).
-Find something interesting in this language, about your work, about your hobby, looking local series helps a lot, language+cultural.
-Be around people who dont speak your first language.
Some things that have worked for me:
0. Goes without saying, but consistent effort. I've done at least a little French every day for the past two years.
1. Reading a lot. I started with the Harry Potters and now read for pleasure pretty much exclusively in French.
2. Reading on a Kindle. Instant dictionary lookup! This is such a big efficiency boost that I think that reading physical books is simply a mistake.
3. Listening a lot. I listen to about an hour of French podcasts/youtube channels a day.
4. Studying grammar. I mainly study grammar when I run into something tricky while reading, but I really do study.
5. Flashcards. I've only started making them in the past month or so, but yes, they really do work. I feel silly for not realizing that sooner. I highlight interesting words/expressions as I read and periodically dump them onto index cards.
I think I understood most of English (and could do basic talk) after 6 months but I really started speaking properly after 1 year. It was pretty intense.
Now I'm in Moscow (Russia) - and I feel like it's the same thing all over again; I don't speak a word of Russian. It's harder to learn as an adult; there aren't as many opportunities to learn passively (adults don't talk about simple things like playgrounds, running around, going to the library, eating lunch, etc... The conversations are a lot more advanced so it's hard to pick up stuff).
I still speak (and write) fluent French.
I think the most interesting thing about speaking two languages really fluently is that sometimes I don't even realize what language I'm speaking in... Several times I told my wife a whole sentence in French without realizing (she only speaks English, Russian and Italian).
this site is incredible.
The writing is super well done by a guy from Africa who moved to the US, and while in the US learned japanese.
He learned how to speak so well that when he took an interview for a software development job, they asked him for his address (assuming he was japanese) and didn't believe that he wasn't from there.
The site is not just for japanese. Most of the info is general (and uses either japanese or chinese as examples). I recommend it to everyone.
The way I became fluent in Spanish was that I went to a Spanish speaking country and immersed myself completely. I lived with people who only spoke Spanish, joined a local rec sports team, got a job, and took formal classes for 3 weeks (focused strictly on the subjunctive, which is tricky in Spanish) when I arrived. The most helpful thing by far though was having a local girlfriend, aka the "long haired dictionary". If it's an option, having a significant other with whom you speak the target language is a major leg up. It took me about 18 months after being immersed to feel really fluent and comfortable.
The reason I never became fully fluent in German was because although I lived in the country, I spoke a lot of English there. My Canadian study abroad roommate didn't speak any German and I found that most Germans I met spoke better English than my German would ever be, so many times we'd speak English instead of German. I was in Germany for almost a year.
At the end of the day I think becoming fluent in another language takes a solid base of self study and a whole lot of practice with native level speakers. Build your base with Duolingo, explicit grammar study, and Vocabulary (I recommend memrise), and then find a way to practice natural conversation with native level speakers of the target language.
1. Conversation exchange sites. You can find native speakers of the language you want to learn who want to learn your native language. Try to get enough language partners so you can do it a few times a week. People will cancel, so book more meetings than you'd like to achieve.
2. Films, TV, Radio, Youtube, etc. Don't use your native language for sub-titles. But do use sub-titles in your target language. Doing this will require a lot of faith at first because you'll understand almost nothing. Stick with it. It's no different than living in a foreign country where you'll also understand almost nothing at first.
3. Change your computer or phone or tablet so the OS uses your target language.
4. Play online games with people who speak that language.
5. Read some of your daily news in the the target language.
6. If you can't find local classes, you can find a teacher who will use Skype.
7. Think about things immersion would give you, and seek them out on the web: menus, street signs, store receipts, bills, product descriptions, adverts.
8. The other methods for learning a language have been mentioned elsewhere but I'll repeat them for completeness here. Duolingo (grammar), Memrise (vocab), Anki (vocab, ability to create your own flashcards) all of which are free. I like to supplement with a listening method like Pimsleur or Michel Thomas which are not free.
If you follow all of the above, put in the hours, and continue to think creatively and seek out opportunities for simulating immersion, you can come pretty close.
1. I am taking classes at my local college.
2. I am paying an instructor outside of class to accelerate my reading and writing.
3. I have started making myself write my everyday things in Mandarin. I.e my day planner. Notes. Grocery list.
4. I goto places where there are other Mandarin speakers and just start conversations.
5. If I want to say or write something and I don't know how I look it up on the spot.
6. I try to read websites in Mandarin
7. I make time to study every day
8. I ordered books from China in Mandarin to. Read.
It would be great to go learn in China but it isn't an option for me.
Edit: I forgot. YouTube videos
It worked miraculously, within 1 month I could speak good enough spanish, and by the second month I could go to Madrid and speak with anyone on the street.
It's surprising how effective it is, I even use to catch myself thinking in Spanish.
I think the best strategy is total immersion, however you can achieve that. It takes effort and dedication, but not longer than a few months for a similar language to yours, probably 6months to a year for something harder like chinese or arabic.
For pronunciation and accent there's probably nothing better than spending time with native speakers. In that scenario, don't stunt yourself by being afraid of making mistakes. People will understand.
>But basically: buy a Lonely Planet phrasebook. Learn full phrases off, use them. Get courses like Assimil, Teach yourself, Colloquial and use that for a little bit more of a base. Use it. Practice a tonne. When you are somewhat comfortable in the language, then (and only then) study some grammar to tidy it up. Practice more.
I imagine starting with common phrases and pronunciation cuts through the learning curve.
I can share my experience learning Spanish (at 40). I practiced every single day for 6 months using a variety of resources. Apps, grammar references, (online) dictionaries, personal teacher, news websites... I think what is important is not so much what resources you use, but the time you put in. You need to find a way to stay motivated for a long period of time, that's the hard part.
How well can I speak after 6 months? Well, I went through most of the grammar of the language, I can communicate (with someone willing to speak slowly), I can read the news but I have a hard time understanding people speaking at a normal pace. Overall, starting from zero, I'm rather satisfied but I expected to be better than that after 6 months (esp. considering French is my first language). It's harder than what I thought.
I stopped learning a few months ago and I'm afraid I'll forget everything pretty fast. Unlike English, I'm not exposed to the Spanish language.
I started thinking (when studying) and even dreaming (when I dreamt about programming, that is :-) in English before graduating because most of my books etc where in English.
In addition to reading lots and lots, one of the small things that helped me a lot was 10 years back or so I used to have an FF extension that let me doubleclick on any word on a webpage to get TFD definition of the word highlighted.
This took the effort out of expanding my vocabulary as I could look things up without breaking flow.
I still sometimes look up words that I haven't seen before although not as frequently as before.
(My problem is for a lot of words, esp. those I don't use at work I can read and write them but I might never have heard them.)
I learned English through TV (Flemish TV channels, and some Walloon ones are subtitled instead of dubbed), BBC radio and Linux documentation. I would say I was proficient around age 8. Around age 14-15 I decided to switch my American accent to a more British one.
I lived in southern France for some time, which exposed me to Spanish and Catalan. I'm not able to have a conversation, but I can follow a movie (I watched most of Narcos without subtitles). I took German classes in high school. I had a fair leg up thanks to my Dutch background. I wouldn't say I know the language in any shape or form, but I'm able to understand the rough lines of most written German.
I moved to Denmark about a year ago, took some (paid for by the government) classes to learn the basics. Pronunciation is horrible, but I have a fairly firm grip on the basic grammar, sentence structure (fairly close to Dutch, in the end) and vocab. I still do a fair amount of Duolingo and often ask my colleagues to keep conversations in Danish instead of switching to English. Due to the amount of English loan words in technical conversation, it's fairly easy to follow that. It's the casual conversation that is a lot more difficult to understand.
All of this to say: jump in. Move to another country, and don't rely on any kind of lingua franca to help you out. Watching TV in the language you're trying to learn, with either subtitles in a language you master, or once you've started getting a basic grip, subtitles in the same language as the spoken one.
Another thing you can do is watch English shows with subtitles in your target language. Force yourself to read the subtitles (this can be hard to do if you're not used to it). This helps with common idioms, sentence structure, and everyday vocab.
And read. Read a lot. Every country has a wealth of youth books, that, although not the most fascinating of reads, can be both challenging enough yet easy enough for beginners. Books also have the added advantage that they're asynchronous, meaning you can take time to reflect and research before hitting the next word.
I'll grant you that this is easier if the language you want to learn is spoken in a large, complex country or countries - such as the English, Mandarin, or Spanish.
In most cases, I would say it's pointless at this stage. Machine translation is already much better than most people can achieve with 6 months of study, and it's improving rapidly. I used to love learning languages, but I try to avoid learning things automation will soon be able to do better than I can hope to. On the other hand, if you need to be functional in a foreign language for the sake of some broader short-term goal, it might still be a sensible investment.
Keep track of words you don't kn ow during the day, and look them up in the dictionary every evening. Go out of your way to meet native speakers. When I worked in Silicon Valley, I listened to Spanish language radio stations only, watched only SPanish language TV networks, only read Spanish language newspapers which happened to be free, and only spoke Spanish in stores and restaurants. It helped that 50% of population in SV is hispanic, and I was a foreigner in the USA just like them.
Another trick, after you check the news in English, read it again on the net in your target language. And watch TV series with subtitles in the same language. For instance, I watched Russian TV series with subtitles in Russian. That helped me when my ear could not make out the words. Also, not movies, but TV series because the same characters appear again and again so you get used to their quirks of speech and can learn faster.
Buy a kids encyclopedia in the target language. Don't be afraid to download and read university papers and dissertations in linguistics about your target language.
And finally, get married to someone who speaks the language and raise bilingual kids.
I spent some time in Western Europe and I noticed that ,by default, they dub their movies instead of adding subtitles. I think this really affects the adoption of a foreign language as you are a lot less exposed to any other language than your own (outside of school, of course). On the other hand, movies are almost always subtitled in my home country, so a lot of people pick up basic English/Spanish/Turkish just from watching the TV.
Anyways, I think you could benefit a lot from direct exposure to the language itself, without the 'safe zone' that a teaching environment offers. Getting out of your comfort zone and accepting that you don't understand every word being said in a conversation is an excellent catalyst that will force you to learn a language by association and body language analysis, not by just memorising words.
Any and all of the following, in any order, skipping between them when you get bored or want to try something different. This is just a list of options you've already worked out for yourself.
Books (do them properly, cover to cover, answers all the questions and listening to all the conversations on the CD or whatever), specific books on grammr, making your own notes of topics of interest, websites, apps, making up conversation on your own, (paid) skype conversations with native speakers, evening classes, take a holiday there (and maybe take lessons while there on holiday).
The only common link amongst all people who learned a second language is that they started learning and didn't stop. That's the common link. That's how to learn a second language.
Stop spending time trying to pick out the "best" option and just start. Pretty soon you'll have worked out what you enjoy most. Just start learning and don't stop. Start now, don't stop.
The other story is I got a girlfriend speaking the other foreign language (Slovak). We speak English and her language (foreign for me) interchangeably. We also lived in her country for some time. Time we spent speaking, listening and reading her language made me fluent. No special tricks, courses, apps...
Just practice, asking questions and learning.I got fluent in about a year, but bare in mind, Slovak and Polish (my native) share a common root, so it wouldn't have been as easy with something like Chinese or even French.
Coming to your question, there seems to be no right way to learn a language except for selecting a learning resource and diving straight into it. Some languages are easy and some are quite hard but the trick seems to be in getting familiar with the initial phrases and then learning the grammatical rules. Grammatical and syntactical rules are like the glue that hold the words in place and I would advise you to focus on them. Talking to people who speak the language (can be quite awkward for the beginner) and reading passages aloud will end up helping you as well.
There is no timeline to this and getting fluent in a language is a function of your efforts and the difficulty of the language you have chosen. If the language that you want to learn is on Duolingo, that's the best place to start.
I know this is not the answer you were expecting, but I just wanted to highlight how quickly small children can learn a completely new language. If you have kids, consider temporarily moving to a different country :)
Hang around kids and you'll notice people correcting their sounds repeatedly. Teachers will show them how to move their tongues, describing just what to do to make a th-sound or g-sound and so on. Go to an adult class and you rarely get that, apart from fixing really coarse issues.
If you're lucky, the easiest way to learn is just to grow up in a dual language zone. I grew up with four languages around me, so I know those sounds. To make it useful, though, you need instruction. You're unlikely to grow up in a place where specialist terms like "magnetism" or "accrual" are used in multiple languages. Also having some classes will clear up the minor niggles with any given language.
Find the part of the internet that communicates in your target language. Read and participate. Structured language classes with a professional teacher are helpful, but not sufficient.
Duolingo is nice for very basic introduction and first "stepping stone", but not enough if you want to progress farther than the basic tourist level (at least, not in the languages I have tried it).
After ~15 years studying (both in school and other activities), I wouldn't consider myself fully fluent in English but capable enough to get by in professional context.
On http://lyricstranslate.com/, you can find songs translated from and to a lot of different languages. It's a lot easier to remember words when it comes with contextual markers: music, it's place in a line of lyric.
Scott H. Young's 9 Tactics for Rapid Learning
Duolingo  (free) also helps with getting a grasp on basic grammar and vocab, but doesn't support many Asian languages (Vietnamese just got released and Indonesian is in progress).
Memrise  (free) is similar to Anki but has more of a modern, community-based app feel. A lot of great user-generated content.
Skritter  (subscription, phone app) helped me a lot when I was learning to write and recognise Chinese characters. They also have Japanese Kanji version.
Software-wise, I am currently learning Vietnamese, and for that using my own Anki deck (30-40 cards a day) and 5 duolingo lessons (adding new vocab to Anki). Feel like I'm making fast enough progress, but I think integrating anymore software to my daily revision routine would be too much.
Then you need a lot of interaction with people, using what you have leant in that language to attempt to communicate. I think this is the most important part and where you'll learn the most. You'll be forced to practise your listening, speaking, drawing on vocab and grammar that you know and have to put mould them into an understandable sentence. You'll make mistakes and look like a fool, but that's just part of the learning process. Try to treat it like a bit of fun, and hopefully the people you're talking to will also.
Outside of that, watch children's television shows in the language you want to learn, with english subtitles. The language is simple and will help get it in your ears.
I've known expats who go to Thailand, live in western communities, associate with other westerners mostly speaking English and deal with locals mostly on a limited level don't get very far. I've also met foreigners who come to live among locals in local neighborhoods and interact with the locals on a daily basis get very good at the language.
I don't think there's any way around it.
For Android phones, you can sync Anki with Ankidroid .
I know it's not only book as the main resource to improve the language. By the way, any recommendation of book or other resource to improve English language?
Several things. The more the better; in combination is best: Physically move to the place. Befriend locals who don't use English. Shun people who do use English. Take classes. Get a job where your coworkers do not use English in the workplace. Use Quizlet or flashcards or some similar tool.
PR turned out to be an exceptionally difficult place to learn Spanish (for why, see: http://www.speakinglatino.com/study-spanish-in-puerto-rico/ particularly #2). It took me longer than it would have taken had I gone somewhere that English was not an option, and my biggest jumps forward were on business trips to those places.
When I arrived, I started taking lessons twice a week, and continued that for about 18 months. I spoke Spanish almost exclusively for work, usually over the phone, which is much harder and likely helped. A few years in, I moved to Miami, where I actually speak more Spanish at times (here, social situations are in Spanish, in PR all social interactions were in English) Later, I married an Argentine, and found out that I had to learn a whole other language!
Other things I did that helped:
1- I decided I was going to say dumb things, and that I had to be okay with that. When someone would point something out, I'd laugh. An example, I remember mixing up the words for 'butterfly' and slang roughly equivilent to 'faggot' in American English. I didn't know that's what it meant. I had heard the word somewhere and associated it with butterfly because they sound somewhat similar. Be ready to laugh at yourself, that makes it much easier to just throw it out there and try. And let's be honest, pointing at a butterfly and saying, "Hey look at the faggot" with no other context or offensive intent is pretty funny. 2- Find people to speak with regularly. Daily if you can. The really valuable people are those who will correct you without switching to your language unless absolutely necessary.3- Focus on communicating, not grammar. You need enough grammar to be understood, and you should keep correcting it when you make mistakes, but if you work on communicating effectively with people, the grammar falls into place.4- Have fun with it! Its interesting. Enjoy.5- Learn the bad words too. I used an offensive word above. But its important to learn those words, because that's how people actually converse. You'll learn whole other levels of both language and culture by doing so. Sometimes, its important to realize when someone is being offensive, or even that you're being offensive and don't know it.
But mostly, have fun with it.
Depends on the language and were you're coming from but to get C2 proficiency it takes anywhere from 900 to 4400 hours of immersion according to various sources.
In my experience that's quite accurate.
I also took English classes for several years when I was young.
First, you have to define what you mean by "fluent". There are several proficiency scales that may provide some useful insight:
- Common European Framework of Reference for Languages (http://www.coe.int/t/dg4/linguistic/cadre1_en.asp)
- ACTFL proficiency guidelines (https://www.actfl.org/publications/guidelines-and-manuals/ac...)
- Interagency Language Roundtable scale (http://www.govtilr.org/)
Here is a quick-and-dirty self evaluation that can give you an idea of the range of what "fluent" can mean (http://www.govtilr.org/Skills/readingassessment.pdf).
WHAT LEVEL OF PROFICIENCY DO YOU WANT
The next question you have to answer is what proficiency level are you aiming for.
Most of the resources you listed are fairly good at getting a learner to a low level of proficiency (CEFRL A2, ACTFL Novice High, or ILR 1). Just try one or two and find the one you like doing (I am a fan of Duolingo, but ymmv). This level is roughly "survival mode" language (e.g., basic introductions, basic getting around and doing things, short and simple small talk). If your goals are higher than that, then then the process is less transparent, but it mostly involves working with authentic native materials (texts, videos, audios, etc.) and learning through interaction with those materials. Note that it is almost impossible to get beyond a very low level of proficiency with books alone -- the scope of language that would need to be covered gets too large too quickly. As your proficiency level increases, language learning texts become reference sources rather than primary sources of learning.
The steps of fluency roughly look something like this (using ILR scale for simplicity):
- Memorized words and phrases (ILR 0+).
- Short, simple sentences (ILR 1). Many/most Americans I know consider this to be "fluent".
- Basic paragraphs (ILR 2).
- Extended prose (ILR 3).
Most of the suggestions I see in this thread focus on ILR 0+ and ILR 1. There is an entire world of language and language learning beyond that. Note that I stopped at ILR 3 -- that's the level at which a person can fully function at a professional level in most contexts. Day-to-day life is largely conducted at the ILR 1+/2 level.
How do you want to use the language? The four skills are reading, listening, speaking, and writing. The first two are receptive skills that develop faster than their productive skill counterpart. Note that materials that are really good for developing one skill (e.g., reading) might be much less effective or even slightly counterproductive for learning another skill (e.g., speaking). That said, it is usually good to develop all skills at least somewhat while focusing on the skills you are most interested in (i.e., if you want to read, don't just read -- learning some speaking and listening will help the development of your reading).
HOW MUCH TIME
Another question is how much time do you have to dedicate to learning the language. Some languages are more linguistically distant from your native language than others, and the more distant languages take longer to learn. Here is a scale used by FSI with languages and hours of instruction needed to get to ILR 3 in one skill (usu. in speaking):
Note that the range of time required is large -- 600 hours in 6 months for Spanish or French, but 2200 hours in ~20 months for Arabic, Chinese, Japanese, or Korean. To put that in perspective, when a talented learner of Spanish is functioning at a full professional level, an Arabic learner who started at the same time will typically be functioning at a touristy sentence level.
BASICS OF PROCESS
Maybe this is a tl;dr. I am not sure that it makes sense without the above context. Note that at any time, traveling to or living in a place where the language is spoken will help tremendously. Also note that having a native informant can be very useful -- italki is a great resource for native informants.
1. Assuming you want to learn a relatively commonly taught language (e.g., something like Spanish or Korean rather than something like Xhosa or Igbo), pick any learning source that you like and stick with that. You will learn the sounds and script of the language as well as memorize basic words and phrases. You will eventually be able to create short, simple sentences that may or may not sound native-like. This is about ACTFL Novice or ILR 0+ or 1 level.
2. Start looking at level-appropriate native texts, and use learning texts as references rather than primary sources. Lower-level texts might be things like ads, announcements, or parts/clips from videos that cover casual conversation. Higher-level texts might be newspapers, non-fiction books, most general interest TV shows (i.e., not ones on opinionated and/or abstract topics like politics or religion). Flashcards can be useful (esp. for specialized vocabulary in a field you are interested in), but you will want to move away from flashcards and memorization gradually. You will need to immerse yourself in the language as much as possible to approach full functionality. This does not require you to be in a place where the language is spoken, but that usually helps a lot. This will get you to the ACTFL Intermediate or ILR 2 level.
3. To go beyond step 2, you will largely need to start functioning like a native. Your day-to-day socializing and media consumption will be almost entirely in the target language. The reference texts you typically use will be the ones that are written for native speakers of the language you are learning (e.g., a Japanese-Japanese dictionary). This is ACTFL Advanced or ILR 3 level.
In short: to reach moderate fluency at B2/C1 level, learning any language, would require a couple of hours every day for about 3 years. But there is -NO- optimal method!
I have put a considerable amount of effort to research this question as a semi-professional (currently studying applied linguistics) and for my own private use.
I've reached fluency in English (and to a lesser extent in Hebrew) as a second language. I've also learned and sometimes use Spanish (learned at a university), German (high school, I live in Germany now), Danish (university), French (high school), Ukrainian (university), Italian, Latin (high school), Classical Greek and Aramaic.
People studying full time Chinese, Arabic or any other language get their BA in 3 years and are quite fluent. It often requires about 10 hours a day of work (classes, reading, drills). It's hard. No short cuts.
On the other hand, however, I'd say that you need about 50 verbs and about 200 other words with almost no grammar to communicate. Where I work I speak Portuguese (a language I don't know!) German and Spanish with a girl from Portugal who speaks only Portuguese. The notion of "learning" a language is a construct of our education system. Grammar is almost useless is day to day communication. You only need both sides to wish to communicate, and there has to be no superiority and inferiority in the relationship. Somehow a natural "pidgin" grammar emerges spontaneously - you may not know past tense, but then you say simply "yesterday" + infinitive and it works perfectly well. The more I talk with Amalia the more Portuguese I get. And then I use it with two other friends from Brazil. It simply works - with no formal training, courses, textbooks. In class you are focused on correctness, not on getting your message across, and you are graded for correctness. This creates stress, confusion, doubt in your abilities.
My Portuguese, however, would not be good enough to get a job in Portugal. And my English, by the way, which I use with ease, would most probably be not enough to work as a journalist or in a radio station, although I read and listen to English between 5 to 10 hours every day.
What the research about language learning teach us? Almost NOTHING! It only confirms common truths about what helps: immersion, having no stress, living in the country, being self-reflective about your methods, good resources, practice, reading, radio, tv, vocab drills etc.
I talked with prof. Anders Ericsson about why is it that 40 years of serious systematic research has not produced ANY conclusions. You might have heard about Stephen Krashen and his "silent period" and "natural acquisition method", in short: adults learn just like children. This method is very popular among polyglot YouTubers such as the popular Steve Kaufman. The most important principle of this method is that you don't learn grammar at all. The research on second language acquisition is NOT CONCLUSIVE! I believe in science (the same science that builds transistors smaller than visible light waves) and apparently Krashen's theory has not been confirmed or rejected which means that we still have no clue what works and what doesn't. I've spent tens or maybe even hundreds of hours reading about Krashen and I am only frustrated. Language research is tricky, there are dragons, don't go there.
I spent over a year on scholarship studying Hebrew, I was very methodical about it, I made beautiful statistics, graphs, precisely measuring everything for 12 months and my conclusion is that: leaning a language is freakingly difficult, requires inhumane tons of hours, and that brute force works (Anki drills). I had excellent conditions, money for free, a room, teachers, no family, no concerns. I can now (slowly) read academic papers and watch movies, but I just cannot imagine anyone (not super smart) learning any language having a (intellectually demanding) day job and kids, and reaching fluency on a graduate level.
I am about to start leaning Arabic and I feel I will die trying (I'm 30). With just about 3-4 hours a week I expect to be able to read Judeo-Arabic in 15 years.
Resources (in fairly random order):
* Julia Herschensohn, Martha Young-Scholten (ed.), Second Language Acquisition (The Cambridge Handbook), Cambridge University Press, 2013.
* Carol Griffiths (ed.) Lessons from Good Language Learners, Cambridge University Press, 2008.
* Christine Pearson Casanave, Controversies in Second Language Writing, Dilemmas and Decisions in Research and Instruction, University of Michigan, 2004.
* John W. Schwieter (ed.) Innovative Research and Practices in Second Language Acquisition and Bilingualism, John Benjamins Publishing, 2013.
* Anders Ericsson, Robert Pool, Peak, secrets from the new science of Expertise, 2016. (interesting but not strictly scholarly)
* Stephen D. Krashen, Principles and Practice in Second Language Acquisition, University of Southern California, 1982.
Only I repeat and repeat each sentence, each paragraph, and then each page, until I can read it out loud quickly with good pronunciation (I have a reader with TTS in the foreign language), where I can construct the meaning in my head on the fly. Until I get to that point, I don't consider the sentence, paragraph, whatever, learned.
My theory of language learning is that you need a strong root of a few sentences before you can branch off into new words and grammar constructs.
Too many language courses try to pack in the material as fast as possible. To me, that's a mistake. Like etching a lot of faint scratches into stone, you have a lot of information there, but it's difficult to read any specific thing and they wear away quickly. So, basically go for a few deep marks over a bunch of small light ones.
Just being able to make repetitive small-talk - but being able to do so with a degree of confidence is the base for expanding your "working set" into more useful and fluent conversations.
Beyond that, I found Anki to be the best flash-card system. Customizable, it's great if you are motivated enough to design and build your own card decks. Getting a "basic" vocab of around 1000 words should be a rapid short-term goal over 3 months or so (that's 10 new words a day, more than that will be challenging for most people).
And find a good textbook. There are a lot of ordinary books out there. But there are also usually a couple of highly regarded/respected series for a given language that stand out above the rest. For the two language I have learned they are the Integrated Korean series, and Japanese for Busy People.
But...go back to the first point. Language partner. There is not point trying to study a language in a vacuum, you need to be recalling in realistic conversations scenarios everyday ideally.
When I learned my first foreign language (as a kid, in the 80's), there were only paper dictionaries and books. Software is a great improvement over paper dictionaries, however Im unsure about apps. I tried a couple of applications and have been unconvinced.
That being said, the Internet makes it very easy to access content in the language you study and even find people with whom to speak. Youtube for example is full of videos on topics you like.
Lets ignore software and tools, as its really secondary (yes, really).
The first step is the why? If its just for the pleasure, that may not be enough. There must be a reason, otherwise you are likely to give up. For example: work, living in the country, strong interest in the culture, relatives, origins, etc.
The difficulty of learning a foreign language depends on the distance between your native tongue and the foreign language. Its very hard for an English speaker to learn Mandarin (and vice-versa), however French is a lower hanging fruit (you already share thousands of words of vocabulary).
Its also very dependent on you. Some people are just better than others at learning languages. Just accept it and go at your rhythm.
The best advice I can give is that you should find a native teacher. I cant stress the importance of learning with a native enough. Its paramount for pronunciation and idiomatic phrasing. I would almost say that you are wasting your time with a non-native teacher, however competent she may be.
Why a teacher and not self-teaching?
I would refrain from self-teaching, as this will give you horrible pronunciation and probably give you bad habits. There is a point where an accent ceases to be cute and makes listening to you uncomfortable, dont underestimate pronunciation. Remember: unlearning is one order of magnitude harder than learning.
In addition, learning a language is a serious commitment and without someone to give you homework every week (and checking that homework) you will very likely give up, even if you have excellent self-discipline.
Depending on your personality you can either have one to one sessions (for example with Skype) or work in group. I personally prefer one to one greatly.
Having a teacher and looking for that teacher will also test your resolve. :-) Every time someone mentions Im learning X, I ask, Why dont you take courses?. If the answer I dont have time, I know the person isnt serious about learning.
The temptation to give up will be at every corner as studying languages is very hard and the duration is measured in months, if not years. You will struggle, a lot. There are times where you will make no progress and seem unable to remember anything: thats normal.
Speaking a foreign language is one of the greatest things in life. It expands your horizons and will overall make you a better, more understanding, humbler, human being. The pleasure of conversing with foreigners in their native tongue will belittle all the efforts you endured.
Check out Stephen Krashen, he basically describes how I and a lot of people have acquired languages.
Gist of it:
- A lot of reading about a lot of topics.
- Exposure to the language (audio video).
If I don't have enough tasks/hours allocated, I look back at anything I did during the week that isn't on the allocated list, and I have it added to the allocated list and then I write the hours in. Sometimes, I'll do this during the week rather than all on Friday.
The purpose is to fill in the boxes and make the numbers match. Nobody ever examines the boxes and numbers, and they bear no relationship to what actually happens. If I don't fill in the boxes and make the numbers match, someone comes to insist that I fill in the boxes and make the numbers match.
In the ones that I get added, I pick the number. Other ones just appear with numbers already in them. Sometimes I like to spread the numbers out. Sometimes I just do them in big blocks.
You have to ask yourself, what value would you get from estimating that a code review will take 10, 20 minutes? Is that kind of information particularly useful for forecasting? I would guess it isn't because it seems too granular. Nobody I know sits down and plans a series or 10 or 20 minute code review sessions. They usually plan out bigger blocks of work.
I use a tool called Track - Simple Time Tracking and Invoicing (https://itunes.apple.com/us/app/track-simple-time-tracking/i...)
Full disclosure, I built Track and I own the company that sells it.
I built Track because I wanted a cleanly designed time tracking tool that syncs my data between devices and doesn't make me sign up for an account. It's iOS-only. It works on the iPhone and iPad.
So yeah, I use the tool that I built. I use it every day while I'm working on my client projects.
Example:(/Todo-New taks name here Project project name Due 1/1/2016 Tags #one #two #Three Time 2h)
Anyways, I do track time because we bill hourly and eventually I have to move the totals for billable work from my app into our timesheet system (very clunky Microsoft Project Server).
I've been a paying customer for over 5years, and well worth EVERY penny!
Note: the mobile interface is very dated. I only use it in desktop.
In my experience, the requirement for per-task time allocation is not met with the appropriate review and tally at the PMO level.
It is more pain than gain.
You set up some tags and tap on them to start the timer. For example I track things like meeting times or time spent in code review. Also generates reports and gives you JSON to write custom apps with.
By the way, I don't have any affiliation with the app or company, I just think it's a well designed app
I use Freshbooks for invoicing, and it also allows simple time tracking, for which I use a macOS dashboard widget (a bit outdated, but it works).
Disclosure: I'm the author.
I'm still looking for a Linux equivalent (I'm currently using a shell wrapper for `ag --depth 0 -g <pattern> <directory>`.)
Finding files is pretty straight forward using the LIKE operator against text in the filename, path or file contents. And the set-based logic of SQL works very well for identifying sets of files to work with: we have an exec() command that lets you run commands on file paths returned in query results.
License terms are free for personal use and $5/month commercial.
In terms of raw performance, I'm impressed with the speed and presentation of https://instantdomainsearch.com/ . Instant live responsiveness improves usability significantly.
Basically, because the list of songs was short-ish (in CS terms), it would fiter it based on the current search textbox what seemed like instantly.
I would have a large list and filter it down each time the user types another letter: and concentrate on making that as fast as possible.
Search speed, good fuzzy matching and good row/chip design are as important/more important than the basic search UI, IMO.
ctrl p, type fuzzy match, instant results.
They keep the most common filters quickly available, make it easier to dive into more, and their search result entry contains the neighborhood so i can quickly figure out where something is, a photo, part of a review, phone number and address.
It offers autocomplete for logical operators, search operators, field names and even for values (where there is a limited amount of data available to select). And it offers enough power for nearly all queries I could think of so far.
(In contrast to SQL there are no subselects or explicit joins, but there are plugins that make subselects available).
Not sure how inspiring it is, but here you go: https://changelogs.md/
The goal of this UI is to have the bare minimum of useful info easily accessible.
Particularly (free links with pdfs),
Don Norman - Design of Everyday Thingshttps://archive.org/details/DesignOfEverydayThings
Bill Buxton - Input Manuscripthttp://www.billbuxton.com/inputManuscript.html
Alan Cooper - About Facehttp://feiramoderna.net/download/pos-positivo/COOPER-Alan/Ab...
Vignelli - The Vignelli Canonhttp://www.vignelli.com/canon.pdf
Bill Buxton - Sketching User Experienceshttp://bscw.wineme.fb5.uni-siegen.de/pub/bscw.cgi/d807887/Sk...
(the workshop slides)https://www.medien.ifi.lmu.de/lehre/ss14/id/Day%202%20Sketch...
Also highly recommend Steve Krug's "Don't Make Me Think" (as others have already commented): http://www.sensible.com/dmmt.html
To achieve really good results in UX design, to do it at the right time, I'd recommend to start not from the books, but from the interaction design specialization on Coursera at https://en.coursera.org/specializations/interaction-design or you can take just intro - https://en.coursera.org/learn/human-computer-interaction. You can take the courses for free and they'll give you the necessary mindset and understanding of process. You'll find that product design actually starts from UX, not ends with it and it defines the necessary requirements framework for the system architecture, which you can use later in combination with BDD/DDD. After that course you can start reading the books (Steve Krug, Don Norman, Alan Cooper, indeed!) and platform guidelines (my favorites are for Google Material Design and Microsoft's Modern UI).
It will be great if someone here recommends some books or articles about UX design process and integration of it into popular agile methodologies.
"10 Usability Heuristics for User Interface Design" by Jakob Nielsen, January 1, 1995 
 http://rosenfeldmedia.com/books/build-better-products/ https://soundcloud.com/lean-startup/4-season-3-combining-use...
Information Dashboard Design - Stephen Few
Don't Make Me Think, Revisited: A Common Sense Approach to Web Usability (3rd Edition) - http://amzn.to/2e5Erfc
Design for Hackers: Reverse Engineering Beauty - http://amzn.to/2euMOUc
UX Design and Usability Mentor Book : With Best Practice Business Analysis and User Interface Design Tips and Techniques - http://amzn.to/2dXYZJT
This question may be particularly relevant:
All UI's are graphs at their heart
I use it every time I need to craft an interface but especially for SaaS apps. The OP requested something from a 'newbie perspective'; this book will explain the basics but the real value comes from the explanations and advice with respect to why UI decisions lead to happier users.
I've copy/pasted the chapter headings from the site:
Chapter 1. Your Product Strategy
Chapter 2. Navigation
Chapter 3. Dashboard & Homescreen
Chapter 4. Audit Your Screens
Chapter 5. The Problem of Style
Chapter 6. Get a Theme
Chapter 7. Plan for Improvements
Chapter 8. Deal With New Features
1) Want to make user interfaces that are actually useful to people? Read up on product management, UX and interaction design. Important skills: articulating the problem you are solving and for what kind of user, and being able to validate whether your hypothesis is on point. Iterating before committing further resources to building a prototype. Conducting user testing sessions (rocket surgery made easy is a good resource for this).
2) Want to make a specific view / flow of a product inviting and visually appealing? Study visual design and typography.
3) Want to be able to build a functional prototype that looks reasonably good? Study frontend design / development. There are a lot of frameworks that could get you up and running.
IMHO going for (1) and (3) first is smart; if you can't prototype and evaluate a user experience that has a shot in hell of being useful to an actual user, being able to make stuff look pretty is kind of irrelevant (unless you are specializing and collaborating with engineers and UX people). In any of the above cases, at least knowing more precisely what you want to learn will help you do better googling, e.g "best books on visual design" or "best books on interaction design".
This is an introduction to UX The User Experience Team of One
It's from Rosenfeld Media and you should take a look at the rest of their books. They are of a high quality and cover a wide range of topics related to both UI design and UX.
It's not explicitly computer UI design, but the book is essentially an alphabetical list of design concepts with illustrations/examples, and they're very applicable to computers. Amazon has "look inside" if you want to see what it's about.
Basically, don't forget the human in human computer interaction/UI/UX. It's very easy to come out of the academic perspective on UI/UX design designing exclusively to efficiency formulas and words in a glossary. Keep the user, the human, and their context in mind.
His Udemy course is also very good: User Experience (UX): The Ultimate Guide to Usability and UX 
Meanwhile https://www.designernews.co is Hackernews for designers
It's accessible, not too long, and yet still packed with good info on the basics of ui design and user experience.
* edit: meant this one
Branded Interactions: Creating the Digital Experience - (https://www.amazon.com/Branded-Interactions-Creating-Digital...)
The Visual Display of Quantitative Information - https://www.amazon.com/Visual-Display-Quantitative-Informati...
Universal Principles of Design - https://www.amazon.com/Universal-Principles-Design-Revised-U...
The Interface: IBM and the Transformation of Corporate Design, 1945-1976 - https://www.amazon.com/Interface-Transformation-Corporate-19...
Multiple Signatures: On Designers, Authors, Readers and Users - https://www.amazon.com/Multiple-Signatures-Designers-Authors...
Change by Design: How Design Thinking Transforms Organizations and Inspires Innovation - https://www.amazon.com/Change-Design-Transforms-Organization...
Thoughts on Design - https://www.amazon.com/Thoughts-Design-Paul-Rand/dp/08118754...
Notes on the Synthesis of Form - https://www.amazon.com/Notes-Synthesis-Form-Harvard-Paperbac...
..and a list of ones I'm considering adding:
Unflattening - https://www.amazon.com/gp/product/0674744438/ref=oh_aui_deta...
Creative Confidence: Unleashing the Creative Potential Within Us All - https://www.amazon.com/gp/product/038534936X/ref=oh_aui_deta...
The Design Method - https://www.amazon.com/gp/product/0321928849/ref=oh_aui_deta...
Product Design for the Web: Principles of Designing and Releasing Web Products- https://www.amazon.com/gp/product/0321929039/ref=oh_aui_deta...
I'll be adding more content in the last week of October and fixing the repo so it'll be easier to navigate
my favorite: http://ux.stackexchange.com/questions/9946/should-i-use-yes-...
It's an ebook, but don't let that fool you.
* Derek Banas (https://www.youtube.com/user/derekbanas): staggering amount of content on a huge variety of programming topics; tutorial-style; this guy is so productive it scares me sometimes :(
* Mark Lewis (https://www.youtube.com/user/DrMarkCLewis): CS professor; lots of videos on general CS, functional programming; focus on Scala
* VoidRealms (https://www.youtube.com/channel/UCYP0nk48grsMwO3iL8YaAKA): excellent C++-focused content, great Qt series
* mathematicalmonk (https://www.youtube.com/user/mathematicalmonk): great ML and probability videos
* mycodeschool (https://www.youtube.com/user/mycodeschool): general CS, algorithms, data structures
* HandmadeHero (https://www.youtube.com/user/handmadeheroarchive): excellent series by Casey Muratori that explains a huge number of topics related to game dev, gfx programming; has a really long series of videos documenting how he's building an indie game from the ground up i.e. custom engine
I will update once I think of others :)
He does things like create a Doom-style engine from scratch: https://www.youtube.com/watch?v=HQYsFshbkYw .. create a NES emulator: https://www.youtube.com/watch?v=y71lli8MS8s .. work back from a C++17 example to show why new C++ standards are needed: https://www.youtube.com/watch?v=wrwwa68JXNk .. and even building a Tetris clone in GW-BASIC: https://www.youtube.com/watch?v=JDnypVoQcPw .. Right now, he's doing a series on cracking 80s videogame passwords: https://www.youtube.com/playlist?list=PLzLzYGEbdY5nEFQsxzFan...
Sirajology - https://www.youtube.com/channel/UCWN3xxRkmTPmbKwht9FuE5A - is another interesting one. He moves a bit too quickly for me, but does things like explain machine learning in 5 minutes or how to generate music with systems like Tensorflow.
Strange Loop: https://www.youtube.com/channel/UC_QIfHvN9auy2CoOdSfMWDw
Wes Bos: https://www.youtube.com/channel/UCoebwHSTvwalADTJhps0emA
In addition, I have incredible amounts of respect for people that are willing (and capable) to live code what they're teaching. For one of the best examples of how to effectively live code, look no further than when he implemented a concurrent system from scratch at PyCon 2015: https://www.youtube.com/watch?v=MCs5OvhV9S4
Channel (with some of his videos): https://www.youtube.com/user/dabeazllc
Coding Math (https://www.youtube.com/user/codingmath): covers all the math you need for games and each ep. have code examples.
Bisqwit (https://www.youtube.com/user/Bisqwit): c++, emulators and other cool stuff even his setup is interesting(dosbox+his own editor).
ThinMatrix (https://www.youtube.com/user/ThinMatrix): his videos on VAO and VBO were a savior for me when learning opengl.
Daniel Shiffman (https://www.youtube.com/user/shiffman/): his videos are quite beginner friendly explains whole process of creating classic games like snake or creating art with code like fractal trees.
Vittorio Romeo: (https://www.youtube.com/user/SuperVictorius): walks you thru all modern c++ features by creating a game with them.
Access to the videos costs $29/month but is well worth it IMO. He covers a very wide range of topics from beginner to advanced. To sum things up in a few words -- his content is focused on a general understanding of computer science and puts concepts, abstractions, and methodologies before any specific program, tool, or programming language.
Look at the episode titles for a better idea of what I'm getting at, there's literally something for everyone.
He's also started streaming on twitch occasionally.
Defcon (computer security) - https://www.youtube.com/user/DEFCONConference/playlists
PyCon 2016 (Python) - https://www.youtube.com/channel/UCwTD5zJbsQGJN75MwbykYNw/vid...
PyCon 2015 (Python) - https://www.youtube.com/channel/UCgxzjK6GuOHVKR_08TT4hJQ/vid...
PyCon 2014 (Python) - https://www.youtube.com/user/PyCon2014/videos
BSDCan (FreeBSD, OpenBSD and others) - couldn't find a dedicated channel but this one has some BSDCan playlists - https://www.youtube.com/user/osbootcamp/playlists
Chaos Communication Congress (computer security, organized by the Chaos Computer Club aka. CCC) - https://www.youtube.com/user/CCCen/playlists
Black Hat (computer security) - https://www.youtube.com/user/BlackHatOfficialYT/playlists
DerbyCon (computer security) - again, couldn't find a dedicated channel but this one has DerbyCon in addition to some others which might be interesting as well - https://www.youtube.com/user/irongeek/playlists
Coding a game engine from scratch, but don't think it's just about games. The techniques covered range from beginner to highly advanced and programmers in any field, at any skill level, can learn a lot. For example, check out the live editing/reloading for C code in Week 5. https://hero.handmade.network/episodes
=== edit ===
Mycodeschool: https://www.youtube.com/user/mycodeschool - Great for a refresher esp. if you are starting with interview style questions
Google Developers: https://www.youtube.com/user/GoogleDevelopers
Oreilly - https://www.youtube.com/user/OreillyMedia/videos -> Need to look at playlists to find really relevant ones. But good videos on AI, microservices and software architecture
Here's the playlist:https://www.youtube.com/playlist?list=PLmV5I2fxaiCKfxMBrNsU1...
If you're trying to re-learn math (and probably going the Khan Academy route) then I highly recommend checking out PatrickJMT's channel. He produces simple, but excellent mathematical videos in a style similar to tutoring (which is how he started doing the videos in the first place). I actually find his style to be much more engaging than Khan (nothing against Khan of course).
I really like the way he provides most simplistic explanations to the algorithm problems. Really helpful if you are preparing for an interview.
If you like physics and want some really good explanations to simple questions, you can check Derek Mueller's channel(Veritasium) on youtube. He is a physicist and has some really good videos. I especially like his video on " Most radioactive places on earth" and a separate video on Chernobyl. Also, check his video on Uranium : Twisting the dragon's tail : https://www.youtube.com/watch?v=cO57Zm-WNmg
cryptography lectures https://www.youtube.com/playlist?list=PLgO7JBj821uGZTXEXBLck...
Dan Boneh cryptography lectures https://www.youtube.com/playlist?list=PL9oqNDMzcMClAPkwrn5dm...
machine learning lectures https://www.youtube.com/playlist?list=PLgO7JBj821uGo_Up8MA7A...
theoretical computer science lectures https://www.youtube.com/playlist?list=PLgO7JBj821uGo_Up8MA7A...
google chrome developers: https://www.youtube.com/user/ChromeDevelopers
- Ben Krasnow of Applied Science: Great for any maker, he currently works for Google X. https://www.youtube.com/channel/UCivA7_KLKWo43tFcCkFvydw (blog http://benkrasnow.blogspot.com/)
- Dan Gelbart: If you want to learn any prototyping https://www.youtube.com/user/dgelbart/videos
- EEVblog: All things electronic https://www.youtube.com/channel/UC2DjFE7Xf11URZqWBigcVOQ
To the list I added three for those interested in iOS:
*I'm the proud developer of BriefTube
You can watch some his videos for free by signing a free trial account at https://www.safaribooksonline.com/. No credit card required.
Not really related to best practices though, but he has done some nice things with the ESP8266.
My other favorites have already been mentioned
Great focus on the fundamental questions of Computer Science.
His series on C# is best I have seen. He also covers other topics and is very good teacher, lot of examples and is not afraid to go low level to explain things.
I haven't really found a good one for JS yet.
Confreaks records, broadcasts and covers conferences, talks and presentation relevant to all kinds of developers. Neatly organized in a playlist per event and uploaded reasonably quick I consider their coverage as extremely valuable for someone like me who isn't able or willing to attend all those great conferences and talks that are still very much relevant to me.
I receive notifications for certain channels while I'm at work - later at home, I have no idea how to watch "most interesting stuff from the last days" in a easy way. Then I go open channels manually! Come on!
They can easily improve and win the TV and Netflix on the living room... all the creative content is there. Show me some sort of auto generated playlist with the new content from channels I'm subscribed and that are trending.
He does dev & design, specialising in Ruby on Rails
LearnCode.academy: https://www.youtube.com/user/learncodeacademy (Web development)
thoughtbot: https://www.youtube.com/user/ThoughtbotVideo (I watch them for Vim and emacs videos)
and funfunfunction: someone already mentioned it
Lots of great tutorials, and cool guy.
Here is our security/cryptography series: https://www.youtube.com/watch?v=C9Me04oEopk
Here is the channel: https://www.youtube.com/channel/UCQAtpf-zi9Pp4__2nToOM8g
He is a very funny and a great teacher!
Covers machine learning related topics in a very fun way.
Lots of great ML stuff
Just discovered it and watching right now.
Mainly about PHP, Laravel and some soft topics.
Depending on your level, it might be quite basic, but the titles of the videos are simply superb, and each video deals with a concrete topic so it's easy to follow along.
Not Youtube, but /r/watchpeoplecode has some great videos, often from Twitch: https://www.reddit.com/r/WatchPeopleCode/
Next Day Video has some great talks: https://www.youtube.com/user/NextDayVideo/videos
Not coding, VPRO from the Netherlands (English language) has some great "hacker" interest documentaries, e.g. the future of renewable energy, growing vegetables under LEDs or high frequency traders: https://www.youtube.com/user/VPROinternational/videos
Hardware hacking (admittedly I haven't watched it much): https://www.youtube.com/channel/UCfo1-oOnGqp1UgygGqlZL4A/vid...
CGP Grey: https://www.youtube.com/user/CGPGrey/videos Great
For coding/concerntration music, this music has some really nice electronic music: https://www.youtube.com/channel/UCqaay_q0YERQBEg4o5EjvZw (warning the "cover" images are quite porn-y and NSFW, but the music is good)
EDIT: Mighty car mods is a hilarious pair of lads from Australia, they do funny and informative car mods to some sweet Japanese cars: https://www.youtube.com/user/mightycarmods/videos
Jeorg Sprave is a German guy who makes truly insane catapults, slingshots, bows, cannons, modified Nerf guns, etc and demonstrates their use: https://www.youtube.com/user/JoergSprave/videos
BTW, I learnt some Android programming with a 2012 playlist in youtube (Android bootcamp). I guess is dated now.
- C++ learning from scratch
- Architecture and Design?
my bias showing here.
Since it's just another HTTP header field, cURL can include it easily enough. Granted, you'll have to generate the encoded token externally but you would have had to do that with any other auth mechanism anyway.
The authentication server stores email/username, encrypted password, and roles. To access the web app, you first get a token from the authentication server by exchanging a client_id, secret, username, password and grant type. The token is used whenever you want to make a request to the web app. The authentication server has an endpoint that lets the web app check to see if the token is valid and what roles the client has.
The token is only valid for a short time and can be revoked. To know who is making the request, you associate the username/email from the authentication server with a user object on the web application so you can look up based on username/email.
It's not worth doing this from scratch as there are plenty of open source implementations out there already like Spring Security Oauth2 and other libraries for Django/python, but they all require some reading to get started.
I've used Spring Security Oauth2, but it's not very well documented. I've thought about open sourcing my work, but not sure yet.
For the rest: http://www.javabeat.net/rest-api-best-practices/
And documentation: https://github.com/Rebilly/ReDoc/blob/master/README.md
There many more comprehensive resources about sane API design (use HATEOAS, pagination, etc.) but you don't have to implement everything from v1
ps. SSL goes without saying even if it's a public API
I personally use an OAuth 2 library using the "Resource Owner Password Credentials Grant" which is where you POST a username and password, and you get back a session token. OAuth 2 has a few other types of grant flows but they don't make as much sense for REST only APIs.
The downside of this password grant flow is that anyone can create a client to work against your API, and potentially they can steal passwords in a man-in-the-middle fashion. One way to prevent this is to give your "trusted clients" a secret token, and then verify that token before issuing a session.
Another weakness is that if your SSL breaks, then you're essentially sending the passwords in clear text over the wire. Another commenter mentioned HMAC encryption of the password which might help. That this isn't recommended by oauth is concerning. It's not the best standard and password grant is its weakest form. [Edit: now that I think about it, HMAC requires having another shared secret between your API and your client. Storing secrets on the client is difficult, as discussed in the previous paragraph]
JWT seems new and not too widely used but worth looking into. It has its own downsides like some difficulty with revoking sessions from the server side, but there are workarounds for this.
I wish there was an industry standard answer that was secure and we could all be happy with but there doesn't seem to be much interest in the topic, going by how rarely it gets discussed. Best of luck!
So I would do a Login via Basic Auth or a Form post or a JSON post with username/password and then get some kind of token/sessionID/JWT which expires on the server side. The token might be encrypted on the server side with a secret only known to the server, never the client. Use the sessionStore to implement a proper session expiration scheme.
It is really simple to set up. In the frontend it's pretty straight forward to implement logout and other common behaviors even if the token is still valid because of the TTL.
They do have a 700 DAU limit, but when you need to, you can always implement your own JWT server
Every week I run a couple SQL queries against my database and copy the results to a spreadsheet for graphing. I feel that there should be an easier / more automatic way to do that.
Existing software that I have looked at sucks because of one of the following reasons:
- it is ridiculously expensive
- it is complex to set up and using it would be harder than my current setup
- it is cloud based and would require sending credentials to my database on a third party server
* Some write books, and self-advertise those to readers* Some sell equipment or crafts, etc.* Some link with IRL events
Though your conversion rates around these sorts of things tends to be lower than ad-clicks or views, the returned gains are much higher. However, bloggers tend to do these things as a network. (Split costs/profits, etc).
These are harder to block as it could just be an image or text link.
Many of them I don't finish. Some because starting the book meant just sort of browsing around and they stayed that way. Some that I started and read sequentially until I didn't and then maybe I browse in it or maybe I don't. Some because the book's content gets beyond my knowledge or interests or both.
Of the technical books I finish, it depends on the book. Depth of content, my level of relevant knowledge and the length of the book all play a role.
The pace at which I tend to read technical books when I am committed to reading them (but perhaps not finishing them) tends to be about twenty or so pages a night most nights while I am in that mode. That might mean ten pages a night for a deeply technical book (or thirty if it is so deep I am skimming it). It rarely involves doing exercises though sometimes it involves reading them.
For full clarity, I don't really worry about what I miss or not getting 'everything' out of everything I read. A lot of books are over my head. A lot extend beyond my interests. Also, I'm not in a hurry because the more other things I learn, the more I will tend to get out of any particular book.
The most unfortunate part of all this though is that all these different applications, GNU Social, Diaspora, Pump.io, etc all speak different protocols and aren't all really interoperable. This leads to a "fractured federation", which really isn't great. I've been participating in the W3C Social Working Group to try to standardize federation. Here's our spec, ActivityPub:
Some background: it's derivative of the "Pump API", which is sort of the successor of OStatus, in the sense that the primary author of StatusNet (now GNU Social) wrote the Pump API in response to some perceived shortcomings in OStatus. We've done a lot of analysis to make sure that the protocol can handle all the kinds of things that you expect from the "big player" social networks, but in a federated setting.
Interested? Now's a great time to research and give feedback. We're looking to move to Candidate Recommendation status shortly, which means we're looking for feedback and implementations.
PS: I'm also involved in MediaGoblin, and we definitely intend to implement there. If you're interested in a bit of news from that end, here's a moderately fresh blogpost, including info on how to give your feedback: http://mediagoblin.org/news/tpac-2016-and-review-activitypub...
We're planning on using it for MediaGoblin.
Signing up for an account on someone else's server seems to defeat the point, yet I haven't found anything which I can run persistently on my server, access in a simple way (e.g. via SSH, a shared secret, a named pipe, etc.), and doesn't make me uncomfortable allowing it online (i.e. dynamic Web stuff).
I used to use Laconica (AKA StatusNet AKA GNU Social) a lot via XMPP, but then identi.ca switched off their bridge, and then switched to pump.io which doesn't seem to work with anything other than a Web frontend.
How would Usenet compare? I never got into it, but hear it's filled with spam :(
Some relevant links from Google:
I'd look for some libraries which implement those specs. If you can find some in Python, then integration would mostly be a case of marshalling data between your representations and those standards. If there's no Python support, then you could either make a library yourself or use a supported language to make a standalone translation server to convert between the standard formats and some some simple raw serialisation of your data.
Edit: also, security/encryption might be a hurdle. I played with Salmon years ago (using it as a plugin for the ocPortal CMS) when it was first announced; the example code was trivial to get up and running, but it required some not-so-straightforward crypto/certificate stuff to properly implement the "magic signature" part. IIRC this couldn't be done up-front by a developer; it would require some work for each deployment.
Hope it helps. Essentially, you can basic functionality going by implementing webfinger and an atom feed. This old guide might be helpful: https://web.archive.org/web/20120306210855/http://ostatus.or...
As for decentralizing, my thought would be that it should have been a developed around that from the start. I'm not an expert in it but I think that projects would be built around the decentralized idea and not later modified to be decentralized.
It always helps to look at those who came before you.
Recently someone posted here on HN a compatible server (https://github.com/Gargron/mastodon), it isn't what you are searching for, but these 2 posts about the topic in a short period of time shows there is an certain interest.
Maybe its the push I need to start building that reusable app. Regarding your question, you should start by looking at https://www.w3.org/community/ostatus/ and the wiki.
You might be interested in general P2P decentralized tools like https://webtorrent.io/ and http://gun.js.org/ . There are tutorials that go with them, but nothing specific to GNU.
I think many of the loudest anti-PHP voices are ex-PHP developers. They/We naturally assume our own experience is normative, and since we didn't know X, Y, or Z back when we were coding in PHP, obviously neither does anybody else still coding in PHP.
Or, more graciously, back then PHP was the best language we had learned up to that point (better than BASIC or Perl, say), but now we use Ruby or Python or something else, so now we recognize the deficiencies in PHP. Clearly those other people, just a few steps behind us on the path, need to also learn about the deficiencies in PHP and how much better X is.
There are any number of nuanced ways for that to be expressed, but ultimately I think it's mostly tribalism, and obviously unhelpful. Sure, I used to write PHP. Built my first startup with it, sold it, and stuck with it for a few years more even after that. And sure, I don't write in PHP any more. These days it's Python or Java or Clojure for me. Because PHP sucks? No, because it doesn't suit what I'm doing these days as well. And not necessarily for reasons related to the quality of the language.
Many many yes voters (including myself) were very surprised by this result - the internet was on fire with grass roots activism of all kinds. Glasgow had weekly rallies with thousands (sometimes tens of thousands) attending. And yet we lost.
I can't help but wonder if we're witnessing the same phenomena - a silent majority of people who feel no need to contribute to the discourse but have different opinions and values on the subjects us in the comments section are discussing.
People are probably concerned about not being viewed as a good or knowledgeable developer if they admit to using PHP here, so it's probably not a fight that's worth having for most posters. People don't always give their genuine opinions when they think that their personal reputations or livelihoods are on the line.
This isn't just the case in technical or career matters, but especially when it comes to personal reputation. Just ask people how many sex partners they've had: the results will probably be skewed up or down in fairly predictable ways if people think there's a chance that they'll be judged somehow based on the answer.
Personally I think PHP is a useful (and extremely imperfect) tool that is very appropriate to solve a fairly wide range of problems. For certain problems, it's arguably the best tool. That's why it's going to be around for quite a while.
I challenge you to come up with a better car analogy.
In fact, I've been hearing for 10 years things like "what, OCaml? where do we hire someone to work on this?", "Haskell? nobody uses that", and more recently "we cannot use Rust as we don't have anyone that can possibly understand this". Saying "PHP is just another language/tool" is just throwing the towel without trying to understand anything.
What would you think if someone said "coal is just another fuel, stop trying to push electric, let me use coal and go on with life"? Well, a lot of people believe this, but let's pretent there's a consensus on this, shall we?
So, the question is: you CAN use PHP for doing web development. You can also use coal as a fuel. Not only that, but all libraries are written with this in mind, all code bases and fragments of code are focused on web development, etc. Coal is also combustible, a lot of manufactures dominate the technology, it's cheap, so.. hey, energy!
Even if the language is pure crap - as coal is as a fuel - people will only hit the crappy parts when their system is already implemented and being used by more people. "Hey, this language has a lot of issues" - "hey, this coal thing really polutes". Too late. You already have a full system implemented, you have experience with the language - or energy production technology... so you just change your workflow to accommodate this. Or you just never realize it - "whatever, no big deal" - and keep using it, as you see the advantages as more important.
There's tons of factors that contribute to the PHP popularity - the same thing with C, Perl, etc. Doesn't mean the language is good, and also doesn't mean everyone has to agree with you that "it's just another tool, let's go back to business".
So yeah, no.. I won't let you go on with PHP, sorry. I want better tools, better systems, and I want to spread knowledge. I guess we are going to agree to disagree on that.
I've been writing php professionally since 2000, and I like it well enough. I know it so much better than any other language that, 20 years into my career, I can't see how I'll ever learn another one well enough to compare them.
Mostly I file it under "hipsters gonna hipster" and then go back to doing something useful.
> A developer evangelist is first and foremost a translator. Someone who can explain technology to different audiences to get their support for a certain product or technology. It needs to be someone who is technical but also capable to find the story in a technical message A good developer evangelist can get techies excited about a product by pointing out the benefits for developers who use the product on an eye-to-eye level.
Any company can always use improvements to tools such as build tools like webpack, etc. The entire community benefits from those improvements and that may align with your interests.
I've worked in a few "tools team" job descriptions. I personally enjoyed it. By being internal tools, it allows you to iterate faster and do more interesting technical things than could be publicly released. If you are working for an open source company, these tools can be very useful for other companies and are of great value when released.
Look for job descriptions that have tools, devtools, etc in the title, or any senior test automation roles where this would likely be most of your job (making the shared parts that everyone else uses).
This sounds like support engineering might be a fit. It would allow you to teach people about code and help develop good documentation while still utilizing your programming skills.
1. Ayres, Ian (2007) Super Crunchers: Why Thinking by Numbers is the New Way to Be Smart
[Good introductory summary of the main concepts in statistics with many real-world examples]
2. Bernstein, Peter (1996) Against the Gods: Remarkable Story of Risk
[Intellectual history of statistics, accessible to beginning students.]
3. Healey, Joseph (2005) Statistics: A Tool for Social Research, 7E
[This is the text book that was used in the undergraduate statistics courses while I was working as a teaching assistant at UC Santa Cruz.]
4. Kahneman, Daniel (2011) Thinking, Fast and Slow
[Kahneman combines cognitive psychology with statistical concepts; highly recommended]
5. Silver, Nate (2012) Signal and the Noise: Why So Many Predictions Fail, but Some Don't
[Silver's book offers an excellent summary of major concepts in statistics and how they are applied to real-world problems]
6. Taleb, Nassim Nicholas (2005) Fooled by Randomness, 2E
_________ (2010) Black Swan: Impact of the Highly Improbable, 2E
[Important critique of statistics and how it is mis-used and mis-applied, particularly in econometrics]
Hope this helps. Shoot me an email if you have any questions. Good email@example.com
My advice: Figure out exactly what type of stats work your teams are doing. Make a list of those topics. Random example: are those KolmogorovSmirnov or MannWhitney tests? Then hire a tutor who knows that stuff - maybe a grad student somewhere, can be remote over skype even.
If you are not 100% sure what you are looking at at work and what to put on this list of topics...hire a tutor and show them stuff from work (if the work is proprietary/confidential, recreate it with dummy data or just give rough examples) and ask what topics would be needed to nail one's understanding of this work.
Statistics is a huge subject and if you buy a textbook you may spend a ton of time on stuff that's just not relevant when you could be going a bit deeper into a sub-topic that is very relevant to your work. Also a lot of what looks like statistics is actually found under applied math books/courses not statistics.
Lastly, in case this needs be said, after you get the basics on a stats topic, the most important question to ask a stats tutor is "where do people usually fuck up when doing this?"
Stats in practice is often more about not making errors than it is about accuracy. Find out where people often fuck it up, especially as a manager and 2x as they are not statisticians either it sounds like.
You might find one on Hourly Nerd > https://hourlynerd.com/your-matches/information-technology-a...
You can learn statistics, Bayesian reasoning, and a bunch of other stuff.
Sites like Coursera, edx, and Udacity all have courses for other presentations and applications of statistics at pretty much every degree of difficulty.
You shouldn't try to learn stat on par with your teams. Learn to ask the right questions.
If you prefer learning by doing then Elements of statistical learning would give you some modern skills plus add good questions (model testing and prediction are imho more important than base skills, and central to the work of Tibshirani et.al.) to your book.
I think the coaching approach in the other response thread is worthwile as well. If you weren't really into stats before and haven't read up when it wasn't part of your day job, the route of learning the skillset seems a detour. Possible if motivated ofc, but you need advice on managing stat heavy teams. That is a different, though related ballpark.
Coursera - Making sense of Datahttp://academictorrents.com/details/a0cbaf3e03e0893085b6fbdc...
MIT 6.041 Probabilistic Systems Analysis and Applied Probabilityhttps://www.youtube.com/playlist?list=PLUl4u3cNGP61MdtwGTqZA...
Statistics 110: Probability - Harvardhttps://www.youtube.com/playlist?list=PL2SOU6wwxB0uwwH80KTQ6...
Udacity also has few courses on Statistics.
Very well explained.
Empirical Research Methods:http://oli.cmu.edu/courses/future/empirical-research-methods...
Probability and Statistics: http://oli.cmu.edu/courses/free-open/statistics-course-detai...
Statistical Reasoning: http://oli.cmu.edu/courses/free-open/statistical-reasoning-c...
Some success stories:
Stans Neuro Headphones - 261 team members https://www.collaborizm.com/project/41G1VZWCx
3D RPG Game - 75 team members https://www.collaborizm.com/project/146
Room Cleaning Robot - 61 team members https://www.collaborizm.com/project/BJRTqrTs
Feel free to ask me any questions firstname.lastname@example.org
Perhaps we can come up with an idea worthy of working on. Click on my profile to find my email address.
Day to day experience may make it seem like if John or Jane got hit by a bus, nothing can happen.
In reality businesses adapt and there are probably other people that can step in. Once they must, they will.
The basic install is not terrible, but the very second you start needing thinks like Image Magick or any gem that might expect a Linux build environment or POSIX tools everything breaks into shambles.
If you want to run Rails on Windows, install Virtualbox on Windows, and then load a Linux VM into it.
Once lawyer has extracted what s/he can from the company and settlement doesn't prevent you from further pursuing, send complaints to department of labor and state attorney general. While DOL and AG office most probably will not do anything, The complaints will go on file at both offices. If the company is pulling similar stunts with other employees and DOL/AG office sees series of similar complaints, they may go after the company.
Privately bad-mouth the company to your network (not intentionally), word gets around and will warn others. Make sure you never work for another company connected to founders and senior executives of this company. Unethical management and investors at the top attract unethical people and breed unethical culture, they will never change their behavior.
Which leads me to another way this is rude: when I'm looking at an employment record and I see someone was somewhere 6 months or less, I don't think much of it. Clearly something didn't work out, even if it wasn't mutual. When I see someone having been there one year, I assume there's one of two options: either the employee just wanted to cliff their shares and then move on or the company let them vest and then fired them. Either one of these does not reflect well on the employee. To let you stay 51 weeks and fire you without options is a double whammy -- I'm going to have the same negative reaction and you have no upside. :/
When you look for your next job, you may want to emphasize that you were at UnicornCo for less than a year to avoid this bias or at least offset it some. That will obviously require you to have a reasonable explanation for why there wasn't a good fit, but you were going to need that anyway.
Forgot to add: contesting your unemployment at a reasonably sized company is really unheard of. Even when someone is fired, unless they are fired for cause (like, they stole stuff, harassed someone, etc) you're going to give them unemployment. If I'm interviewing you, this detail will make me want to dig further into your story. Take that as you will.
Were your options really "clawed back" (meaning recouping compensation that has already been given) or did they just not vest? Unless you mean founder equity or RSUs instead of options, I can't see how you would have had them after 51 weeks. Usually, people vest like 25% of their promised equity compensation after 1 year (the "cliff") and then a small percentage each additional month until they fully vest after 4 (or sometimes 5) years.
That said, you're not in a good place right now. Don't make any rash decisions in that state of mind. It's really not in your best interest to take this public.
At the end of the day, the company didn't do anything illegal. You most likely signed a standard 4 year/1 year cliff vesting schedule, and it did what it was designed to do. What they did was immoral and wrong, but not illegal. Sure, you can still sue (unlikely you'd win but they may settle to avoid a costly legal battle). And if you think a year of your options are going to be really valuable, it may be worth discussing with a lawyer if you're willing to foot the bill.
My best advice - focus on finding a new job right now. Land somewhere with a great track record for employee well-being so you don't run into this in the future. Get settled into that first. There's no benefit to making a big deal about this right this second. Bring yourself to a good place, then explore your options.
Regardless of whether or not they are in this contract this is something that you should always insist on when signing up with a start-up.
Have your lawyer that you pay check your paperwork before signing to make sure it is fair, don't be pressured and don't take 'this is standard stuff' as a reason to sign it without review.
Yes, it will cost you some money but it may save you much more.
I don't understand your use of 'clawed back.' Commonly stock options don't vest until the first year - were your options really clawed back or were they unvested at termination?
Why were you fired?
It's plausible you can make a statement anonymously, while your employer would know who it is, most hiring managers in the future wouldn't know it was you, or of the issue.
There's nothing wrong with going on unemployment when you're terminated. You directly or indirectly pay for that unemployment insurance.
Anyway, success is very often the best form of revenge on asshats. Good luck.
Remember that options are just the privilege to exchange real money that has value now for restricted private stock you can't easily sell and will very likely be worthless. Obviously you know more about the company having worked there - just be careful indignation and a sense of justice don't prevent you from making the optimal financial decision.
Get up... dust-yourself-off, and Move On!
The knee-jerk lawyer-up advice is asinine. The only guys who win that game are attorneys. Are you prepared to spend $5-10K+ in 'modest' legal fees so you can to go to war with a former employer? Do you really trust the courts will right the wrong you perceive?
It totally sucks being fired! The biggest bruise is to your ego and immediate cash-flow. Best to put that time/money/energy into connecting with a new, potentially more rewarding job.
This is how people will perceive this.
What does this even mean?? (non-American here).
I say it might be a blessing in disguise because... I worked for a software company that designed kiosks for solar panels and I worked on the design of the software, how it looked, special requests, etc. Anyways, in the interview, they said they were hiring me to help catch them up.. they had about 150 clients they had to cold call to get information from them, assets, etc. -- these clients had already paid their money, but hadn't received kiosks or software. Anyways, to make a long story short, about a year later, I had knocked them down to about 30 clients left.
Meanwhile, our competition was also growing, and these companies were developing in HTML5, whereas we were still building in flash-based software, with an in-house developer working on it upgrading us, but the actual update never seemed to come. Anyways, it seemed that because that company refused to update their software, we lost out to our competition, or we were starting to lose.
I was called into an office, where human resources told me they had to let me go. So they gave me the choice: If I didn't file for unemployment, they would give me a 3-week severance pay. Fortunately for me, I was working a second job, so I actually couldn't file for unemployment, so that helped me out and was like getting paid for doing nothing for 3 weeks. Awesome how some things worked out, though in the first week was rough, I was certainly devastated.. nothing can prepare you for the moment you get laid off... and you go over so many scenarios in your head, "What did I do wrong? What could I have done better? What email did I forget to send? What assignment did I miss? Was it that one time I was 10 minutes late coming back from lunch? Was it that one day that I was running late to work because I overslept?" You go over everything because honestly, you just don't really know.
I had later found out they were struggling badly, financially, and I was the most expendable, so they let me go. I was lucky because I also kept in touch with my former co-workers, who all were not being paid on time, who were still showing up to work, not knowing if they were going to get paid or not, and some of them had to take the company to smalls claims court to get what they were owed. The company soon went under and I think they managed to stay in business by keeping three employees, simply for maintenance issues for existing clients.
So lucky to be let go first.. as everyone else would soon have to struggle, whereas I had a nice free ride for 3 weeks of making money by doing nothing, but accepting the fact that they laid me off. Did I write about this company? Sure did but there was and is still no reason to mention their name or be mad at them. Tough world of competition out there and they lost. Do I expect anything from it? Absolutely not. Life goes on and you find other companies.
Startups are either successful.. or they aren't. And I am sure no startup wants to fire or lay off their employees, but sometimes, the startup is just failing, and they feel horrible themselves, wanting to have been successful, but realizing the reality of the situation.
Life goes on.. the second job I was working at the time.. became my primary job, and I still hold the position over 4 years later, as a very satisfied employee who loves his job. Look to it as a learning process, an experience, and keep moving on til you find the job or come up with your own that will set you up for however long you need.
It does seem like age-based discrimination would have a negative effect on psychological safety, as with any discrimination due to conscious or unconscious biases. Regarding perspective, an experienced individual could either bring in valuable insight from their experience or constantly veer towards the status quo, partly depending on how you want to look at it.
I think the answer is: it is complicated. You now have my ideas on why diversity is valuable. Does age fit that model? (Even if not, of course, age-based discrimination is not good.)
 https://news.mit.edu/2014/workplace-diversity-can-help-botto... http://www.nytimes.com/2016/02/28/magazine/what-google-learn... https://hbr.org/2013/12/how-diversity-can-drive-innovation https://www.fastcompany.com/1841060/redefining-diversity-new... - bonus
At the tech giant I work at, older technical folks seem to either climb the corporate ladder a few rungs or get ground into contracting peons. It's not pretty...
I find that a lot of 'new' ideas in computing are just the latest iteration. So there's certainly value in having folks around who have seen many iterations.
You could start identifying as a woman, it is just a verbal identification, no other changes are required. This way you would also become lesbian.
In some countries you can legally change your race, by religious conversion (Sikht in UK). Again, religion is just a verbal identification.
They support all the requested features.
Yes, hosting this on S3, with either cloudfront or cloudflare, does take some (one time) setup.
The payoff is that you don't have to rent and deal with a server and ongoing costs are very very low.
In version 3 (currently under development) you'll have a server.htmlpp to custom route your traffic and a file manager to treat your website content as static files.
You'll be able to import/export from any static website generators. Also edit online and use a command line to push/pull changes so you can edit from your computer.
Please contact me if it's interesting to you!
By the way checkout https://htmlpp.sunsed.com for information about our HTML++ language, you might find it interesting!
Also checkout my explanation of how v3 works: http://seyedi.org/my-cms-idea
ETA for v3 is January 2017.
Edit: Made the URLs clickable.
"learning/configuring stuff" isn't time lost. It's the price you pay to get a lot of functionality for a minimal financial cost. None of these items are complex, costly, time-consuming, or poorly documented. You're worried about at most a dozen hours of time once.
If you're not willing to learn to do things for yourself, you're going to be paying someone else to do it. At which point you're either blowing your budget or compromising on your needs.
The answer to your needs is acquiring the skills you need in order to do it all for under $10/mo.
Its a hobbyests dream!
I love openshift from what Ive been using it for so far.
For what it's worth, you can do redirects on GitHub Pages with HTML redirects:https://help.github.com/articles/redirects-on-github-pages/
I'm with you on avoiding AWS for static sites as there are much easier options like the above.
As we talk about SSL certificate for cheap price, you can choose https://www.ssl2buy.com where you will get free installation support.
For CDN, https://www.cloudflare.com/ is the best option. You can go with free plan as well paid plans to enable more features.
Just curious about the 301 requirement, what is your use case for this? Ie wondering if this is something we should consider supporting.
disclaimer: I work at Aerobatic
> 2. A CDN, for super fast loading.
> 6. oryginal content on your pages.
This is pretty straightforward as long as you're setting up any VPS or have access to the server itself. If you wanted something like SquareSpace or Github Pages, this is much more difficult.
I honestly have no idea what this means. A CDN can help if you have a large website over multiple data-centres, but really seems to be overshooting what you are trying to do here. Are you just thinking Cloudflare? What's the reason for this? You're hosting a static website, it's not like you've got to send massive amounts of data over the wire, so I can't see how having some large CDN backing you is going to provide much if anything at all. You should maybe specify what you really want here, since it sounds like you're worried your site won't be mirrored and may have downtime or might be slow in some countries, but instead you're phrasing it as if a CDN is a requirement. Why is a CDN a requirement?
> 3. Be able to create 301 redirects with something similar to an htaccess. So it seems GitHub page are not an option.
As long as you set up nginx / apache yourself, I don't see why this is hard to come by. Any VPS service would work for this.
> 4. Something simple to use, because I don't want to lose time learning/configuring stuff. So the Amazon combo S3+route53+cloudfront won't be possible for me.
Indeed, something "simple-to-use". Perhaps this goes back to "simple is not easy", and it sounds like you want easy based on everything so far.
> 5. And not expensive, less than $10 per month.
This seems to be the part that I don't quite get. How are you supposed to use a CDN for a service that has running costs of $10 / month? I mean, that could be the cost of one server. Take DigitalOcean for example (I don't work for them, but am a customer). You could pay $5 a month for a small VPS, with very little storage (20GiB). This would allow you to host your website, with your own domain, with LetsEncrypt certificates for TLS. You wouldn't have any CDN backing you, but you could set the whole thing up just as you would any other server, and if you know what you're trying to do you could even do the whole setup on a Docker container and just deploy the whole thing through their API.
That said, keep in mind if you want the total cost under $10 / month you're probably not gonna make it. Your domain could be anywhere between $25 - $40 a year (assuming it's cheap), which means that monthly you'll probably be paying about $8-$9 a month just for the VPS service and your domain. Any cost on top of this (excluding time, which will be the major investment at first) will pretty much put you over your limit. Also, if you end up deciding that the $5 DigitalOcean plan doesn't provide good enough specs / limits, then you'll be shifting to the $10 and $20 per month plans which will definitely put you over budget here. Another VPS provider, http://edis.at, that I've heard good things from provide some differing plans based one what you're looking for, but total overall cost is pretty similar.
There's lots of information about stuff like DigitalOcean online, but I fear that I don't understand your needs in depth enough to just recommend getting a VPS and going for it. It seems like the best path to take for a static site, but the remarks about CDNs and such seem to make me wary pushing that advice.