[edit: link to Archive Team project-specific page removed to reduce excessive load; replaced with Archive.is link below]
If you thought the judgment against Berkeley was justified-- that they couldn't give away these videos for free without e.g. subtitles -- are you equally against this effort? Because it accomplishes the exact same thing: the availability of some useful education videos that are unusable by (some) people with disabilities.
If you're not, how do you reconcile that? Your position seems to be something bizarre like:
A) "Yeah, Berkeley should release free, deaf-unusable videos, but gosh darnit, they better well do it through back channels, because we need to respect the disabled."
B) "It's great to release the videos, as long as someone other than Berkeley endorses and/or hosts them, because we need to respect the disabled."
I just don't see a way to reconcile them, and yet I get the impression that some posters here do hold both views (the judgment was justified, and this effort should not be halted/is good).
Edit: Here are the discussions I am referring to, courtesy of BenElgar:
- Sociology 150A (Robb Willer)https://www.youtube.com/watch?v=edfKMAePWfE
- Geography C110 (Richard Walker)https://www.youtube.com/watch?v=oYR5PdPZ_w0&list=PL4rxxS6x1H...
- Physics 10: Physics for Future Presidents (Richard Muller)https://www.youtube.com/watch?v=6ysbZ_j2xi0
There's also an audio course on Buddhist Psychology by Eleanor Rosch, if you're interested. Now seems to be available only on iTunes.
- CS161 Security (Wagner preferably)
- CS189 Machine Learning (Shewchuk)
- CS170 Efficient Algorithms and Intractable Problems
Not a comprehensive list, just my favorites.
They're very easy to use and well documented.
CS 70 should make the list but the lecture notes are enough.
Strongly prefer Kubi for OS or pretty much anything.
What possible motivation could have moved those employees to file on behalf of their university? Malicious intent (they didn't want the free material competing with their courses)? Lack of gratitude (the material is free, but that's not enough)? Zealotry (everything, even free content, must meet their ADA compliance standards)? Simple lack of thinking through potential consequences? Lack of Net citizenship/spirit? Anyone have any insight into the real story behind their protest? I don't want to excoriate them without knowing the whole story, it could have been just someone's doh! moment turned into a really bad outcome.
I know there are closed-captioning format standards. Perhaps someone can create a site that runs closed captioning underneath YouTube videos, with the closed captioning supplied by volunteers (kind of like how closed captioning was done by anime fans)? Hook it up to a GitHub backend so closed caption data can be refined by anyone, with appropriate sidebar discussions. Hook it up to Google Translate to generate Braille and foreign translations of the hand-curated closed captioning, and let users refine the auto-generated translations. Then prevail upon the DOJ and Gallaudet University to give this time to develop instead of hammering on UC Berkeley, and let Creative Commons-licensed closed captioning fill in the content everywhere for all access-challenged students, for all content? Google might be interested to use this as a corpus for Deepmind.
Gallaudet University could have pioneered a solution and become the world leader in automated accessible content generation working in partnership with Google Deepmind, for example. That would have brought in way, way more funding through licensing than this short-sighted approach they are taking now. If Gallaudet University established a CS focus upon this, it would draw in top global talent for a variety of specialties. HAL-like accurate automated lip-reading coming out of this, with even more accuracy when using mic arrays? Yes, please; you get something like that even 90% accurate and you just gave a mindgasm to every meeting-organizer in the world who wants meeting notes taken. And as much as you all hate meetings, if you had a near-irrefutable better-than-stenographer CYA from meeting notes just once, I guarantee you would love that mechanism, increased meetings frequency or no.
This is a darkening of the Net and education in general, and it should not stand. Unless the reporting on this development is simply not including their side of the story, that Gallaudet University is not front and center of this issue trying to get ahead of the outcome by seeking win-win solutions should be making them a pariah on the Net and in the education world. Gallaudet University pursuing a perfect-is-enemy-of-good tactic likely has not considered that they just pulled free education for hundreds of millions of young minds in the developing nations who cannot afford anything close to a world-class education, but have family and friends willing to translate for them. That's unnecessary.
Should contain the full backup.
If you want to get a job at an HFT e.g. Jump: as a student you're not expected to know much about finance or trading, the prerequisite knowledge is similar to getting hired at eg Google. I work at one of these firms, when we hire people we have them come in and code in an IDE of their choice on a problem of our choice for about 2 hours, and we watch them do it and discuss it after. We also do algorithm interviews, and try to find people who are demonstrably smart and also excited to work with us (note this is for dev roles. If you want to work on trading roles you need to have a strong intuitive grasp of probability, games and asymmetric payoff situations, these will come up in interviews).
If you want to get a job as a quant: other comments here have addressed this.
If you want to learn about algorithmic trading from a tech perspective: go read some exchange specs (BATS, CME, Eurex tech specs and market model). That's the nitty gritty and you'll learn more about trading from that than anything else you can do if you're not employed in trading.
If you want to learn about machine learning in the context of finance: get a job at one of the quant hedge funds like Two Sigma. You do not have access to the data you would need to learn on your own, and you cannot afford to get it yourself.
In general to learn about modern algorithmic trading you have to work in the industry, there is almost no public information of any value (maybe read the Sniper in Mahwah blog if you haven't, he's pretty smart).
If you want to get a job you do not need to learn about this, you just need to be worth teaching it to.
To better understand the difference between the different branches of QF world, visit this site:https://www.quantstart.com/articles/Quantitative-Finance-Rea...
It has a comprehensive list of references and articles describing in details what to expect in different jobs.
It won't harm if you occasionally visit https://forum.wilmott.com/.
And finally, for shit'n'giggles: http://www.zerohedge.com/ ;)
We provide a research platform, market simulation, and data for free. We also provide tutorials, community, and lectures to teach you how to get good at it. I recommend you take a look at the Getting Started Guide (https://www.quantopian.com/tutorials/getting-started) and then start going through the Lectures (https://www.quantopian.com/lectures). The lectures cover some important statistical topics, and they get into how to apply those concepts to algorithmic trading.
disclosure: I work for Quantopian.
I learned the hard way that it is quite difficult to break into finance as a non-student, so do everything you can now to land that first gig. Good luck!
Some starting resources:
-Ernie Chan's books and blog (https://epchan.blogspot.com/)
-QuantStart has great starter material and a new book, although I haven't read it (https://www.quantstart.com/)
-"Inside the Black Box" (Narang) I've seen referenced a good bit but felt as though it leaned toward order execution and rather boring
-"Dark Pools" (Scott Patterson) a great story about the rise of algorithmic trading
-"Flash Boys' (Michael Lewis) offers a nice follow up (HFT), but considered a bit sensationalist
EDIT: If you're planning on using Python (a solid bet)...
-Python for Data Analysis (Wes McKinney) - Great, quick book for Pandas by former AQR (and now Two Sigma?) guy.
-Yves Hilpisch books: "Python for Finance" is introductory while "Derivative Analytics in Python" is quite math heavy.
I've created a fund that tracks my strategy at motifinvesting.com and am posting the trades at instavest.com. Where else should I go? Are there any contests I can enter? (Quantopian requires too much turnover I only do 50 trades/yr)
Quantiacs is the best place to learn. They are the world's 1st and only crowdsourced hedge fund actively trading with institutional capital, you can contribute your algo to their marketplace and get matched with millions in investment allocations and you keep 10% of the profits and retain 100% of your IP, and they also run the world's largest quantitative finance competitions -- giving out $2.2M in allocations per Quarter.
Unlike Quantopian, Quantiacs focuses on managed futures as opposed to equities. This is important because managed futures are uncorrelated with the stock market and are the most liquid markets in the world -- it's where the professional quants play. So if you want to be successful with quantitative finance and algorithmic trading -- you should focus on managed futures more than equities. So even though there are more users on Quantopian, the best quants in the world are on Quantiacs.
Also on Quantiacs you can use either Python or Matlab so it's more flexible, and the learning curve is not as steep as with Quantopian.
I'd recommend that you take a look here for tutorials: https://quantiacs.com/GetStarted
And see what others have said about it here: https://www.quora.com/What-do-you-think-about-Quantiacs-com-...
I've been working on a linux distro for i.MX based e-paper readers (kindle, kobo, etc.) for a while and just had two other hackers join me on the project. Currently we are furthest along with the Kindle 4th generation non-touch with a slightly modified super minimal Debian booting and basic graphics support (Xorg works but no window manager and no screen auto-update yet. e-ink is weird). I believe we've managed to strip out all binary blobs so it's really all open source now. This system is still using an ancient kernel (a slight variation on the one used by the stock OS). We just got the latest stable kernel booting a few days ago but only barely (not even mmc support yet). There's just three of us for now, and we hang out in #fread.ink on freenode and our code is up on https://github.com/fread-ink
You should look at the repo https://github.com/fread-ink/fread-vagrant to get started.
http://essentialscrap.com/eink/ is probably one of the most helpful resources out there if you want to do this.
There's a pretty decent dev community that has Qt fully working too which could offer you a good starting point. There are already full UI replacements going on in the community, like KoboStartMenu and KoReader.
: https://www.bq.com/es/cervantes-3-bq: https://github.com/bq/cervantes
I'm planning on picking one up soon (or, hopefully, a Cervantes 4 if it comes out...). I'm (fortunately in a position where I can be) willing to pay the extra to support F/OSS out of the box :).
It's been advertised pretty heavily, and on the face of it looks like everything I want in an e-ink sketchbook/reader.
I have a suspicion that it will disappoint, however.
Simple Touch readers should be dirt-cheap.
But surely there must be breakout boards by now, right? Or a raspberry module that's larger than 3"? Can you effectively source raw screens through the usual hobby suppliers like digikey, mouser, jameco?
Essentially all I'm after is a Linux (not android) based 7-12" eink tablet with touch screen, a decent resolution / PPI for the size and at least say 2-4GB of ram at a minimum although if it was cheap enough I'd drop as far as 1GB if I really had to.
I have a Dasung E-Ink monitor and it's dreadful, lots of ghosting, very slow refresh, have to have some 'interesting' software running to make it work, hard to work with multi-desktops etc.... and very, VERY expensive: https://www.indiegogo.com/projects/paperlike-world-s-first-e... otherwise I'd attach that to a Pi or Cubox and live without the touch screen.
Edit: Googling this seems to be a good resource  and it looks like it is using an msp430 so should be hackable. But I don't actually know much about this stuff, so if someone does hack it I'd love to know how
My own is quite old and the screen is not top-notch, I don't know how advanced and expensive they come right now. But give it a look.
Just wrote a post about the approach that worked for me -- http://claudiu.dragulin.com/2017/03/14/how-to-align-your-dai...
Short version:- Make a list on a sheet of paper with clear, simple, manageable steps to your goal- Have it on your desk next to you at all times- Watch the magic happen
I also tried different tools and software-based approaches (reminders, checklists, etc) but I found that they were mostly distracting.
The simpler the solution, the better -- therefore, plain sheet of paper.
Key thing here was to always have it in front of me, next to any other todo list I may have for the day. As long as I did that, I never had to worry about updating my daily todos, or aligning them with my goal, or anything like that.
This doesn't mean the plan was unnecessary...rather the plan carves out the neural pathways in your mind. The feeling part is important too since if I am so rigid then I am going to be crushed by the randomness of life.
For this reason, I sorely miss the Timeful app (bought and shut down by Google) which nailed the process perfectly, integrating one-off todos, habits (e.g. 3 runs/week) and calendar management in a single system. AI-based suggestions for scheduling todos was the icing on the cake.
To this day, sadly I still haven't found a decent replacement.
Google Calendar took the automatic habits scheduling engine from it but is otherwise inadequate for todos, and well-established todo managers like Things / Wunderlist stubbornly refuse to allow something as simple as drag+dropping todos onto a calendar at a specific time of the day (which is the critical bit), and they don't support habits ("tick this box n times a week")
Plan (getplan.co) seemed promising but is too alpha for daily use and development seems to have stalled. SkedPal nails it in theory but is over-engineered and bloated, its UI asks too many questions and cognitive load is high, it needs "Apple-ification".
Any other recommendations very welcome ! Even happy to beta test or collaborate on something new (I know the world already has too many productivity apps, but it lost the "right" one with Timeful IMHO)
I also pray quite frequently (I'm Christian, but I believe some types of meditation are just as effective here). I look at my principles and ask myself whether I'm genuinely living up to them, and ask myself how I can improve.
I have tried using OmniFocus and MyLifeOrganised, but I found both tools got in the way of my thought process. Now I just use paper and coloured pens.
"Good intentions" :- Things I think I'm going to do. I investigate then put in other columns.
"Next Up" :- Need to have a go at next.
"Working On" :- Actively doing.
"Done/Dead" :- Things that I did as well as things I failed at or discarded.
"Follow Up" :- Something happened, so need to wait on something/someone to then allow me to continue.
"Asleep" :- Sometimes things are not 'Dead' they are just really not worth looking at for another year or so. I evaluate these projects once a year or and move them into Next Up if viable again.
It's my home page when I fire up my browser. ;)
The basic idea isn't too far off from the million other "habit" apps out there. I say I want to meditate X days a week, tell Beeminder whenever I meditate, Beeminder gives me a pretty (okay, decently attractive) graph of how I'm doing, and they tell me if I'm not meditating as much as I want to.
The key that makes Beeminder stick (heh) is that it makes use of commitment contracts. I don't just say I want to meditate X days a week, I promise Beeminder that if I don't meditate X days a week, I will pay them $5 (or $10, or $30). You can cancel or decrease your goal at any time, but only with a week of heads-up, so you can quit for a well thought out reason but not because you just don't feel like it today.
I've tried to start a lot of habits in my life, but I've historically been very bad at sticking with them for very long. It's so easy to give into the "I'll just do that tomorrow" syndrome.
As an example, here's my Beeminder graph for "tidying up": https://www.beeminder.com/jds02006/tidyup
I love having a clean desk, but historically I'd have a clean desk every 6 months, followed by a slow accretion of messy crap. Now, if I don't spend 5 minutes tidying up my work area every few days, I'll have to pay Beeminder $30. Result: my desk area is completely clear.
It sounds crazy (to my wife, at least), but it's ridiculously good at bringing your long-term goals (and the consequences for not achieving them) into the present.
Disclaimer: I have no association with Beeminder, but they have sent me stickers for making bug reports. :)
specifically answering your question - this framework makes you regularly review your task list and ensures that you have a quantifiable next action for every large scale (1-year project) that you can do to reach your final goal.
However, bear in mind that plans are rarely followed to execution perfectly. You may meet someone who wants you to stay, or you may get a really good offer. You might experience financial hardship and need to settle down for a while.
When I go on a hike, I spend a good hour or two studying maps (topographical, orthophoto, etc) before picking a trail. It means that I can decide on a whim to follow another trail halfway through if conditions call for it (mud, rain, wild animals, etc). Planning is about mapping out all possible outcomes, and not so much about following one plan to the letter.
Ok. That's a weird detail to bother hipsterbragging about.
Anyway, I have a post it on my monitor that says. "Just do the fucking thing and stop doing busywork". I have a second one that says "Successful people have better things to do than arguing on reddit/hn"
Tldr; constant visible progress, cut distractions
you pick a long term goal and associate a metric to it.
Example: weight from 180 to 170That's your lag measure.
Your lead measure are the activities you get done daily.
- Daily caloric intake
- sleep schedule
- exercise routine
- water intake
- intermittent fasting
Your lead measure influence your lag measure but as the name indicates, it takes time before you notice the effect.
Focus on your lead metrics and adjust when they are not working.
The best thing I ever did for my to-do habit was to get rid of the backlog. I don't backlog tasks now. I only track things I am working on now, or will be working on immediately after. The backlog caused an urgent-vs-important conflation that led to a lot of analysis paralysis.
If something isn't important enough to stay at the top of my mind, it's not that important.
Complice is aimed at exactly this problem. Integrates a bunch of other productivity hacks as well, I love it.
The founder was interviewed on indie hackers recently: https://www.indiehackers.com/businesses/complice
I've been ignoring it thinking it's corporate BS and doesn't really apply to personal life. But I tried it in last year (where I quit my day job to bootstrap my own startup) and felt having a systematic thinking is actually productive.
Any day in which I do not make progress towards one of my Big Goals is a failure. Any day in which I do make progress is a success.
Remember this when you decide what today's todos are. Remind yourself of this when you have to juggle priorities and ditch half of your list for today because something came up. And forgive yourself for the times you fall off the wagon; shit happens. But let that little bit of "I got fuck-all done today" guilt carry over to the next morning to spur you to the Big Important Projects.
This is how I kept myself working on long projects, first one that took a year, then one that took five years. Some parts were slower than others. Some were interrupted by life.
The fewer Big Things you have to juggle, the easier it is to keep returning to them.
Use whatever todo list makes you happy. Personally I use a lightweight version of the Pomodoro method; I write down 3-5 things to do with my day on a post-it, with 4-8 checkboxes total next to them, each representing a half an hour. I usually never check all of them because Things Come Up. This post-it stays on my desk, and gets the next day's stuck on top of it. Every now and then I look at old ones and toss them.
For me, this priority-setting process is really a separate domain than daily task tracking, project-level organization, and so on. As long as I do that daily review, it doesn't really matter where I keep my task breakdowns. I actually use several of those to keep tasks separated based on the project domain -- Visual Studio Online for development, Todoist for marketing, and so on.
Having a rough idea of where you want to go and setting yourself a number of small wins in the right direction could help you. Get into the habit of daily small wins that you know is moving you towards your true north.
As another point, I see systems and habits referenced below. Interesting because I'm midway through Benjamin Franklin's autobiography. Here is what he did:
He worked out a set of virtues that he thought he ought to have, such as temperance, industry, silence, etc.
Using that, he then used the calender method that's proposed a lot on each virtue to instill them as habits!
I'm inclined to say he was an early self-help author but also one that has something other than success in self-help as a justification for his methods.
So I have the following Cards in a Trello Board;
1. Inbox -> Things I can reasonably expect to complete in a day or less2. In Progress -> Limited to 5 per day3. Projects -> Working on an app? Put details in here4. Reminders/Waiting -> I've sent a form in, waiting a response before next action5. Some Day -> Things I would like to tackle some day (Good for reviewing long term goals)6. Complete / Split into smaller tasks
it doesn't work very well for goals that are hard to measure but it can be applied in a lot of situations. Good luck tackling all your goals :)
ps. In terms of timelining stuff I just make schedules in my notebook. Each line in my notebook might be a day or a week or a month depending. They usually dont last very long and I am always sketching new ones. I do tend to write and sketch a lot and draw the aforementioned timetables and also diagrams which really help me think about stuff. I try and keep that in chronological order in my notebook (rather than just be drawing on random scraps of paper), so only the last few pages are really relevant to me now but I can also go back and look at older long-term timelines.
So my 'what to do' and 'when to do' are seperate. Thats makes sense imo, as the way to do the best job would just be to work through the what to do in order and take as long as it takes. The 'when to do' is often an external artificial deadline or whatnot
We're building Jell (https://jell.com) to tackle this problem. We have 2 sets of core functionality: OKR tracking, and "checkins" which can act as a daily/weekly/monthly "standup".
You can add plans/tasks to your checkins (and mark them as complete), and link these items to your OKR's.
We've seen a lot of companies have success with our tool (many replacing daily standups with it). We'd love feedback.
NotePlan is a daily planner app based on markdown. You can
- fill a note with todos and other text for every day (just like moleskin).
- You have a calendar with an overview of all your notes.
- Store reference material, backlogs, checklists, etc in separate project notes.
- Link everything together with Markdown. Use markdown also to format your text and segment it through headers into different projects
- NotePlan pulls your data from Reminders and iCalendar events automatically into the calendar and every note.
- Everything is saved and backed-up in plain text files inside your iCloud Drive. Nothing hidden and nothing on our servers.
Learn more here: http://noteplan.co
And besides using this tool, I'm writing a lot of notes. I'm writing down everything coming to my mind. Then sorting it into project notes and finally scheduling it into days, if those are actionable. Most importantly I'm reviewing all notes each sunday, at least 2 hours. See my article here for more details: https://hackernoon.com/turn-your-todo-list-into-a-productivi...
Let me know, if you got questions, happy to answer :)
If I have a goal to do X within a month and it takes me two instead, I should look back and see where the discrepancy was. Did other things come up I didn't account for, or did the process take more manhours, or was more research/training required to have competency to complete the task?
I was introduced to the idea of a Painted Picture. It is a goal setting methodology that involves heavy visualization. This particular incarnation was developed by Cameron Harold, as part of his coaching activities.
It made a big impact on my life.
The gist is that you write down, in narrative form, what your day will look like exactly 3 years from now. You write in the first person form, diving into various areas of your life. It should involve as much detail as possible. Ideally, these should be very optimistic goals which you dream of, rather than safe ones you are very likely to hit. It's OK if all of them don't materialize.
On March 13, 2020, I will be sitting in my comfortable arm chair in my living room. A fire will be roaring in the fireplace, and I will be looking over my emails. The kids just left to school. My wife drove them in our BMW VJ850. She is currently at work at MegaCorp, giving a presentation to the board about the XYZ initiative, which has a huge chance of success and will give her a real chance at the CXO position.
You continue on for two pages or so, going into minute details. Talk about your kids, your home, your relationship with your friends, the kind of food you want to be eating, professional activities, health, hobbies, charitable activities, political activism, and whatever else you want to affect positively. To keep it interesting, you can talk about what just happened ("We recently returned from a two week cruise in the Bahamas") or what is coming up ("I will be spending a week with a new client doing KJI advising. This is the biggest deal I've landed thus far. They have agreed to my $2,000 per diem rate. I'm confident they will be happy with the value I provide for them.")
Dream big. Share it with your significant other, if they're in it. Encourage them to write one of their own.
How does this help with the day to day goal setting and decision making?
It's uncanny! The imagery is so vivid that it permeates my daily life. My wife and I talk about it regularly. Whenever daily decisions need to be made, the painted picture comes to mind and guides me towards my goals. When I need decide what to do today, this week, or this month, and choose between the infinite possible activities I could be doing, having this powerful visualization in the back of my mind aligns me with my goals.
Professionally, I use outlook's todos with three priority classes: some time (low, where long term goals go), soon (normal), and today (high). Each list is organized like a backlog with most important first. I also color-code them by type (coding, process improvement, personal, and delegated). I scan the list regularly, and promote, split, join, add, remove or move down items as needed.
It has other productivity tools as well (pomodoro timer; habit tracker; brainstorm tool) all dedicated to your top 1-year goal.
It's called Focal Point (https://focal.pt), check out a demo dashboard here: https://focal.pt/demo
Coincidentally, I just made my own habit tracker this week to help me in this direction too, http://everydaycheck.com in case you want to check it out...
- Little Finger
Deliberately add your to-dos. Before adding a to-do (to asana / on paper) ask this question: Does this to-do get you closer to what you want to accomplish? If no, do not add it. If yes, prioritize first (no two to-dos are equal, choose the ones with the most impact) and then bucket it according to Eisenhower Decision Matrix.
As your morning routine, review your matrix to stay on track.
Specifically, there's a daily, monthly, and yearly list, all on the same screen. So if your goal for example is to exercise, you'd be tracking things day by day, but get a monthly summary (e.g. I exercised 75% of the days I was supposed to this month).
I do have some goals in mind, but I find that tying them to time is the wrong way to go. i.e. I'd like to get back to a 2x bodyweight deadlift, but it's better to try and make 100% of my lifting sessions and complete the programs I am on than it is to worry about when exactly I will hit that goal.
So the actual todos are derived from a system that should eventually lead to that goal, rather than achieving the goals. I then evaluate my progress monthly and yearly. (did I do everything I was supposed to? Am I closer to the goal? If not, how should I change the approach?).
How to do that is different for everyone. What worked for me is the "Deep Work" method as described in this book: http://www.goodreads.com/book/show/25744928-deep-work
Looking back at what I've been doing this week, it's pretty clear what areas I've been neglecting.
Anything more than this would not get updated regularly. My time log also works like Jerry Seinfeld's Xs on the calendar; I'm motivated to put in a minimum of effort today to avoid breaking the chain.
Every year from Christmas I do a retrospective for all 52 weekends, my year goals, personal progress and professional progress. I try to find out where my money goes and my time as well. How Happy I was etc.
Make a year plan and print it and put it in your cube (in your home). Yes, please set up an office space in Home. It works.
Then make detailed plan for 52 weekends and weeks aligning to your yearly goals.
Now buy 1$ yearly calendar from dollarstore and fill it up. WHen I turn it each month I know what I should be doing this month. Also I align or change it with some buffer time.
Mostly I miss my deadlines, because my estimations are wrong or the new technology or programming language I am learning takes more time than I expected.
At the end I am happy that I am two steps ahead by planning compare to some one who has never planned.
Now if you ask about the results between a planner and non-planner, I don't know what to say.
I use Evernote to keep track of list, but that's not based on any tremendous amount of research. Someone else told me that's what they use, and it's easier for me to find things there than on paper.
Here's my approach: Define the goal, measure progress, complete todos.
Define the goal: I use Onenote. It's so freedom enabling (click anywhere, type) that it's perfect for jotting down all parts of your long term goals. At this stage a todo list is too rigid to record something this abstract. A mindmap is also good but the Ctrl + E search in Onenote is the best. You'll visit this once a week or so.
Measuring progress: Again Onenote, list the months and add new checkboxes (Ctrl + 1) under each month for each subgoal you want to get accomplished. You'll visit this a couple of times a week.
Completing todos: This is where your todo app comes into play. Map your subgoals to todos and record how much time you spend on them. At the end of each week all your completed todos should see you tick some of the checkboxes in Onenote. You'll visit this as often as you're working on the goal.
For me, this is a simple but visual method of progress spread across just two pieces of software.
May I opportunistically suggest https://lanes.io as that second piece of software. It's a todo app I've built to help support this approach - timer, charts etc.
A) the next step is more important than the final goal. Always work on having a next step not for immediate work, but for what you do after finishing something.
B) Coop with others who are important to achieve your goal, who share your goal, or who have your well being as one of their goals (i.e. life partner). Have regular meetings, e.g. once a month, with that topic. Meeting to eat something with the goal as headline helps to start talking about status updates.
C) Have multiple goals. Often we get stuck at one goal, but at the same time opportunity at another goal opens. It is inefficient, but that's life. Usually we don't have to work hard to figure out multiple goals. Health, family, language learning, holidays. There are already goals in your head you may not currently think about.
The rest basically happens on its own. E.g. if your "next step" is too complicated, you can't explain it to your wife in your monthly "goal X dinner". If you can't progress with "goal X" you will automatically switch to "goal Y" out of laziness and frustration.
Q: How do you visually plan out your year and keep track?A: I use the calendar app on my mobile phoneMy issue: logging stuff in a mobile device that is really small, doesn't allow you to see big picture and serve as a constant reminder
Q: How do you visually plan out your year and keep track?A: I use a calendar book that i purchasedMy issue: the book itself doesn't give a year-long summary, it is more of a monthly/daily note jotter.
My solution: look for something i can use to place in my room and serve as a reminder of my year-long goals. It should be something that i can use every year and something i should be able to modify/remove/add as days go by (goals change, people change).
Option #1 - a real electronic device that is large enough for me to plan out my year.Thoughts - this is not feasible. I remember back in the day when they first tried to market "Microsoft Surface". This is before they came out with the surface products, it was initially marketed as an electronic table board that was large enough and interactive enough for you to comb through many problems milennials face today (illustrating thoughts, long-term planning and design).
Option #2 - a hard surface non-electronic annual calendar that will immediately visualize my year and allow me to strategically segment my annual plans visually. So i found this product listed below, and decided that i would pin it in my room with half-inch steel top pins (these also exist) and use dry-erase markers.
This, for me, greatly helps aligning daily work with long term goals. I can still get sidetracked, but usually not too much. YMMV.
For those that do cherish long term plans: don't you get fed up with the perpetual feeling of "being not quite there yet"?
* have occasional roadmap meetings with decision-makers from the department/greater org
* * discuss growth target/expectations for 1-2 years out
* assuming the growth, identify what will prevent us from hitting it
* * systems+processes that can't scale
* * long-term migration plans
* use these as long-term goals
* every quarter, look at the goals and identify something we can achieve in 3 months to get closer
* * write it down with deliverables
* * work out who is available to do the work
* do sprints/agile/etc. until the end of quarter
* come up with the 1-2 year goals
* * remember them (or write them down)
* make Trello tickets in a Some Day list for things you can do right now that get you closer to your goals
* * rank them by importance/deadline (do this whenever you feel like it)
* take one from the top and put them into a Today list
* do them
* * if something stops you, put them in a Waiting list with a deadline & indication of who you're waiting on
* * * e.g. Open a Stock Trading Account [waiting for response] [due 3 weeks] "sent off the paperwork to trader & waiting for account details"
* move them to a Done in 2017-03 list when they're done
* * archive the list at the end of the period
They start from long term goals (they call it vision or something similar) and then break it down into smaller and smaller items which you schedule on a weekly and daily basis. This ensures that everything you do works towards a larger goal. There will be smaller interruptions and things but the overall direction is quite clear.
This has fallen by the wayside with our rather disruptive lives but there are still lessons which are useful. Larger targets (e.g year goals) can be broken down into manageable monthly targets. Then you can work towards these and make sure that you always progress towards your larger vision.
I have one list called Goals. These are my major long term goals that are very rarely termed complete and I use more the notes functionality to mention progress.
Then I have other lists for work, life, and personal projects.
It works pretty well though I imagine you could do the same thing with a notebook.
Also, I've written what I do to be more productive: http://lukaszkups.net/2017/01/29/In-search-of-the-Golden-Gra...
I like setting a schedule to review monthly/quarterly goals. Friday is always an alternate schedule for me, either hackday or story grooming/backlog work/paperwork etc. I review the goals, AND whether I have been even working on it, using https://takeaim.io data.
There's also a web version at heyhabit.com.
Basically I wanted an app that let me quickly add and organize items into different time periods.
It helps to not worry about racing to a practical product as fast as you can. Take your time and do it right. A practical product will come with time.
Current organization is 52 list mentioning every week and every week has 8 cards.
First 7 cards are individual days of the week, every day card includes a checklist in trello and the eight card is target for the week. Depending on the schedule 1 entry from the target card is made into a checklist item in any one of the day card.
It automates scheduling your to-do list in your Google Calendar so you're always working on your next top priority.
Don't finish it? It moves it forward in your calendar until you get it done so nothing falls through the cracks.
I will probably open source it in April.
Mostly because I'm the best/only person who can write software that is really for my life. It will of course integrate with many tools.
Also, I think it's hard to have goals. I prefer systems. Rather than have my primary driver be, "I want to work from someplace other than my home office 3 times each week" (I work from home), I say, "I work from places other than my office sometimes." and then work that into my schedule. That way I'm not checking a box so much as just "being" who I want to be. The externality of a goal is gone, and "Who I am" now incorporates "work from a place not in my home".
I dunno if any of this helps. It sometimes doesn't help me. It sometimes does, though.
So for this year, I started thinking about a tracking and recording method that is personalised to my needs, and that includes taking account of good and bad habits. I set up a personal website which is basically a learning log/folio, where the front page displays my five learning projects in arty thumbnails. Aesthetics is really important to me so a good design that I'm proud of is one way to keep me visiting the website.
Let's say that one project is French. Now it's really important to clarify your goals further. It's completely unrealistic for me to be fluent in French by the end of this year so I set a couple of goals, such as studying Candide to the point that I can understand and internalise the meaning without looking at the English parallel text. I emphasise that this goal is only for this year, which means I can still keep going with French next year - so no need to kick myself why I can't be as good as those polyglots.
OK, so far so good, I've got some fancy projects that show to the world that I'm a keen generalist, and goals to clarify their scope. But how do you keep track of them?
Because I've come to like writing, and it's one goal to keep practicing it, I decided to link every goal to my blog. Meaning, I need to write about my findings, achievements etc and tag the post to a goal.
I created a category hashtag and placed it under each goal. So say that one project is Blender 3D and one goal is to get used to the different modelling techniques - my hashtag would be something like #blender3dmodelling. This means that I must write something about blender modelling, which means I must study it and practice it. Otherwise if someone clicks on the hashtag, it will display no posts ... and that looks a bit bad. (That 'someone' is usually me haha.)
So far this little technique has kept me more focused on my resolutions aka learning projects. But it's not enough because there's still the danger of gradual neglect - and I've reflected enough to realise why this happens. What if I have absolutely no time to study Blender 3D because of other commitments? I can see myself paralysed by guilt by July. So, for balance, I decided that every month, I will write a post that reflects the previous month, and realistically set targets for the current month. The reflective part is particularly important as it not only keeps you true to your desire to learn, you're also being honest about yourself and your current situation.
So, that's the gist of it. It's not really scientific, the way I keep tracking and motivating myself with writing and showcasing, but it works for me. But this is an example; you may find it too much or too little or just completely unsuitable. That's OK. For yourself, you need your own method, and this means a great deal of introspection to understand your needs and habits. Good luck :)
Some of this may seem obvious, especially to people who are already super achievers, but I've been finding it a worthwhile way to think about my behavior.
Here are some links if this sparks any interest:
The research conclusion so far is a bit convoluted. I don't know if any popular writers have run with the idea yet.
To sum up:
1. Pick who you want to be in the future (ex: a good friend),
2. Expect to encounter difficulty on the path (ex: my friend needs help moving, it's gonna suck and I'm not gonna be able to work on my project today, but I know sustaining close friendships will be hard),
3. Take actions that will be congruent with your future identity (ex: I went out of my to help my friend move to his new apartment, I did it because every day I try to take advantage of my opportunities to be a better friend)
Set tasks and tie them to milestones that finally achieve goals.
Any todo list supporting hierarchies can allow you to achieve this. e.g: Asana.
Then you can add more complexity like setting dependencies among tasks, adding dates, priorities, etc.
Try filling in the blanks here: This product helps ___(type of person)_____ achieve ____(desired result)______ by ____(what the software does)_____.
Here's my first thought: make dashboards shareable via URL, and then create specialized dashboards for people to view, share and bookmark.
Imagine that you made one specifically for surfers in San Diego. Surfers would tell all their friends that apiblocks.com/sandiego-surfing is the page to use to find out wave height, temperature, water quality, UV levels, jellyfish levels and everything else they need to know in order to decide whether or not to go surfing. If you want to make some money, add some ads - you'll have a geographically condensed, topic focused audience (that's like gold). Repeat for a bunch of other geographic areas, maybe do similar things for other interests and you might be a winner. As a bonus, much of the work could be accomplished by automated means (passing in different zip codes and other inputs).
While I personally don't see much use in the particular endpoints you have integrated with, what I do see the need for on a daily basis is API endpoint monitoring.
Modern applications depend on a huge quantity of APIs and this becomes even more true as everything moves to micro services. One endpoint/service going down can break a lot of things as a chain reaction.
There are website monitoring services such as Pingdom but I haven't seen anything dedicated to APIs. You can create a poor man's API monitor with Pingdom (if REST) but once you get inside a corporate network or you need specific authentication, these services don't work anymore.
I can maybe see repurposing what you have built into an API monitoring service which using a dashboards and alerting quickly spots API failure...perhaps?
Can you think up any real-world use-cases? Definitely try to think outside of the HN crowd, dashboards and data points are very general. Who could this be useful for?
Ask around in different communities, find a few in this list for example; http://promotehour.com/free-list-of-places-to-promote-your-s...
Try to really ask the right questions, instead of asking "what do you think?", ask "would you use this?" and if not, "why?"
Perform market research, why would someone even want this?
I always thought of it as a 'Playlist' of information you want to receive. hi/low temperatures for day/forecast, currency/crypto prices, Metro/traffic delays, stock prices, tweets, specific news titles/links, amazon/ebay item price, deal websites item of the day(like woot), today/upcoming holidays, airline price from x to y, job postings, FDA/CPSC warnings/recalls, horoscopes, etc.
As for monetization, you can present adds related to what they're searching for. If their looking up weather, present local ads, stock prices can correspond to trading software/newsletters/funds, deal of the days and flights could be affiliate links, for holidays you can offer affiliates for presents, etc
If you perform well enough, you'll find these clients getting back to you with bigger jobs. Two years after doing exactly this for a period of only a month, I am still working for a large percentage of these clients, and their contacts to whom I was recommended.
Getting the engine started is the hard part here. As soon as that's done you simply have to focus on keeping the quality of what you're doing high.
And then there's also those business connections meetups. You could attend a few of those and see if you can find anyone who needs help.
The very first website I did was for an organization that helped Ethiopian children and I did it for free to gain experience. That experience would lead me into a career of web design. This website was done in WordPress.
The next project I charged a little bit more because I knew more. My boss called me into his office one day and told me he had a friend that needed a website because my boss had heard I was interested in expanding my practices of web design. He said, "Don't be afraid to charge."
So I figured I didn't know a crazy amount but whatever this guy requested of me, I could learn it. I ended up charging him $250 for like 10 pages. I remember spending more hours than I would've liked on it, so if we were to average out the price, I probably made next to nothing, but again: it was experience. The fact taht I could charge someone and someone paid me money to make them a website was the most amazing thing ever! This website was done in WordPress.
Then I had this crazy idea that I wanted a popular website for myself and I had always wanted to create a website, but never had any idea for what I wanted. I was fascinated with jobs, careers, and the workplace. So I created the website and kept working at it. Hours and hours spent on it and many hours are still spent on it. The website is http://www.confessionsoftheprofessions.com and this would teach me everything I needed to know about WordPress to be comfortable and confident enough to actually do business with any company I came across, no matter what.
I began to freelance by looking on Craigslist for people who needed websites. I figured I would go cheaper than the "average web developer". If you read, most are charging like $50 an hour or more. Me? I began charging $12 an hour at first, rising to $15, and now I'm between $20-$30 an hour 8 years later. Why is my pricing cheaper? Because I target individuals and small businesses who really can't afford to pay thousands of dollars for a website. In the beginning, my average price was around $350 - $500, but as my clients got more demanding, I had to raise the price of how much I charged for websites because they are requesting customization and it was constant back and forth in emails -- in other words: after all the emails were done, that was hours already gone there, and I hadn't even started on the website! It took me years to figure out a pricing system I was comfortable with: In the beginning, you lose more money. But as you begin to become comfortable, you learn to charge a certain amount that is fair for both you and your client. Trying to "become a millionaire" off your client is not possible. Most likely, they don't have millions of dollars, so drop the greed and just be fair. They are trying to make a living, you are helping them do that, and in return, they are helping you out.
For every client I meet, I always say these words: "When it comes to pricing, I will always be fair with you and I expect you to be fair with me." I've never had issues with clients paying ever. They don't question me. They don't ask for explanation. I do provide an invoice of work performed. But I don't question their professions and I don't expect them to question mine.
I also tend to be that web guy who picks up the pieces because other "web guys" will just disappear or they keep putting a bandaid on it rather than fixing the actual problem. I can only imagine they did this to keep getting paid. Me? I don't care.. I like to get paid by doing additional genuine work. Not charging the client to pretend I'm fixing their website just to get paid every month. I aim to alleviate my clients from having to spend so much money on a web guy.
Believe me, when they need it, they will turn to you for all the professional advice and help they need and they will pay for it. I have one client who I've built 5+ websites for -- I usually charge her about $850 - $1000 per website. But I mainly make my money through customization: "Hey I want this, I need it to do that." Working on those projects warrants more money because those requests are often beyond what WordPress plugins do. I also charge a minimum of one hour so I've always been the one to clean up and get rid of the problem.
So just a short brief summary of my client list:
1) found through Craigslist: some lady needed a web guy to run her multi-WordPress website -- she ran a franchise and had about 30 franchisees. So I got extra work on the side from those 30 clients.
2) found through Craigslist: I then met a guy whose web guy went off to college and he is an engineer who made a golf training aid that helps people. I've since redesigned his website, which I charged him about $1000 for and about $400 or $500 for yearly maintenance costs. (WordPress updates, adding pages, changing a few things here and there -- nothing major-no SEO, no marketing, no advertising, etc., but I do offer him advice on any of that stuff - I just won't do it for him, unless he needs it and it comes as a separate invoice)
3) found through word of mouth: I moved across the country and my fiancee was working a side job and a guy she worked with was the web developer for this woman who ran a "Paint and Wine" business (the most popular in my town), and he was just tired of keeping up with her website, as he was moving out of state, and needed to find her a web guy. That's where I come in -- he had actually designed the software, so in the beginning, I was charging her a fortune to try and fix his product that he designed in PHP. I knew PHP somewhat, but it kept breaking no matter what I did. I said to my new client: "Listen, I can keep charging you hundreds to thousands of dollars, or we can fix this one-time. I will charge you for my labor and the product, and we can be done with it. And you'll save a lot more money this way." I ended up charging her like $1500 to install an amazing calendar plugin, which did everything she needed, though she had a ton of requests, and with that, I made at least an additional thousand or two with her. If it was any company charging her, it would've been a lot more, but it helped me out, and I charged what I thought was fair. Nowadays, I just update her website every few months and send her an invoice with at least an hour minimum of work.
These are just a few of my clients.. I have a few more, but not worth mentioning in this story. As I have acquired clients, I also built myself a portfolio which I display on my "freelance business website" just to show off the work I've done and show potential clients that I am an actual web developer with a ton of websites under his belt. I also have everything on my LinkedIn page as well. It surely helps build trust and seeing that many websites, they are less likely to question your expertise.
I still get a few clients here and there through word of mouth mostly, but to be honest, I'm exhausted from managing clients, so I no longer seek them out or solicit on Craigslist anymore. You are not your own boss. They are your boss and when they email you, they expect an answer within a few hours. And they expect you to fix any problems they have immediately. Its wonderful and great for extra money in the beginning, but it gets old. So over the years, I've grown tired of maintaining a freelance client base and prefer to just focus on my primary job and my side projects.
Definitely not trying to deter you! It is a great start and I encourage you to do it: start small and learn as you go. As you get more experience, you can certainly warrant charging more for your services. Good luck!
i dont mind facebook, but felt it encouraged me to compare my life to others, and thats not healthy. not missing it
would love to ditch my phone too - but unfortunately need it. might get a cheap non-smart phone next
As an orthodox Jew I've been doing this my entire life. It feels great and it gives me lots of time to read and see friends and family. Try taking a 24-hour technology shabbat this weekend.
What I usually do is:
* Unsubscribe from all mailing lists and newsletters
* Unfollow everybody on Twitter/Facebook/etc
* Stop visiting HN
* Find something worthy to replace all that free time (book, meditation, vacation, hobby, etc)
After a while (12-18 months), these things start to creep in again. I don't have a long term solution.
I wish I were more disciplined and could keep meditating and having a hobby but computers and acquiring information is too tempting.
How many apps with notifications are installed on your phone?
How many hours do you sit behind a computer screen when you are not working?
This name is kind of ridiculous and cumbersome, and is in fact designed to be a name you recognize but don't remember.
Unprofessional? Maybe. But the point of what I do on this account is to participate in these communities. Not to make real contributions or serious projects. Not to make things I would show off in a portfolio or something, and not to collaborate with my real life friends.
I'm wary of using the same name for every community. I have different names for different communities, and this helps me keep my "automated-collection digital footprint" pretty low for each name.
Stereotyping a dev community to use pseudonyms is not a bad thing at all. Sure, it's not strictly in our career interests, but it's good for peace of mind. I have some embarrassing comments on here from a year or two ago. That's ok. I was in high school then. I don't have to worry about it being associated with my real name by an employer -- if the employer puts in the effort to find data that connects my two names, then they've put in far too much effort and it seems they're likely to hire me anyway.
There's something to be said for altruistic contributions that don't necessarily keep your own career interests in mind.
I too am interested in seeing what the non-dev audience has to say. I think they may have the same privacy concerns.
It's just wild wild west when I was still a full stack dev.
There was these clientside rendering framework emberjs, angular, knockoutjs, etc...
What the hell man, now the flavor is fluxjs and reactjs or whatever.
This is on top of html and css being more of an art then a science. Then came along the grid system to fix most of the warts but cross browser compatibility, etc...
I don't believe front end engineer is going away because there is just so much stuff in front end and back end to be for one person. You can be a fullstack but you can't be a master of all of it unless you got no life, no family, etc..
As a developer I just want to provide an data/api endpoint and say somehow "this is an universal UI app".
No, Basic HTML isnt enough, and wiring together data into presentable forms over and over again isnt particular fun or exciting after a while. Except you learn a new frontend framework for every project... :)
I know people said this was going to happen when Dreamweaver came out, but the languages were still clunky. CSS had barely come out and layouts were done by nesting tables within tables. The machine-created code was shit and browsers were wildly inconsistent. Now we have decent browser consistency between Firefox/Chrome/Safari, CSS grids are arriving, and React component web views are gaining more traction. So in 5-10 years, why can't we have an editor that does all this for you?
Yes, there will always be a need for custom interfaces. So a small amount of front-end folks will remain hand-crafting artisan components (and perhaps selling them on a Wordpress-like market place), while other people will either need to move into design/UX roles, or further down the stack.
Maybe full-stack engineers would have an easier time finding employment(as requiters keep on piling up those needs-to-know requirements), but some shops will always value someone who's shit-hot at one specific thing in particular, as opposed to merely competent at a lot.
Best Chrome 57 resource I found: https://forums.whirlpool.net.au/archive/2605051
https://wiki.mozilla.org/CA:WoSign_Issues enumerates the issues
The result is that today I have more free personal time and I am still able to create basically anything with PHP and React by todays standards, even though I realise I probably dont use the coolest technology on the market.
If you don't care about ML and AI then don't learn it.
If you don't care about education then don't get a masters.
If you don't care about a social life then don't talk to women.
If you're asking if you should do a startup, the fact that you asked means its no.
You need to figure out what you truly value and want, all the details are just noise.
You may start to notice that technologies don't change all that much. Sure you may hear about some new shiny thing - the question to ask yourself is will it help you produce something faster, with more quality or help in some way? Or is it just new and shiny?
A lot of your questions focus on what other people are doing... what is it that you want to do?
Specific answers:1. Learn ML and AI for what? what are you going to produce with it? How would that apply to your field? My guess is 95% of software engineers have no use for this since we are doing Information Systems, not science. Where is the line between logic tree and ML/AI?
2. Master's Degree. This is a good way to get into debt. Sure you can tick a box on the resume that states Masters Degree. Try to get your employer to pay. I doubt this will advance your career at all.
3. Get a life - yes - do more of that. There is way more to life than writing software. Find things that interest you outside of tech.
4. Startup: not a way to financial independence. Read stuff on this site - talk to people about what % of companies get to an IPO/buyout stage vs ones that fail (if that is your measure stick)
Keeping up with stuff I answered above - a lot of it is just noise. The way to become financially secure/independent is to reduce your spending and save money. Google Mr. Money Mustache for some good reads on that.
How do I keep up with so much stuff? I learn to set boundaries. If my company slack goes off at weird times and I dont want to deal with it, I turn notifications off.
I get up at 5AM to exercise. Then I do all the work that requires a fresh brain. Until 10AM tops. Then I read things I want to read. Then I babysit whoever needs babysitting at work. By 2PM I'm done with work. I could pretend to be busy until 7PM but I won't be productive anyway, so why pretend? If someone calls me out on it I show them the things I've built while they were putting in "longer hours".
The remaining hours, until 11pm can be spent whichever way I want.
Fitting your 1-4 into one schedule isnt difficult at all. You just have to learn to say no first.
Nobody in the world "needs" access to you 24/7. Not really. If you tell people that you are available during X hours, they will learn to communicate efficiently. It'll be painful at first. For both parties. But they will learn to deal with it after the third time they had to wait for a response for 20 hours because they tried to be inefficient again.
They will threaten you. Absolutely. The social norm is that you shit people tell you to do. Just don't do it. You'll be amazed.
The primary reason a startup consumes ALL your time is because the guy at the top, the CEO, is a 22 year old bumbling idiot who hides his inefficiency behind requiring his employees to be available to him at all times. Kick his butt a couple times and he will learn faster how to be a better boss.
2. Having a broad set of technology tools is a useful job skill. But often it doesn't require you to spend all your free time on it. Often just knowing it exists is good enough and that can be done in very little time (https://codewithoutrules.com/2016/04/15/40-hour-programmer/).
3. Working for a startup is not a good way to become wealthy. It's a gamble. If you want to be secure financially you should live below your means and save money.
In general it's perfectly possible to have a reasonable workweek, do fine as a programmer, and still have a life outside work (more at https://codewithoutrules.com/saneworkweek/).
When you have kids, you MAKE time for them. It's my favorite time.
In my case, the answer was, you don't. Unless you want to burn out fast.
1. https://dev.to/2. http://highscalability.com/3. https://www.oreilly.com/ideas
- http://www.dragonflydigest.com/ (Look for the weekly "Lazy Readings" post)
He writes great articles on security and is the man behind https://haveibeenpwned.com/
For a weekly HN digest, I read this: http://n-gate.com/hackernews/
It's part of a bigger mind map I am making (https://github.com/nikitavoloboev/knowledge-map)
 https://blog.codinghorror.com/ https://www.joelonsoftware.com/
Likewise for the Macalope's column.
Also, previously: https://news.ycombinator.com/item?id=11563516.
- Downclimb (my own), for weekly infosec news summaries: https://summitroute.com/blog/2017/03/12/downclimb/
- Bulletproof TLS, monthly, for crypto and TLS news: https://www.feistyduck.com/bulletproof-tls-newsletter/issue_...
- Mobile security news, monthly: http://www.mulliner.org/blog/blosxom.cgi/security/mobile_sec...
- This week in 4n6, weekly DFIR: https://thisweekin4n6.com/2017/03/12/week-10-2017/
- https://hashnode.com- http://coderwall.com- http://reddit.com/r/webdev/- https://hackernoon.com
1. Freecodecamp: https://medium.freecodecamp.com/2. Hackernoon: https://hackernoon.com/3. The morning paper: https://blog.acolyer.org/4. Codinghorror: https://blog.codinghorror.com/5. a16z: http://a16z.com/6. Ben Thompson :https://stratechery.com/
Fabulous adventures in coding (Eric Lippert)
Zed Shaw (still on my list even though he seems to have largely abandoned tech)
Schneier on security
The Light Cone (Brian Beckman)
The Shade Tree developer (Jeremy Miller)
Almost everyone seems to go for the 'no summaries, home page is the latest post in full, followed by the one before in full, ...' format.
Notable exceptions mentioned here: antirez (brief summaries) and danluu (list of titles). Both of these approaches are far better IMO.
Not daily, but plenty of links to follow-up on.
Alternatively, weekly summary of all things Linux & open source (RSS feed available); https://cronweekly.com
Programming Digest - https://programmingdigest.net/
C# Digest - https://csharpdigest.net/
Elixir Digest - https://elixirdigest.net/
React Digest - https://reactdigest.net/
I subscribe to RPi, Net Eng, CS, theoretical CS and Code Golf news letters. Any other suggestions?
edit: Added link
Specialized in compressive sensing, matrix factorization and machine learning.
Don't let the blue color put you of, the author reads and reviews an unbelievable amount of research every week and maintains a huge repository of papers, implementations, talks and video's.
The guy hacks and create stuff from time to time and it's very interesting to read. It's also more on the hardware side of things (I had to Google what's a shift register and how they work to understand one of the article)
Krebs on Securityhttps://krebsonsecurity.com
It's not daily though.
"How can I become a master procrastinator"
"Websites that can steal all my free time"
A great way to follow interesting subjects (eg. FPGA, Singel Board Computers... )
A blog on security, privacy and (foto) forensics.
It is a niche area but covers an intersection of law, technology, consumer protections and software development.
I'm the author of http://sametmax.com. And I like to brag, saying it's probably the highest quality blog on python. And I mean it. But it's in french and also talk about porn so you've been warned.
So, reading someone else's code can be like reading a model of something that has gone through dozens of iterations, where the bottleneck isn't really understanding "the code", but understanding the thing that is modelled, which the people writing the code are intimately familiar with, unlike you.
In my opinion, developing this modelling skill, in yourself, is much more important than watching the result of someone else exercising their modelling skill. A lot can be learned from observing someone else's solution, but this will always be secondary to learning how to craft your own.
 For example: try reading compiler code. People have been writing compilers for so long that reading and understanding this code isn't about understanding the actual code, but about understanding how a compiler is modelled (scanning, lexing, parsing).
I don't personally use the product, but I find the source well written and always share it as an example of nicely done C code.
Here is some nice Erlang code I like -- network packet parsing:
Notice how concise this is:
codec( <<4:4, HL:4, ToS:8, Len:16, Id:16, 0:1, DF:1, MF:1, %% RFC791 states it's a MUST Off:13, TTL:8, P:8, Sum:16, SA1:8, SA2:8, SA3:8, SA4:8, DA1:8, DA2:8, DA3:8, DA4:8, Rest/binary>> ) when HL >= 5 -> ...
Another thing here is that it is also big endian by default so there is not need for htons(), htonl() and such functions sprinkled throughout the code.
> Seibel: Im still curious about this split between what people say and what they actually do. Everyone says, People should read code but few people seem to actually do it. Id be surprised if I interviewed a novelist and asked them what the last novel they had read was, and they said, Oh, I havent really read a novel since I was in grad school. Writers actually read other writers but it doesnt seem that programmers really do, even though we say we should.
> Abelson: Yeah. Youre right. But remember, a lot of times you crud up a program to make it finally work and do all of the things that you need it to do, so theres a lot of extraneous stuff around there that isnt the core idea.
> Seibel: So basically youre saying that in the end, most code isnt worth reading?
> Abelson: Or its built from an initial plan or some kind of pseudocode. A lot of the code in books, they have some very cleaned-up version that doesnt do all the stuff it needs to make it work.
1. Micro code quality. Looking at a single file, someone makes statements about code style - spacing, variable naming, etc. - things you would find in a style guide like PEP8.
2. Code Design. Testable code, the absence of edge cases where unnecessary (for example, turning the root of a tree into an edge case) and broader design questions; and things like correct choice of algorithm.
Code quality kind of encompasses both, but its obvious how you can be bad in one category and still be really good in the other. Really good code is good in both, but if I had to pick, I'd like to be good in category 2 first at the expense of 1. Assuming 2., 1. can be improved easily.
I'd like to say something about concise code as well. Concise code, or code that does a lot in very little lines can be treacherous. This can be fun when your team is all very senior C programmers who actually understand all this code. Then, brevity is good, but when you work in open source, or write software that has to be read by people who are inferior to you, being concise may not be the way to go.
This is almost similar to premature optimization, but not really. People who write really good C code optimize - but not prematurely. They just know that what they're doing is efficient.
both in python, but beautiful code, well structured and you would not need any docs, just read the code
What I've often found is that Peter is just great at isolating the minimum required model/data structure. More often than not, when I notice his solution has half the code of mine, it's because I used the wrong model.
-God objects (they do everything!) and their opposites, freeloaders
-No unit tests
-Not-invented-here syndrome, otherwise known as "let's write our own array class!"
-No separation of concerns (everything mashed together)
-Not concerned with issues such as performance, maintenability and security
After you look at too much bad code (which, by the way, will include your own), you acquire a very instinctual understanding of good practices.
I particularly liked Brian Kernighan's description and implementation of a regex matcher, and Travis Oliphant's discourse about multidimensional iterators in NumPy.
Worth a read.
Additionally, I've on occasion consulted the Linux kernel and PostgreSQL repos. Would recommend, although I'm definitely either lying or very ignorant if I said I was familiar with them.
It's in Python and a single file but it comes with a wonderful description and shows how a complicated task can be broken down into a few small and powerful functions.
During the prototype phase, anything goes, speed is paramount, you just have to make it sort of work. Don't get hung up practicing pretty looking code during this phase.
You should always practice, but don't get hung up.
Prototype given the green light? Ready to dive into the build phase?
I'll say this, google for "coding style guide"
Personally, I like writing code and borrowing ideas from other, better engineers. I also like my code to be clean and without cruft: https://github.com/keithb-/Valley
But I don't even know if I could "read" my code. It's a web app; there isn't a main(), there isn't a loop. In order for someone to read it, they would need to mentally "send a request" which means they need to somehow have the concepts or the context in their mind when they sit down with the source code. I just don't know how that is supposed to help an engineer, regardless of age or experience.
A tiny C-subset JIT:
It might even be controversial to suggest these are examples of "good code" today, because the majority of code I've seen lately seems to be overly verbose and complex. In contrast, these are extremely simple and concise for the amount of functionality they contain. I think this style has unfortunately disappeared over the decades of promoting lowest-common-denominator so-stupid-even-an-illiterate-could-read-it coding styles and enterprise OOP design-pattern bloat-ism, but when I think of "good code", I don't think of Enterprise Java; I think of code which, upon being told what it does, makes you think "wow, I never thought it would be so simple."
 - https://github.com/tomchristie/django-rest-framework/
If we're talking a small application, such as a new startup, writing efficient and optimized code is hardly a concern. In this case, good code means flexible, easy-to-change code. The code must make it easy to modify existing features and add new ones.
Compare that to, say, Google's search. The feature isn't evolving much anymore, in terms of functionality, but it needs to be as efficient and optimized as possible, considering the bulk of data it needs to read through, and the immense traffic it gets every second. Sure, you still want flexible code, but speed is critical.
If we're talking an open-source project, the most important part could very well be documentation and ease-of-read. when you have dozens to hundreds of people writing new features, making optimizations, and solving bugs (in their free time and without compensation!), quality of communication takes on a new significance.
These are, of course, simplifications, and the accuracy can be debated (as these situations always have an incredible variety of factors), but the point is that "good code" is not something that can be defined in a vacuum: it can only be defined in terms of the situation at hand.
The obvious caveat here is that I have no idea what makes a good C codebase. What I liked in both was I was able to:
compile and run them easily
make tiny changes and observe them easily
read and understand a reasonable portion of them
enjoy the odd comment here and there
For example, you can see https://github.com/xyncro/freya-optics/blob/master/src/Freya... and can immediately see the clarity and the consistency of the writer.
Not only does it contain great code snippets but it also covers repeatable techniques that will ease your life as a ROR programmer immensely.
For things to read, these books are a little old now but I liked them . https://www.manning.com/books/the-well-grounded-rubyist-seco...
Therefore, for starters,
For scripting language such as Ruby, check out Satish Talim's Ruby tutorials (URL: http://rubylearning.com/satishtalim/tutorial.html)
For compiled language such as Java, check out a recent version of 'Big Java' from your local library.
Have a look at underscore js source:
I really loved it! Especially those _ functions are small, concise and easy to understand as well. Very good codebase. (very good example of functional programming concepts)
- Ruby Tapas: https://www.rubytapas.com/- Destroy all Software: https://www.destroyallsoftware.com/screencasts/catalog - looks like it is a bit more expensive than it used to be, but there is a lot of good stuff in those first 5 seasons.
It's been a good to refresh my memory about concurrency in Ruby, and Michael Grosser is probably the most responsive maintainer I've ever worked with. Really good reviews and suggestions on my PRs.
Nothing groundbreaking, just basic OOP code, but it was unique in that I started reading the source code and understood it quickly.
Since you mentioned Ruby, start by reading Rails itself. For all the hate people have for it, I believe it really is a solid exemplar of above-average code. Reading through the ActiveRecord source just after Rails 3, and seeing the way it was semantically organized by feature via included modules, was an inspiring moment for me as a coder. It was probably the first time I'd seen code that was simultaneously practical, modular, and readable.
You should never trust people's statements about what techniques are good and bad in a language. It's called "code smell" because you can judge it for yourself without having others dictate a judgment for you. Just like you can decide for yourself whether something smells bad or good.
Reference http://www.dpdk.org and https://github.com/freebsd/pkg
Also, it is fascinating to consider how Go routines were implemented as part of Clojure core. Huey Petersen wrote a fantastic analysis of how state machines were used to implement Communicating Sequential Processes:
You can read along while looking at the source code here:
This is a great implementation of Communicating Sequential Processes, first described by Tony Hoare in 1977:
The same source can produce compilable code, or formatted comments.
A single file running both in python 2.7 and 3.
I assume that as a developer you are interested in solving (business?) problems through the act of writing software?
It isn't much different than being a painter I guess. To be able to be a good painter (or to be considered a good painter) you first need to have a good grasp on how to use the brush and how to handle paint (e.g. oil paint), i.e. you need to learn the technique. The more versed you become with the technique the better you will become at painting, or, over time you will become better at painting what you intent to paint, to paint what's in your minds-eye because you don't have to think about the brush and paint anymore.
When it comes to software you first need to have a good grasp on programming. This means you will need to spend time practising the act of programming. Using two languages that are very different from each other might be good. E.g. learn an imperative and functional language. In your case this might e.g. Ruby and Lisp. Your programs will need to interact with other systems so you probably need to learn about operating systems, databases, queues, networking, etc. You probably don't have to be an expert in everything but being a good all-rounder will certainly be beneficial.
Over time you will see that it becomes easier to think in solutions of the bat rather than focusing on how you're going to solve a problem. This is basically what is being referred to as experience.
So, to be a good developer you need to put in the effort and you need to put in the time. There usually aren't any short cuts. I've been doing this professionally for over 20 years and I'm still learning every day.
Thus the demand for the certification needs to come from the selfish needs of the certified profession.
First requirement is that there is an oversupply of qualified candidates. As the demands for software engineers shows no signs of abating I would claim attaining this first requirement would be quite hard. On the other hand, if supply of eligible candidates exceeded demand we would have a certification program done almost by itself - unless the big tech incumbents fought terribly against it, of course.
The problem is that although people moan about rubbishy software it very rarely physically hurts anybody and can be fixed in future releases. This means people are unwilling to pay the extra cost of software being more mature and 'engineered' on delivery. There's a lot of software that would be not be economically viable if it was to be held to a higher standard. If a bridge failing could be guaranteed not to hurt nobody and could be put right in a day or so but be like 1/10th of the cost structural engineers would be held to a lesser standard to.
That said, the financial cost of poor security that comes from a lower accepted quality may change what is acceptable over time for internet facing software. Even that is seemingly a long way off, look at the actual consequences for recent privacy and security breaches.
1- Let private and public schools be. They can issue their engineering diploma as they like (to a certain extent).
2- Have a national committee that evaluates graduates and gives "national diploma of engineering" based on a number of criteria.
3- Watch the committee slowly become irrelevant as the private sector companies don't care about the national diploma and just wants qualified people.
Edit: I would be curious to see, if more people are willing to indicate their years of field experience in this particular thread. I'm crowding 23.
The quality of software for lolzcat apps could remain shitty, but the quality of firmware for FCC approval would go way up.
In order for quality to increase for infrastructure software, engineers need to risk going to prison. It worked for civil, chemical, mechanical, etc. engineers. A lot of people died on shitty bridges before they started locking shitty engineers up. Software engineering will be no different.
No one bothers or cares much. Just call yourself an "engineer" if you want to.
As others have said, there are already engineering societies and you can become a professional/certified engineer but there is not really much demand at the moment. I'd really prefer trying to set up a parallel system that achieves other goals (improving the overall ability of programmers).
1. what makes a certified software engineer? - eg. will embedded, back-end guys, front-end guys, SREs, have similar certification processes, or will they differ, and if they differ, what happens when someone, wants to move?
2. who does the certification, the community or some bureaucratic board?
3. what guarantees that the certification process keeps pace with the ever changing landscape?
4. what guarantees that those with the authority to certify don't use it selfishly?
In many ways the "certification" for software engineers is a misnomer. For me, github is a certification of sorts - a (biased) view: good engineers code for passion not money. I'm sure there's lots of good engineers that don't have a github, but I prefer those that do.
2) I'd propose a tiered system of software development licenses, involving passing tests such as "sort this linked list". Preferably do them on a whiteboard, just like in the real world.
3) I'd forbid access to a compiler to anyone without their software development licenses.
Or maybe I'd just go with an amorphous mess of university degrees, short courses and on-the-job experience.
Frankly only a guild cares whether you're a master craftsman. I see greater value to customers in the latter two, especially if S/W products were held to a standard of 'quality', esp efficacy and reliability. Then the S/W dev process could adopt a quality assurance process like that of housing construction, in which a building code exists and defines metrics of product performance that must be met by the builder through iterative inspections and a formal compliance process.
Should such a process exist for all software? No. But I believe it should for some software products, like those in automobiles, medical devices, and essential infrastructure, etc. Do such formal dev processes benefit from their practitioners having some sort of formal certification themselves? Probably not. It's the process and product that's needs certification, not the craftsman.
But on the other topic. The PE, which is the engineering certification in the US has a software specialization already. And I don't plan to get it. Even though I meet one of the most difficult qualifications which is having a degree from a school where Computer Science is accredited as an engineering program. Same reason my wife who is a Process Engineer (an electrical and/or mechanical engineer that engineers processes and machines for mass production) doesn't plan on getting her's despite having a Master's degree in biomedical engineering. No employer is looking for it and it is absurdly expensive in both time and money.
I think this XKCD applies:https://imgs.xkcd.com/comics/standards.png
In software development, these and other benefits are not as critical or very hard to achieve even with strong enforcement.
Unbounded complexity is a distinct trait of software. The most important, most regulated and most prestigious software engineering tasks are hands down mostly about doing relatively simple things but controlling complexity. To a lesser degree, when writing code every programmer is actually working to control complexity.
Once things get complex then nobody, not even the brightest brain, can get anything done anymore. So the first priority is to actually avoid too much complexity and to reduce it further will cost time and money.
This means we can do simple things well if we want to. We do this for narrowly scoped projects such as aviation-grade software, rocketry and medical software et cetera. It costs, and we can do it, but that's only because we already slashed out most complexity out of the window before we even started. Instead of general-purpose software we're writing very specific-purpose software.
Using the same principle but working on top of abstractions we can do complex things well in software, too. But those always come with a caveat about when and where the abstraction might fail. Most software is like this but that is also the sort of software which is no longer bridge-building grade. We don't build bridges whose design is theoretically sound given a few hasty assumptions, but with the possibility that when those assumptions might fail the bridge would come down. Certified software engineering can't fix that because they would have to start from the ground up to cover all their bases and then they couldn't get very high from there.
Certification is no silver bullet. Complexity is already managed where absolutely necessary and where there is the money to back it up. Requiring a certified engineer with legal responsibility in the general case would just make most software development stop entirely because anyone with the slightest understanding of programming would never sign off the software we currently want to run, and writing properly engineered software to handle what we currently want to run would be just prohibitively expensive.
... for an explanation of why.
What state do you live in? Do you do business through an entity, e.g. an LLC? If so, where is it registered?
PayPal is, varyingly, registered as some form of a money transmitter in many states . While your federal protections are probably limited to antifraud, protections you're probably outside of (PayPal has good lawyers--you agreed to surrender lots of privileges when you opened an account), there may be state regulations you can use to, if not force action, encourage it.
Going forward, I tend to consider any business using PayPal for mission critical processes as being negligent with important risks. If you can't avoid using PayPal for certain lines of business, set up a nightly sweep from PayPal to a proper bank account.
Disclaimer: I am not a lawyer. Only a lawyer can give you good legal advice. Don't take legal advice from Internet comments.
Which security reasons I have absolutely no idea. There's no contact info on the email, just says it's a do not reply address.
If after one or two calls you don't get what you want, it is not worth retrying. I gave up after being placed in queue for an hour with Comcast. After finally getting ready to speak to a rep, I was informed by an automated message that they were closed for the day and to call back tomorrow.
Here is what I find works:1) Least likely - Traditional customer support channel. Try once or twice at most.2) More likely - Contact publicly on social media like Twitter (Comcast is actual great about this).3) Most likely - Getting upvoted and written about here and elsewhere.
I would wait to engage with a lawyer as there is a good chance that someone from Paypal will popup in this thread. It is probably already surfacing in some internal emails at Paypal now. Good luck.
They all processed quite a bit of money via PayPal and they all had issues with customer's requesting refunds which they disputed or didn't issue in a timely manner, and they all sold something which had the potential to be a bit shady. One of them sold aircraft parts to Iran, which may have had some legal restrictions that applied. Another sold guns.
Since I sell access to web based software I don't have to ship anything and the product is "delivered" instantly. I also process refunds immediately and without any question.
PayPal most certainly doesn't like getting caught up in refund issues. In my case most of the customers who've requested a refund contacted me first and I issued it promptly with a "Thanks for trying my software" note attached.
The few that have contacted PayPal first resulted in PayPal sending me a notice about the request for a refund and, again, I issued it immediately, but their notice makes it clear that is what they expect and if I recall correctly they put a time limit on that.
Take from this what you want but what I've taken from it is when a customer requests a refund issue the refund as quickly as possible and try hard to make that as easy as possible for your customers and to minimize the potential for them asking for one.
I would switch all of my business billing to stripe in a second if they had the ability to pay out to accounts in different currencies like I can do with PayPal.
Despite the fact that I run an Australian business I usually bill in USD but because I travel so much sometimes I'd like to have it in EUR or GBP etc for practical purposes. However with Stripe I am forced to convert it into AUD before I can do anything at all with it meaning I usually have to eat currency conversion fees twice before I can use it in a practical sense. Hence PayPal sadly....
That's a very serious fraud problem.
I've run an ecommerce store -- the chargeback rate was 0.1% (seriously, I calculated this from actual #s).
Nothing in this story (except maybe the customer service issues) would be out of the ordinary for any merchant account.
Edit: fixed chargeback rate
EDIT: Oh I see, the original post is buried down in the thread, because it has been posted as a comment. Perhaps the mods could fix this?
Towards the end of January I myself realized I tired of the disputes (seemed to be a quality issue with the product which got hundreds of 5 star reviews on my site but still disputes were coming in at around 2%) so I slowly stopped the business meaning I stopped advertising and the only sales coming in were trickling in organically. My volume went down from $200k a month to about $10k a month.
On Wednesday I log in to my Paypal account and it says it's limited they need more information.
They asked for Photo ID, bank statement, proof of address, supplier invoice, supplier contact info and proof of delivery for the last 5 transactions.
I provided everything but the proof of delivery for the last 5 transactions. From the resolution center whenever I clicked proof of delivery it brought me to a page with no transactions so of course I could not provide proof of delivery for transactions that don't exist.
I contacted Paypal letting them know I submitted everything but proof of delivery since there's a bug in their system, they said no worries i'll get an email requesting the transactions they need tracking for and I could just reply back.
I never got that email, but I did wake up Thursday morning with an Appeal Denied automated email saying my account is closed and the money will be frozen for 180 days. That's $20k CAD in my reserve + $15k USD in my available balance. Keep in mind in the past 30 days I processed less than $10k usd on Paypal in total.
I reached out to a supervisor at Paypal and told him what his happening simply doesn't make sense, i provided everything they needed except for what their system was unable to request/receive and that if they had any issue with what I provided they should tell me what it is and help me resolve instead of giving me the hammer for no reason. He said he couldn't help me but opened a ticket for both his supervisor and a supervisor from the limitation team to call me within 24 hours.
The limitation department supervisor never called me back but the business support manager called me back a few hours later. He called me from an unknown number in the evening, told me there's been a mistake, they added a second set of eyes to my account and they agree with me the limitation was unnecessary and wrongfully made. He said he just has a few questions and I will either get a restored access email in a couple hours or a call asking for more information in order to get it settled but he said there's a small chance of that happening, realistically the account will just be restored within a couple hours.
I never got an email or call again, so I called the following day. When I called the rep basically told me there's no evidence of a call and there are no notes on my account from that person/call and nothing was moved forward for a review.
I told him that is nonsense and to look harder. He eventually tells me there's evidence of a call but no notes, they tried to reach out to that supervisor and he wasn't available so there's nothing they could do for me, the decision is final.
I'm being treated like a fraud and a criminal when I'm a legitimate entrepreneur who's processed 10's of thousands of transactions successfully. I also paid them thousands of dollars in fees, never had a negative balance or anything of the sort that would put Paypal at risk.
Now whenever I call they are extremely rude telling me the account is closed they're holding the money and there's absolutely nothing I can do.
They have been rude, lying, inconsistent, unfair and have made 0 effort to resolve this amicably.
They have 0 logical reason to hold $40k of my money for 180 days, the only reason I can think of is they do this on 10's of thousands of accounts and gain big money off the interest.
When I log in to my account there's a notification saying they need more information from me. When I click on that notification it brings me to a page that says the account is limited because they need more information regarding my recent sales, they do not say what information or how to provide information. That is straight up illegal and a complete abuse of power.
I know there are thousands of Paypal horror stories but I genuinely feel abused. I have expenses, a family and so on and need that cash flow and no one at Paypal can be consistent for more than one phone call or help me resolve my issue, it's pathetic.
Just had to vent and hopefully this will give them some of the negative attention they deserve.
First, you need to be VERY careful about using VPN or letting remote team members access Paypal. One misstep with, say, Hong Kong account being accessed from Ukrainian IPs, and you're blocked for a security review which drags for days and weeks.
Second, they completely neglect any special international shipping methods' unique constraints. Sometimes when you ship from China, the tracking will only appear when the package reaches destination country. This is considered an outright fraud by Paypal, which promptly returns money to the client and you're left with a loss.
On top of that, they will impose 3% commission for currency conversion. Did you ever hear of a bank taking 3% to convert between your multi-currency accounts? Well, "Paypal is not a bank".
Add to the mix their robotic support with that condescending tone.
No. I wouldn't touch Paypal with a ten-foot pole.
That being the case, I'm calling bullshit.
also don't get me started they steal 5% of my income and don't have live chat service to resolve issues and their FAQ is referring to website layout from years ago with most of the steps wrong
sadly still two of my vendors don't offer to me other payment solutions (well one does wire transfer but only for large amounts i can collect in months) so i still have to use this horrible service to not lose income
One case where it's especially frustrating is Etsy. There are many vendors on Etsy who refuse to accept any payment other than PayPal. (One can't use an Etsy gift card.)
Edit: add etsy note
(this is sarcasm, for people who actually never heard of this happening before)
If you explain to them what youre doing and come up with some proof, they will release your money. They do not want to steal it. Almost all these cases revolve around someone not communicating with paypal and then acting surprised when they freeze funds.
Any bank would do that. If my bank is hit wit ha 100k transfer and I don't say a word about it and then appear at the local branch and demand to cash it all out without an explanation of whats going on, they will refuse that, as well. And probably call the cops just to cover their asses. Seriously. Talk to them.
What approaches did you use?
How do those approaches compare or contrast to your own experience as a junior developer?
What do you see as the defining differences between junior developers and senior developers?
Is there an interesting technical subject you've recently encountered?
How often do you write code?
What makes a good programming language?
Tell me a debugging story.
[caveat, I might be old enough to be your parent]
Then, ask about his past experience working on career growth. Has he ever promoted anyone? What's his management style, hands-on/off? etc.
Honestly, algorithm questions are really out of the scope here (don't ask algo stuff... please :-)
In this case, I would poke them on a) relevant problems they worked on and how they went about solving them (dig as deep as you can), b) how they approach problem solving and coding in general (what excites them), c) how they made career decisions to date (what drives them), and why they're interested in the role you're hiring for (what's motivating them).
I wouldn't waste time with algorithm questions. A thoughtful and motivated developer will figure out and deliver much more than a algorithm guru.
Go for the design questions.
Let him show his design skills and show his ability to teach it to you. That's what you expect from a more experienced, isn't it?
I think the best thing to focus on is hiring a manager that knows a little bit about the processes you guys use day-to-day. If you're an agile team, ask about agile; a requirement document team, ask about documentation experience. Processes sort of follow some high-level patterns due to the large accreditation bodies that profit from selling their own flavors.
Have they managed QA or been involved with continuous integration and automated testing? What task-management systems have they used? Are they interested in promoting strong architecture, is production support a priority; or ask them to list out a set of priorities related to product delivery, production support, architecture, customer service, which helps with discovering any underlying philosophies more than really giving any direct information. Give an example of a time they resolved a conflict.
Asking about what the technology stack was for the team they managed is always good as well. If they can explain it coherently they weren't just doing performance reviews and checking time logs to make sure people were at their desks.
Just some ideas off the top of my head.
Asides from the basics, I'm more interested in an applicant's personality and how well they'd mesh with the existing team.
The particulars of skills can be trained. Personality pretty much cannot.
In the absence of other info I would let the more senior guys size him up in terms of technical skills, and instead focus on the more human aspects. At the end of the day what you want to know is "can I be happy working with this person?".
You didn't mention whether this person will be or is likely to become your future manager. If he will then the question becomes "would I like to report to this guy?".
The reason for this is that as a junior developer, you won't probably be able to technically challenge a candidate with many more years or experience.
Also make sure you ask for advise to other interviewers in your company, people is always happy to share the way the interview candidates and everyone has a different approach that we can learn from.
Some empathy-- He might be thinking this millennial is the same age as my kids. It can be rather intimidating having a young punk size you up for a job.
Get beyond that -- focus your questions on determining if the candidate could be a successful manager. Here's a list of questions to give you some ideas > http://www.bakertilly.com/uploads/interviewing-leadership-ca...
1000 years ago, the primary frontend toolchains were singleton and handmade: every instance of a piece of data needed to be individually crafted.
500 years ago, the printing press had made significant changes, but frontends were still largely coupled to the available presses and their character sets (let alone niceties like layout and graphics).
100 years ago, frontends still remained tied to their physical layers (ie, it wasn't possible to scrape data and create a new frontend without recreating the entire medium) - ie, books and magazines and newspapers.
In 20 years, something that has already been invented but is today not largely known might well be responsible for most knowledge exchange. It's completely plausible that technologies like AR, crypto-blockchains, and newly legalized psychedelic drugs will be as important as HTTPS is today for transmission purposes, let alone the particularities of the application layer.
100 years from now, it's highly unlikely that the screen-and-keyboard model of data ingestion will be regarded as anything but a historically important link in data evolution, cast away in favor of more tactile, neurochemical, and cybernetic interfaces.
500 years from now, most of the world's governments, media traditions, and spoken dialects of language will have folded and made way for a completely new condition of humanity. Who knows what the frontend will look like.
In a 1000 years, our species might plausibly have no biological footprint (ie, no sensory organs to use for the purposes of distinguishing "frontend" from "backend") whatsoever, and live on as information and knowledge, present in the physical universe only in ways that we can't possible yet imagine.
All of the other questions are all over the board... It sounds like you are trying to get us to write a homework assignment for you.
There is a movement towards a more elegant way of expressing UI, where functional languages and imperative languages with functional features can both be used, but these currently require often large and complicated frameworks or even comete language runtimes.
JQuery inspired the selector APIs (querySelector*) which in turn improved the efficiency of, then mostly obviated, JQuery itself.
I imagine the same thing could happen with React-like frameworks and things like Elm.
How good the tooling is (maturity, source maps etc) for other transpiled languages may vary a lot but there is still a lot of choice. I'll be sticking to TypeScript for now.
I imagine instead of alternatives we will see a lot of things being compiled from X down to WebAssembly. I see Rust/Go/Haskell targeting WASM in the near future.
WebAssembly has a lot of potential, but I think JS will have its place for a long time to come as it always has on the web. It makes me laugh whenever I think I might be writing Java for the frontend again, but it could actually happen!
Asking if TypeScript is good enough is kind of an odd question, good enough for what exactly? If you meant web development it certainly has its use case, but I think the discussion around TS and Flow is still open.
Calling JS elegant is like calling a gnarled, slime monster dressed in pink clothes elegant. Ooooooh I have shiny lambdas! Makes me soooo pretty - I can cover my warts and dazzle programmers!
To say nothing of the likelihood that each language will have browser-specific implementations, so each language also gets its own unique ecosystem of frameworks and shims for cross-compatibility.
IE used to (maybe still does?) support VBscript. It could support other languages also via ActiveX. I remember articles about how to use Python in the browser.
Yes. Once you move to TS, it's inconvenient to move back to JS
> Will developers be open to alternatives?
I would like to see GoLang supported in the browser (natively, not transpiled). Go has some awesome potential that's probably being wasted by limiting it to systems programming. Before Go I might have said C#. However, sometimes I want my stuff to be strongly typed, and sometimes I want to keep it flexible to change types.
In the end what won?
The simplest, and the practical. With Linux inside it.
Developers always want to reinvent the wheel instead of submitting PRs and participating to the debate about the future of open projects as "participants". It's ok to "only" participate.
It also has NPM, React and other frameworks, V8. Any challenger has a lot to overcome before people will consider switching.
The ongoing effort to improve the language has hit some stumbling blocks and made some outright mistakes, but overall has improved the language significantly.
Competitors like Elm and Dart are certainly compelling, but I don't think they have enough weight to entice UI platforms to converge.
The major players seem to agree that incremental improvements are easier than getting a huge amount of diverse vendors to converge on an entirely new/different platform.
I recall a time when Mozilla was shipping Python until HTML5 kill it. HTML5 gave features front-end developers desperately needed whereas Python honestly did not.
If the alternatives are significantly better at solving their problems, sure. People are switching to React despite React seemingly going against the 20 year paradigm of programing web UIs. Why? Because the pattern works for many people (not all people).
> Will we finally standardize on a simpler set of tools and frameworks?
Do other languages have a simpler set of tools and frameworks, or they simply better at hiding the complexity from you? In my first programming class, we were shocked to see how a 2kb C source code file was turned into a 200kb executable file by the compiler.
I've worked at companies using Java and Scala where I spend my first two days just getting the code to run. Is that tooling really that much easier?
> Is TypeScript good enough?
3. I think the upcoming web component standards are going to make module web development a ton easier but the standards have been moving at a SNAILS pace. Poylmer's polyfills are great but don't cover everything and is extra overhead. When browsers support these natively it's going to make things so much easier to create 1 component that can end up being used in any web application regardless of framework.
At the moment, frontend libraries like React, and the new ES6 features is the best we have.
WebAssembly will allow other languages to run in the browsers, but how it will work is still unclear.
The only other option I've heard of is Elm. I haven't used it, but many people claim that it might be a good JS replacement. Though I don't know if it offers enough of an advantage to cause everyone to switch. If anyone has more information or opinions - please share.
Heck, even with WASM coming around, you need many external tools for building and deploying applications. If you're targeting the web you'll still need to be fully aware of its limitations as well as having a strategy for handling em. These problems won't get magical solutions all of sudden.
I'd be interested in hearing of some ways in which you believe tools and frameworks could be simplified, as well as your current complaints with the ecosystem.
It's important to understand that the JS world has many players, and different groups of people have vastly different requirements. For example, even if picking up Webpack takes a bit of tinkering first, once you have it in place it requires very little maintenance. If you're working on a larger web app, paying that price up front is well worth it, as you can tweak the config to easily handle most future problems and requirements.
And who knows, maybe some of those companies will adapt their platform to fit consumers.
Unless there's a unified effort between major browsers to bring support for a new language we'll have to use js. And that seems highly unlikely (see dart for instance). However, you now have languages that compile to js, that start to satisfy most developer needs, as well as the sketchy evolution of js.
No, it did not catch on.
Google built Dart once as a alternative and it did not make it into the Browser.
Are JS frameworks not simple? I really want to know how you feel about Spring or Magento.
Wasm modules will be viable options for processing-intensive tasks.
I want to use an api, similar to Qt, to write webapp.
But it moved 'to' JS not long ago, so it will probably stay there for a while.
I mean, remember the Swing and Qt days, when you needed to wrangle the C++ or Java?
JS is a breeze compared to this.
What is much more concerning is the dogmatic, hyper reliance on all-encompassing frameworks, with a commensurate scrabbling for these frameworks to only be made by large corporations. It used to be that you could start a side project on your own, working at a small company, with a decent work-life balance, and grow it into a jQuery or Underscore or Prototype.js and people would even thank you for it. Now, you get people questioning whether or not you should even be allowed to exist if you aren't an official project from Mozilla, Google, or Facebook.
Just because a large corporatiom makes a thing doesn't mean it's particularly good. We've all been complaining about how Google's brain-teaser style job interviews are only effective at keeping good programmers who aren't also autodidacts out of the company. Yet out of the other corner of our mouths, we assume anything they make is great just by virtue of them "only hiring the best". I'm sorry, Angular is a pile of garbage. And I mean the rewrite that was supposed to fix all the problems of the first version. Their official documentation's setup instructions are to clone an example repo and delete the parts you don't want. This isn't just unprofessional, it's infantilising. Or the alternative is to install yet another CLI tool for what should just be a front-end library. Every single place they use decorators--which are an experimental feature in TypeScript, so Google is building a core feature on unfinalized syntax--they could have been done with superclasses instead and just kept the whole project to one paradigm. But OOP isn't sexy anymore, and you can't get overqualified PhDs to work on business issues unless there is something to overcomplicate in there. They claim you can't get the live-reloading development server to work on Windows because of something Microsoft supposedly did to block it in January. That's funny. I have no problems with my build and dev tools, and I'm running on top of the same, exact Node ecosystem. But they don't actually explain anything or link to any issue, so there is no telling what they mean.
Don't be afraid to "reinvent the wheel", and stop complaining when others do. This search for "the one, true wheel" is what is killing us. Quit trying to take jobs with companies that expect you to know React and Ember. You don't have to learn everything that is out there, and you can stay on one thing for a while. Or you can even make your own things. Your worth as a developer is not in the tools you know today, it's in your ability to learn and solve problems.
> But will we ever move away from it?
The sheer amount of money for this to be possible is unimaginable and I don't think anyone's budget would allow for this. Hell, Facebook decided to invest on React Native when they could have done other crazy stuff like launching their own browser with ObjectiveC support.
> Could Google or Mozilla build support for another language into their browsers while developers gradually move away from JS?
Their engines are open source, and if this was easy I'm sure as hell someone would already have <script src="text/brainfuck"> working. You're also forgetting about Opera here. Opera is big and although its browser is not on all PC's it's on almost lots of media devices out there. Except for LG, Samsung, Roku and Android, all SmartTVs ship with an Opera browser which is what's used to run YouTube, Hulu, Netflix, HBO, etc.
Sure, Dart had its time, and TypeScript is getting lots of traction right now. You also see people writing frontend code on .Net and Java.
> Does WebAssembly solve this?
No. Although some crazy people may decide to port a UI toolkit (Qt? GTK? WxWidgets?) or write a new one, the complexities this introduces are not worth it, business wise. Also, I'm sure it will also bring its own subset of problems. I particularly see WebAssembly used for two things:
- Games.- Stuff you don't want people to mingle with: DRM, banking, cryptography, etc.
Building a CRUD SPA in WebAssembly would be, IMO, a very stupid decision.
(I work on Google Cloud Storage)
But I'd recommend to use Google Cloud Storage + Cloudfront. Since you are hosting static pages that can be cached by Cloudfront, there are almost no costs on the data traffic from Google Storage to Cloudfront. Cloudfront is easier to use and you can control more.
I'd spend the energy on each individual relationship rather than the "showcasing" aspect.
It's probably a good exercise even if you don't publish it (personally I would find such a list far too private to publish).
I'm a huge Flask user, with projects with 50+ Flask extensions installed. Most of them I just plugged in and never had issues. Some issues I had were easy to patch and most of them were fixed upstream.
You have some complex extensions, but a lot of them are just small wrappers, so it is possible it's just good enough and feature complete.
Kind of disconcerting to go to Github to lodge a suspected bug report on a gem we use every day, and see that the last commit was 6 years ago!
Learn to program and do it yourself if you don't find a library/gem. THIS is the solution (anyway in any platform/framework you'll have the 'main' libraries/gems updated...)
Stuck with what you know better and hack a product.
Appropriate marketing channels vary distinctly by business type, development level and market positioning. Service vs. product, physical vs. digital, popular vs. specialist, early stage vs. validating vs. growth-phrase vs. stable, desired audience, phase of moon, etc.
In general tooling should be determined by the channel, not the other way around.
The advice given to me by a very successful CFO (many $Ms personal exit, multi-decade angel, now running an accelerator) on my first business was: "test each channel". That means: marketing spend per new prospect, conversion percentage, repeat customer percentage, customer lifetime or fixed-period value estimate, and maybe other channel properties like responsiveness, customer demographic or other data available, markets served, total available inbound volume. Try to keep the building of this data for objective channel-vs-channel analysis as your focus, and don't get distracted. Remember, you're being marketed to. ;)
If you're lucky, you'll find a strong channel. In most cases, you simply need to sink a certain minimum amount of capital to get your customer base large enough to get in the black. Take it from me - not having this war-chest can cost you the business (as it did my first). If you find yourself in that position, workarounds can include partnerships with established networks, acquisitions, pivots to SaaS-conversions ... but again it depends on the business. Good luck out there :)
And checkout Segment.io
Also, I've got triggers in my app that spawn Trello cards. I feed Trello, then manually do stuff in the other systems. Ugly but I can switch out other tools easier. This lets me try new tools faster, and switch back too.
- Mixpanel - Pipedrive - CloudWatch
Google Mail (email)$
Google Cloud (hosting)$
Amazon S3 (backup)$
AdEspresso (social ppc)
Technology does seem to move in cycles and this has all the signs of a peak of complexity. I feel like it will almost certainly collapse under its own weight - the last time I saw complexity this out of control was the early days of J2EE. The question is whether the solution will be built on elements of what currently exists or whether someone will make a clean sweep like Ruby on Rails did to J2EE.
Sorry, I don't have anything else to offer other than a sympathetic rant!
With my current project, I started off with just Backbone and Typscript. Eventually, after hitting a few walls, I was like "ah, that's why React is necessary over Backbone". Then I realized why Redux was necessary. Then immutable. Then webpack. Each of these little revelations coming a month or two apart.
The problem with instantly installing every dev requirement you think you might need is that you may not actually need as many as you think, and then you're burdened with unnecessary complexity. Along with, of course, the pain of learning and dealing with the intricacies of getting dependency each set up. Depending on the size of your project, Redux may not be necessary. Nor immutable, etc. But you won't know if they are necessary until you understand them, and that only comes after using them or feeling the pain of not using them.
The only tool I believe is truly necessary for any web project is TypeScript. I could write a small novel on why, but the crucial reason here is that it enables you to do all the above refactoring with ease. Refactoring vanilla js is a nightmare.
Major Key: Avoid compile steps as long as possible.
No Babel, no Webpack, no browserify, no JSX. You can use React without any of them. You'll get to them when you really need them eventually. Maybe. Only one of the above I use is browserify.
As a developer, your key job is keeping complexity down. Doesn't matter if everyone else implicitly gets it. If it's complex to you, don't feel forced to use it. If you can get by without it, do so. When you eventually get it, it wouldn't be that much of a struggle.
You'll still need to look up apis, function args and options, but that's just forgetting how to tell the computer what you want. Very different from not understanding why you need each piece or how to put them together.
Only part you might have to spend some time to figure out would be compiling and module bundling. I suggest picking Webpack2  and going through its guides to get up to speed with it.
Avoid frameworks and UI libraries like React and Vue until you really have a good grasp of the eco-system and problem you are trying to solve.
I would ask you this. You spent 5 hours fighting with React Router in an app that doesn't exist. What problem are you trying to solve that React Router is absolutely necessary? Are you trying to build an application that does something? Or are you trying to wire up a bunch of code that doesn't do anything but has all the most popular libraries of the day?
>Is it just me, or is this too complicated for something that should be simple
Both. It's not just you - a lot of people have this issue and there is some complexity here. But there is often a good reason for the complexity, and the need for complexity often comes after the simple problems have been solved. It really sounds like you're getting too far ahead of yourself chasing something that you don't need because it's what you feel you're supposed to do.
I'll go back to it: what problem are you trying to solve that you need ES6 more than ES5? Or ES3? It's been my experience that people feel the fatigue when they don't have a compelling reason to use the tools they're fighting with. I don't think "there's a ton of hype around it" is very compelling personally.
So my advice to fight the fatigue is solve your problems as they crop up and really take YAGNI to heart. Don't use a tool for advanced routing until you need advanced routing. You can build a React site using ES3 and script tags if you need to. You don't need a huge redux architecture when you're first starting out. Work on getting a webpage rendering "Hello, World" as soon as possible. Then, start adding the cool libraries that do all the neat stuff for you.
I'd also add that in this specific case, you're dealing with a library (React Router) that just recently went from alpha and beta to stable in the new (and latest in a stream of breaking changes) version which complicates things.
If possible, ignore Internet Explorer completely. All the other current browser versions support ES6 (sans modules). A wonderful little utility called Reify allows you to load ES6 modules in node without transpilation:
For packaging those modules to use in a browser, there's Rollup:
Both are fast, even for largish JS projects. Reify allows me to write clean code and tests in Node using bone stock Mocha and Chai configurations. When I need to deploy to the browser, I reach for Rollup.
This method allows me to eliminate a good chunk of the complexity swirling around Babel and its dependents.
As far as React - I found the learning curve quite steep. Once I was comfortable enough with its core concepts, though, I found Riot to be more suitable (and quite a bit simpler) for the medium-sided applications I'm building:
Keeping with the attempt to promote clean code and avoid transpilation, I don't write Riot "tag files" (Riot's version of JSX) but instead use built-in ES6 template strings:
In other words, I strive to base my projects on pure ES6 only. No fancy inline markup. No bleeding-edge ES7 features. Just plain old ES6. When native import/export finally arrives for Node and browsers, there will be almost nothing needed to switch.
2. Try to always ask yourself the question, "SHOULD I NPM INSTALL THIS LIBRARY ?" Asking this questions helps you question if you really like the way they do something, you get to ask yourself if you only want tiny a subset of the features it provides so instead you can do it yourself.
3. If you are up to it, and have some time, give Vuejs a try, Vue 2.0 with Vuex has been a delight to work on. Just take a look at https://github.com/vuejs look at the projects in there, the router, the store the boilerplate, everything is done by the same people responsible for the main library. It makes making things work together a whole lot more fun.
4. Use IRC channels dedicated to what you are learning some really great people hangout at IRC channels. Oh and reddit subs for your topic.
I think it's mostly a matter of accepting that you are not on the cutting edge of programming, and the confidence of handling a less dramatic codebase built with stable tools.
Everything is architected, most libraries are pre-installed, you don't have to deal with webpack (OMG, tell me about configuring webpack), they also have a lot of documentation and most importantly sample code.
If you're using react, I found this boilerplate to be inferior to none: https://github.com/react-boilerplate/react-boilerplate
One really nice advantage of this is you can use REST/HATEOAS as originally intended:
Not sure about a specific plan, but I would go for a walk, take a hot shower, or call it a night.
Fragmentation across virtually every tool imaginable from language choice to build systems. Dependencies on dependencies on dependencies. Apps breaking regularly from using the bleeding edge of everything. The total number of downstream dependencies that just using create-react-app installs is kind of insane. And don't get me started about the anti-separation of concerns of embedding "inline" CSS in React components... That said, some things are simpler too. I hope the JS community starts investing more in quality and longterm unification, and it might happen but I'm not sure.
Many libraries and frameworks today are designed to support huge apps for huge audiences, but people use them even to build small apps for small audiences, when there might be a better (simpler) choice. Incentives are misaligned for the companies supporting the most popular frameworks to care about small apps though.
I think we are starting to get there, but the JS ecosystem today vs 35 years ago has exploded in every direction.
If you're really determined to learn React and build something in it, you need to back off of what you're working on now and try another route. Maybe do something non-programming for a day or two and come back to it. Try something simpler with fewer helper accessories, or try a different starter kit. Maybe try using Webpack to build it instead of whatever else you're using? It isn't the simplest, but once you learn the basics, you should have a better handle on how your code comes together into the final js that the browser actually runs.
I think the web platform has gotten a lot more accessible to developers and actually simpler in many ways very recently.
* ES6 classes standardize and simplify syntax for classical inheritance where before ES5 inheritance was either ad-hoc, or you had to buy in to a frameworks inheritance helpers (variations of createClass() or extend()).
* CSS's flexbox and now grids let you express layout much closer to your intent, instead of floats, auto-margins, large grid systems, etc.
* Shadow DOM solves CSS scoping and overly complex selectors. You can write very simple and straightforward styles when they're scoped to a shadow root.
* CSS variables bring a platform-native way to do variables, rather than having to do SASS/LESS/SCSS.
And, if you judiciously choose some non-standard tools, TypeScript brings a great experience for reading, navigating and type checking code, with a language that's as close to plain JS as we've seen recently. It's been much easier for my team to jump between projects with TypeScript's clearer type annotations.
Personally, I think the future of the web is _very_ bright, it's just not evenly distributed yet.
I still don't get the appeal of virtual dom. Browsers already have DOM, why use another crippled parallel one? It can only cause trouble and increase cognitive load when trying to do anything fancier.
I understand the value of having state in one place and being able to call some function to update the UI to match the state. But that is a separate concept from virtual DOM.
I don't get much JS fatigue. Perhaps because I'm working in a bubble and don't feel the pressure to adopt the latest tech quickly.
Recently I had to extend fairly complex HTML-only web app that I wrote 11 years ago for a client, and it was quite fun. It's sort of nice to see that, while it's fun to write SPAs and everything, there are still ways to write web apps without a single line of JS.
Doing this allows me to actually build solutions rather than spending the majority of my time dicking around with a gazillion libraries, frameworks, transpilers and what's not. I find all of it interesting but I'm a one man band I have to produce working projects on time and on budget that do what they are supposed to do.
For my projects, my users simply couldn't care if the UI was built with jQuery or React. For your project that might be different though.
Pretty opinionated on the tooling it uses, but good if you just want to say "Fuck it, I want to clone some boilerplate, write some code, and build/distribute it", then worry about the finer details later.
Also, I would avoid using a boilerplate/starter project. Create-react-app should be enough. Many other boiler plate projects are filled with things you don't need when you're starting out.
Many people seem to advocate an opposite philosophy of using as little tools as possible, i.e. keeping at a lower level, closer to the browser. I can see the reasoning for that when you want to be a knowledgeable engineer who understands the details of how every tool works.
An alternative philosophy is just to understand the higher level framework, so that you can write React and it "magically" becomes a website. This could be compared to developing Ruby on Rails apps on Heroku without learning any details of the underlying deployment and server software components. By using a high level framework and ignoring most of the details, you can focus on the productive aspects of the work first.
In the end you're always working at some level of abstraction, and you can choose what is the right level for you and the project.
While react and redux are simple individually, react-redux is incredibly frustrating to start with. React-router isn't complex, but feels a bit confusing at first. After a 3 days trying to make sense of "why all the complexity", I was just hours away from dropping the react ecosystem. I was primarily evaluating it against Angular2. Having said that, investing time in React ecosystem has paid off very well
1. Once your app grows, redux will make it simpler
2. Avoid react component states as much as you can. But that doesn't mean that every event dispatches a redux action. I divide my components into connected(smart) and presentational(dumb) components. These inherit from parent base components. That ensures that only connected components can dispatch redux actions and others are just connected with handlers.
3. While this is a ES6 question, I prefer TypeScript (and VS Code). I know many prefer Flow, I've found TS to be better. It might take a few hours to integrate TS in your React code - its only. Strong typing props and states with TS interfaces tends to keep your code bug-free. I also use TS-decorators a lot
4. To keep things simple, I pass the entire redux state to all connected components. Having custom base-components helps avoid being too verbose. And type-defining accessed store-states makes sure I don't break things. And then the intellisense in the editor keeps me fast.
5. Learn webpack in detail. This is very important. If you don't you might find yourself being frustrated quite often.
For simpler Apps ... use VueJS. Using React-Redux and react-router to build a todolist is just over-engineering.
I think if you are a professional, you should specialize. Make a choice and stick with whatever you choose, at least for a little while. You don't need to know everything. Maybe you don't need to know the front end at all. The whole "full stack engineer" idea is nice, but I'd rather have someone who specialized in the front end working on my site than someone who has tacked it on to a bevy of other skills and is just trying to hang on. If you are a professional web developer, then learn the tools you need, keep everything as updated as possible, and try to learn one other thing that is up and coming. Don't wait to let the updates and releases pile up before you upgrade, stay on top of it, read the blogs, update your code. But don't worry about knowing all the frameworks. If you are going to be working in React for a few years, it'll be worth the struggle with the current project you're working on. You don't need to know Angular, React, and Ember, just pick one. Learn another one when your job requires it, or mess around with it on the side.
If you are a professional web developer and have not kept up, and need to know the new hotness, I recommend Ember. They are always absorbing the best features of other frameworks (they now render the DOM like React does), have developed a pretty good update process that helps you transition, and have middling good documentation. They try to keep things simple. It seems a lot less fragmented than React.
If you don't need to know this stuff for work and are just trying to keep up with the field, just keep in mind that everything you learn will be obsolete in 3 years. Hopefully you are enjoying the process, because you'll do it again soon.
Webpack is not easy, and it definitely took some reading and some work. But the documentation has become a lot better, and I was able to get it working extremely well. Now, I have the following features working:
- react-router integration
- server-side rendering
- vendor bundle to help with caching
- automated CI builds
- Docker to Kubernetes deployments
I would really suggest learning Webpack 2 and starting with a very simple toy project. Start adding features to it, and then you'll start to understand how everything fits together. Then you can take those learnings and apply them to your other projects. Once you get it, it's very powerful.
I was once a happy, gainfully employed Rails dev. No more. I am hoping to one day learn .NET core and escape.
Your problem is that what you're trying to do shouldn't be simple. For better or worse the ES6 toolchain (Babel, Webpack, npm, etc) is very enterprise. It's intended for production-grade stuff where you need a lot of control. I do frontend for a living and these tools make my life so much easier. If you're just trying to build a simple web app you're better off just starting small.
Second, pick a problem you, your close family members, or your close friends have. A problem that's painful enough that they'd pay for, interesting (for you) enough that you can spend a few years solving, and practical enough that you can do it with the means you have today (i.e no investment). If it's a "new" idea, it's a lot of risk.
For most people, a small, niche, proven idea that makes money is good enough. It'll take a few years to try a bunch of experiments and see money, though. Grind it out...
Keep in mind that finding a thing you can monetize does not mean it is a thing you would be good at or that you would want to work on for years. Yet, those two pieces are critical to the equation.
-which business will vanish and how will today's customer migrate
-What are the currently growing company's hiring, and what is amiss to replace this jobs, yet again?
-What is missing in modern life, and how could a app re-engineer social-life and society to provide it?The last one is the most noble, but also the most tricky.
Pay people for their ideas!
So break it down... who do you think has problems? Well, businesses for one. So think about businesses. What do businesses need? Well, they usually need more customers. Or maybe they need to reduce costs. Or both. So think about how the technology you're familiar with could be used to help a business find more customers, or operate more efficiently.
Of course doing this in detail is going to be easier if it's a domain where you have personal experience, but if you don't, just come up with an idea, and then go talk to people about it. If you feel really strongly about it, maybe build a prototype to show off. But be careful of spending tons of time building something before you know if anybody wants it (note: I haven't always followed my own advice here. Also, never take advice from me.)
Another element is: read books. Lots of books. Preferably books about business (sales, marketing, promotion, operations, organization design, strategy, etc.) This will help give you the understanding needed to link technology with business problems like "find more customers" or "reduce costs". What you read in books will always be somewhat non-specific though, so you have to - again - loop back to "talk to people. Lots of people."
If a particular industry interests you, read up on it specifically. Subscribe to the trade journals in that industry, and go to the conferences and trade shows that people in that industry go to. Talk to people there.
Read The Four Steps To The Epiphany by Steve Blank.
Use LinkedIn to find people to connect with and talk to. Favor having actual conversations with people over doing surveys using SurveyMonkey or the like.
If you do enough of all this, at some point, you'll probably come up with a pretty good list of possibilities.
Note that while this is pretty simple, it's not easy. People won't return your phone calls or emails, or will agree to meet you and then not show up. You'll come up with what you think is a great idea, then start looking around and find that 375235028372512.7 other companies are already doing something in that space. Or you'll fall in love with one of your ideas too early, spend a ton of time building it, and then find out that that A. nobody wants it AND B. 375235028372512.9 other companies already built something similar. Etc., etc., etc. Don't get discouraged, just keep plugging. Read this essay by pg: www.paulgraham.com/die.html
The other thing, arguably more important, is that there isn't really a community around grumpy, whereas there is around Python 3 (the latest nontrivial commit was 3 weeks ago for grumpy, whereas the latest nontrivial commit was 6 hours ago for Python). Even if Google did try to build a community, many people worry that Google will just abandon software when they want to, so people would be hesitant to work with this software long term, which means developers wouldn't want to build any software for it; the majority of developers developing new Python code are doing it in Python 3, and those that aren't are most likely using six rather than only 2.7 unless they're supporting a legacy codebase that either they don't want to or cannot upgrade to Python 3 or to upgrade using the six library.
Python 3 may, however unlikely, "die", but this and Google won't be the death of it.
Yes there will be legacy code that will remain on python2 for ever, but this is normal.
I am personally loving the new features of python 3.6 in particular and would not want to look back.
Google has a lot of code in python2 they want to move to go. It would be bizarre to see anyone start a new project in python 2 because of grumpy.
Love the python community. The future is python3. Enjoy!
Python 3 is popular enough that it is effectively unkillable. For exactly the same reason Python 2 is also unkillable.
Language adoption is never a zero sum game.
The answer is no, purpose built runtimes do not uproot established projects in another domain, and a proprietary corporate project to migrate legacy code will not fix issues of fragmentation. In fact, it just kinda piles it on.
If you want to see how effective Google has been in fixing long standing python issues, check out the history of the Unladen Swallow project.
Maybe I'm far underestimating the amount of custom C API being used in production at places or been hanging out in the wrong places. I just doubt that intention is to kill off anything. Even by unintended side effect.
A great deal of the python code I see with C extensions already is Python 3 compatible and even has wheels for them. I think it used to be numpy and libraries that pulled it in as a dependency. We're at the point where compatibility from 2 and 3 is so darn good in libraries we pull in I hardly notice it anymore. 
I do write Python 2 + 3 compatible code. The differences in the syntax itself are trivial. A compat module  will do the trick assuming you have your own custom C extensions, which most don't.
(Going off on a bit of a tangent) There has been some deliberation of what has to be done to get around GIL: The other thing is I haven't been convinced of is the idea being thrown around at conferences and on mailing lists that breaking the C API is this world-ending scenario. Yeah I understand the disruption, but what % of the code, assuming you're in the minority of python developers doing custom c extensions, that you can't update some API signatures?