Source Code: https://github.com/codemy/invoiced-ui
Source is here: https://spideroak.com/solutions/semaphor/source
"debugger.html is a hackable debugger for modern times, built from the ground up using React and Redux. It is designed to be approachable, yet powerful. And it is engineered to be predictable, understandable, and testable.
Mozilla created this debugger for use in the Firefox Developer Tools."
They are also accepting of new contributors.
A Guild Wars 2 Armory. Fairly impressive. You can view it live too https://gw2armory.com/
Just leaving this here for reference and as a resource.
It's even got user interface guidelines for the components.
I have a folder called "daypages" in my dropbox. Each day in my life becomes a file in this folder. Today's is "daypages/2016-10-26.org" That's about it. I don't really organize by project much.
Each day typically covers the tasks that I intend to get done that day, along with places I've been / friends I've met. The occasional tearful journal entry punctuates the otherwise mundane. Every morning, I spend a few minutes arranging today's daypage and rescuing forgotten tasks from yesterday.
No matter where I am or what I'm doing, a keybinding quickly flips to today's daypage. From there, keybindings can go back or forward by day or by week. I just jot everything down as I think of it or experience it. (I implement this with emacs/org-mode, but i'm sure you could extend this idea to any configurable text editor)
When I need to find something (whether "united frequent flier number" to "cool restaurant in SOHO" to a link that i captured six months ago), it's only a `git grep` away. Emacs has incremental search for this. If I need to schedule something, it goes in my calendar or in that day's daypage.
When I'm in the mood to reminisce, I just flip back to last year's daypage and spend the afternoon drinking tea and reading about the lovely things that happened last year.
It's like Google for the last three years of my life. Maybe this wouldn't work for you, but my small but growing collection of daypages is now one of my most prized digital possessions.
* Camera - https://www.simongriffee.com/photography/
* Simplenote - https://simplenote.com/ and Notational Velocity - http://brettterpstra.com/projects/nvalt/
* Website with tags powered by Hugo static generator - https://gohugo.io/
Someone please make a browser-based wiki that works offline (HTML5 local storage) and can be used on any computer, including pocket ones like iPhones, and keeps your information synchronized between them.
- To do lists (prev. Org mode, OmniFocus, Things, many others)
- Bookmark lists (prev. raindrop.io, Pinboard, others)
- Kanban boards (prev. GitLab, Trello, others)
- Wikis (prev. MediaWiki, Confluence, TiddlyWiki, etc.)
- General notes (prev. my own tool, OneNote, Evernote, Simplenote, many others)
- Photos (I share using Notion and use Google Photos)
- Files (I share using Notion, but still use many services for this, including S3, Dropbox, GDrive, ...)
- Todo lists and reminders. org-agenda. - Bookmark lists. org-capture and org-protocol. - Kanban boards. I don't use this, but kanban.el. - Wiki. Org-mode files and grep/ag with helm. - Financial tools. ledger. - Calendar/reminders. Org-agenda. - Files on disk. dired, org-mode. - General notes. Org-mode. - Literate programming. org-babel. - Mail. mu4e. - rss. elfeed, gnus, or rss2email. - git. magit. - irc. erc. - ...
It's a non-linear graphical (in two senses of the word) knowledge management software that stores universal links to all of your stuff, local and in the cloud. It also does notes, tags, and script nodes (which can for example be used as alarms / reminders) and represents EVERYTHING as a great big graph.
The main UI element is a TableTop, which is also just a node in the graph that acts as a visual slice through it. Nodes (normal and other TableTops) can live on any number of TableTops.
Non-nerd users can see the TableTops as an infinite number of large work tables with your de-duplicated documents on them.
I have to work on the TL;DR. I also have to work on not rewriting the prototype every few months. :)
Unscheduled todo goes into ~/todo.
Documents are in ~/d/org where org is the organization (school/company name). There are often subfolders, like subject name for school. Archive in ~/d/org/_archive/year. If a project is still running, it is still in the ~/d/org root, not in the archive, regardless of how many years it spans. I might sort by year inside that project folder if there are files ready for archiving.
Personal projects I generally sort by language (~/p/py; ~/p/php; ~/p/txt; etc.), for some reason that works well. Projects that I don't touch anymore (use nor expand) go into the archive folder (~/p/_archive). Maybe I should start sorting the archive by year as well, but it's not big enough to warrant that yet.
Collections like downloads, disk images, temporarily cloned git repositories, etc. go into separate folders, which makes them easy to manage and clean up. Unless they really belong with a project (code dependency) or cannot easily be re-downloaded, then they go in the project's folder.
The goal of the tool is to use known commandline tools (for example taskwarrior (todo), khal (icalendar), khard (vcard), beancount (financial data), mutt (Maildir actually) and so on) and give the user the possibility to (semantically) connect the data of these tools. Then, one can do data mining on PIM data.
imag is in pre-alpha shape and only few things are there by now. 3 days ago I released version 0.2.0 with tools (we call them "modules") for the following "pim aspects": bookmark, counter (this was a first example module), diary, link (to semantically link data), notes, ref (to refer to files outside of the "imag store"), store (to do plumbing in the "imag store"), tag (to add tags to data), todo (basic integration for taskwarrior) and view (to view entries from the "imag store").
As said, we are in a really early stage of development and only few things are there yet. This is a hobby project I'm working on in my free time (also to learn Rust) and I only can make progress if I have enough time to do things.
I also write blog articles about imag every two weeks about what's currently going on in the codebase. Read about a use-case I'm thinking about in one of my blog posts - and yes, these are really ambitious goals!
Feel free to ask questions!
Edit: Fixed link markup. Sorry about that.
: https://github.com/matthiasbeyer/imag: http://beyermatthias.de/tags/imag.html: http://beyermatthias.de/blog/2016/08/07/imag-usecases/
- Bullet Journal
Major tasks, journaling, and goal tracking in a Bullet Journal on a per-day basis. Monthly goal lists live in a separate entry, and daily scheduling happens via a month page. Most self-driven work comes in through here, and I'll usually keep this open nearby while I'm working. The physicality of the journal helps a ton.
Inbox-as-todolist. "Starred first" view allows top priority tasks to be visually distinct. Most work from other people comes in through here, however it's really convenient to schedule or bounce things to the near future. Lots of people use Boomerang for this but I prefer followupthen.com - I can send/fwd an email to "tuesday", "january" or "3weeks" @fut.io and it pops back into my inbox that exact morning.
- Google Keep
Random unassigned tasks live in Google Keep, the Android "OK Google - Note to self, get new shoes" voice command saves directly into Keep. This is extremely convenient as a place to store random nagging thoughts while walking down the street. Having a Keep widget on my homescreens ensures that I see the list often.
This gives me: - A Git interface. - Integrated Kanban board - Integrated Wiki - Integrated CI - Integrated Slack Clone (Mattermost)
I now use Mattermost channels to handle most notes, bookmarks, etc.
I use the kanban board for ToDo lists.
I use the Wiki to document damn near everything.
I've also recently started using Amazon Drive ($60/year for truly unlimited storage) to backup everything. I run it on my NAS which hosts all of my local media and daily backups of all household computers.
Amazon Drive also includes Amazon Photos. Both services have web and mobile apps.
I use combinations of Mattermost and AWS Lambda to schedule/trigger things. (Build and deploy the wife's weekly webcomic every Wednesday at 8am, for example)
Bookmarks - Pinboard with weekly backup to json/text.
Notes - A bunch of markdown files in folders (diary,projects,etc). Every day is a new file. I have @tags littered all over my notes for searching. Beauty is that there are many apps that can write markdown and search plain text.
Finance - ledger-cli, well, actually my own version with better reporting abilities, in my opinion.
Task management - to-do.txt. Again, many apps to choose from to manage the file.
Syncthing - Sync all of the above everywhere, plus other stuff.
Backup - restic and rclone.
Also, everything I've mentioned is cross-platform. Maybe not the application, but the source data is, and has an application that can modify it on almost every platform.
* Also keep Slack open when I am working. If someone needs something, they can ping me on Slack and I will be available within 5-30 minutes.
* Gmail stars for everything I can't address immediately. Everything else is dealt with immediately and inbox count is 0 for most of the day (both work and personal addresses).
* Iphone calendar (with alarms) for everything I am putting off for later or need to schedule/remember
* Iphone notes for everything I am putting off indefinitely (movies/books/games to consume, gifts to gift, songs to learn, general goals for the next few years, travel destinations, events)
* Occasionally I leave things out of place so that I remember what I'm doing next time I leave the house (tennis racket on the bike + tennis shoes and shorts/compression shorts in my bag)
That's pretty much it. I really don't like having to keep things in mind. And when I want to zone out on a run or a vacation, I can safely do so knowing whatever I need to accomplish is on one of those lists and will probably get an alarm from my calendar if its urgent. I used to love using Pocket for reading papers/articles when I don't have a reliable connection, but its completely broken now and doesn't save pages consistently or renders pages unreadable.
IMO maintaining a wiki is way too slow and (depending on your work place) only accessible across VPN, which is incredibly inconvenient. Paying someone to act as scrum master/maintain a kanban is generally a waste of money/time as well, unless you work at a huge company (10,000+ people across hundreds of teams). But I'm biased and have always had a strong preference for small teams.
I've used txt files/folders, then excell/word, then markdown (easy to write & read), and wiki.Then I found freeplane, started to play with it and never got out, its incredible: use plain text or html (to format your notes), insert images, links to external files/folders, the visual mind-map representation gives a great overview of your notes and lets you organize in a foldable tree (branches, parents, childs) your notes (like in deeper layers of detail).
After the initial text/html nodes, branches and folds, I started to use "styles" to add icons and automatically format certain nodes with a background color (ex: TODO=yellow backgrnd, DONE=green backgrnd, PROBLEM=red backgrnd, ...)
Why is freeplane better than the others methods I tried before? It organizes knowledge in a foldable tree, that gets bigger and bigger over time, and after a few years, its just easy to "find" in the notes. It also performs quite well (my maps are huge, huge, years old huge)
Have a look and decide for yourself.
For anything which I can't figure out a way to tie to one of my current goals, a helpful general rule of thumb is that, it may not actually be that important to hold on to. There are of course exceptions, but they're few enough that a nice folder structure on my hard drive can catch the rest.
I've been using Pinboard for a while as a bookmark list, but find the lack of any structure beyond tags a bit limiting. Just feels like I'm dumping links for the sake of it and will never really end up referring to them again.
Over time I've figured out a good organizational system (folder hierarchy) that makes sense to me so I know where to find things when I need them.
The "safety" of plain text files feels good to me for such personal / important data (after years of trying different apps/services, only to have them go out of business or cease development or not work on a different platform or have sketchy privacy policies).
Even finances and accounting: http://orgmode.org/worg/org-contrib/babel/languages/ob-doc-l...
I just throw in all my personal notes and to-dos in the text file. And remove them when things are taken care of. If it gets too crazy, I either get stuff done, or purge projects. LArger, long-term projects and pipe dreams go in the trello board.
Financial stuff runs automatically between direct deposit and auto-pay on bills. So I just put all mail or paperwork that show up on the desk in front of me, and if there are papers there, I do something about it, then put them in a filing cabinet.
Everything work-related goes into tracking systems at work.
So... just one text file, constantly open and with frequent edits, and a trello board I check out when I am caught up on things.
Documents, sheets and notes, are in nextcloud, as well as pictures and other things. Calendar is there as well. Its all in one server, with raid0 ssds, raid5 for massive storage, a few "service" VMs like for nextcloud, a few containers here and there, with easy access and overview of it all on the hypervisor. Android phone has notes which is nextcloud notes application for simpler reminders/buy-milk kind of things.
Boagworld has a great video on his setup and how it all works: https://boagworld.com/working-in-web/omnifocus-2/
Getting things done book: https://www.amazon.com/Getting-Things-Done-Stress-Free-Produ...
I have a file where I keep project ideas organized by category(webdev, ML, writing, etc).
And I have a file where I keep my daily notes(I write down most of my thoughts, it helps me to focus).
In that file, I use tags like:
- #pst and #vid for blog posts and video ideas
- #prj and #sup for project and startup ideas
- #ftr (or #bug) for feature ideas for my projects
- #link for useful links
- #jok for great jokes I've encountered or came up with.
That way I can always search through this file and easily find information I wrote down years ago.
I also put symbols >> and >>>> at the beginning of the most important ideas, so that I can easily search and find the most important epiphanies I've had this month/year.
Also, I highly recommend an app called Editorial for iOS. I use it constantly, it's incredibly powerful, and has amazing automation features. I can create shortcuts to auto-insert current date, some tags, etc. I can search through all of the dropbox files, and I can write python scripts to automate any text manipulation. It's amazing.
Bookmarks:Pinboard, as well as pocket/instapaper for offline reading of bookmarks.
Financial tools: Mint by intuit to keep track of all my accounts, numbers/excel for budgeting.
Calendar/Reminders: Google calendar and macOS calendar. I use siri/google assistant to capture spur-of-the-moment things that I don't want to forget.
Files on Disk: Dropbox. Backblaze for backups. Google photos and icloud photos for extra photo backups.
Wikis/General Notes:Emacs org mode. I keep a journal.org file, that I sporadically update, as well as an ideas.org file for things I'd like to investigate/try build in the future.I use evernote for lists/notes from mobile devices as I haven't figured out a good way to use org files on iPhone/Android.
There isn't much overall integration, I just know that for important files I reference dropbox, Financials and Bookmarks have their own services, and then notes are going to be in emacs or evernote. Events/reminders handle themselves as I typically schedule them in the stock calendar/reminder apps and forget about them until I get a notification. I don't find the lack of integration to be a problem actually, as long as I know where to look for something based on what it is (e.g. notes -> orgmode/evernote, events -> calendar/reminders, files -> dropbox etc.)
Very fast to make a quick list, but of course awesome filtering/calculation/lookups etc.
I have a to-do.xlsx for work, and one for home. Different sheets for to-read, to-call etc.
* To do lists/Reminders - macOS reminders * Bookmark lists - Safari bookmarks * Kanban boards - Trello * Wikis - http://taoofmac.com (https://github.com/rcarmo/sushy for the engine source) * Financial tools - Numbers or Excel * Calendars/Reminders - macOS Calendar * Files on disk - Dropbox + a NAS * General notes - Evernote (now OneNote) * Mindmaps - Mindnode (works great on iOS) * Photos - NAS
* I left Evernote around 6 months prior to switching jobs because the app was becoming useless and migrated everything across to OneNote (which was free anyway). That gave me: * To-dos * Notes * Blog drafts (I wish it did Markdown, but...) * Occasional web clipping I want to keep beyond Pocket. * I started using Pocket more to bookmark stuff I'd want to follow up at home or on the move * I started using Chrome more (thought about Firefox, realized that Chrome also kept extensions synced the way I like it. Would switch if I could set up a private sync backend) * I started using OneDrive alongside Dropbox at home (I don't run Dropbox on my work laptop, but some files I might need at work like school schedules and stuff go on OneDrive) * Trello was replaced for work purposes by Office 365 Groups (works pretty well) * My NAS now backs up nightly to Azure * I use Outlook for work calendars, iOS to access everything (Outlook on iOS is pretty good and has its own isolated calendar, which suits me fine)
In general, I don't mix work and personal stuff (OneNote is an exception because it can _access_ different notebooks, but they're on two separate accounts. I generally access my "Shopping" notebook at work to check on to-dos and add stuff, then close it).
I use a file called ~/TODO for that in this format:
| % cat ~/TODO | == EASY == | todo/no/progress | . task/some/progress | x task/done | | == MEDM == | todo/no/progress | . task/some/progress | x task/done | | == HARD == | todo/no/progress | . task/some/progress | x task/done
I use a file called ~/SITES for that in this format:
| % cat ~/SITES | | begin category | http://link link name | http://link <b>more interesting link</b> | begin subcategory | http://link link name | http://link <b>more interesting link</b> | end | end
> * Financial tools
Just a XLS file with GNUMERIC/LIBREOFFICE for editions.
> * Calenders/Reminders
I use a file called ~/CAL for that in this format:
| % cat ~/CAL | 09/28 c car/something | 10/04 B birthday/someone | 10/08 x some/event/other | 10/12 N some/name/event | 11/10 B birthday/someone/else
| == | TODAY IS 10/26 B birthday/someone | 15 day(s) to 11/10 B birthday/someone/else | 22:54|hostname|dir % _ | ==
ZFS with LZ4 compression + GELI encryption on FreeBSD.
* Calendar as overarching to-do, covering errands, appointments, blocks of "do this work". Sometimes I follow it closely, other days it is largely a suggestion.
* Mindmapping to collect notes, outlines, brainstorm. Lately I've used Coggle  for its easy sharing. When I need to add details, the nodes may grow into Gdocs links.
* "Scratch" text file when I just need to jot work things down and I really don't care about the organization yet. If it becomes more lasting I tend to move towards the other tools.
* Trello when I want to cut out more discrete tasks over a longer period and log their status.
* Riot.im to talk to myself. This is something new I'm trying, which is that I can start a conversation without having someone in the room yet, by thinking "out loud". Then I can subsequently invite people in to continue it. A tiny nudge in context that distinguishes it from dumping a text document on someone.
Calibre (https://calibre-ebook.com) for docs/ebook management (metadata), with Recoll (https://www.lesbonscomptes.com/recoll/) for full-text and metadata search on Linux.
Cool quote in a book? Put it on a card and file it by theme. Reminder about feedback I want to write up for a colleague? Put it on a card. I did something really great at work and want to remember it at annual review time? Put it on a card and file it under Personal Achievement. Etc. Recipes, Writing ideas, presentation first drafts. Cards work well for all of that.
I'm really using a combination of two systems. The first is Ryan Holiday's index card system for harvesting the wisdom and interesting bits from reading. The second is an index card version of the 43 folders tickler file. It's not a perfect system, but I love t and I like that it is something I can keep doing forever independent of any stupid decisions by Apple or app developers going under.
To get started you need:
- Some nice index cards. I like the Exacompta ones.
- Tabbed divider cards. Smead makes really nice ones.
- A way to carry some with you all the time. Right now I'm using the Nock Co Fodderstack for this.
- A way to file them. You can get some crappy boxes on Amazon, or something nice and vintage off eBay or elsewhere. Index cards used to be a lot more widely used than they are today, so the old selection of index card furniture is much better than what's available new.
Right now my Trello board is organised based on the work I need to do for a week. I haven't really experimented with changing this frequency though as it pretty much works for me now. And a lot of times, I need to sub divide my weekly tasks and for that I use checklists. When needed, I create separate reminders for these sub tasks using the Reminders app(primarily because it is super fast and syncs well across my devices).
When I need to look for something, I first use Spotlight to search for it as it can search across all of these apps. Works most of time, but I have to search individual apps for better results at times.
The journal I keep is on paper. I find that writing down helps me clarify things in my head. It works better than writing on a computer, perhaps because hand writing is a slower process and you get time to think things better.
I usually use a combination of OneNote & Outlook for office work organization.
- One note: For organizing web clippings, information, self help tutorials, information that I might need to reference back some day etc.
- Outlook: For my meeting requests, reminders, appointments, TODO tasks etc.
- Trello : For my goals and my self-learning stuff (which I rarely re-visit after creating it ;))
- Google Keep: For quick lists/reminders
- EverNote: For some important articles/algorithms/programs that I might need to refer time and again at an urgent notice over my smartphone.
- Google calendar: I failed at integrating this with Trello, but otherwise, this is an excellent tool for scheduling your day (exercise hours, recurring tasks etc).
Overall, I find OneNote to be an amazing tool at organizing information and I think this has the potential to be that solution for 'one size fits all' scenario. I'm really surprised MS just gives it away for free and doesn't market as much as its other Office tools. The only reason I don't use it for my personal tasks is due to the lack of a good android port. OneNote was(still is?) atrocious w.r.t memory and execution on android. The desktop/mobile app would hardly sync well most of the times and the layout design was messed up. Felt to me that someone just copy/pasted the desktop app on android with little modifications.
The tools currently are Gmail and Google Calendar.
I've tried many times to try new tools and processes, such as Trello, Evernote, Remember The Milk, Getting Things Done, Kanban, etc. Pieces of those processes have made it into my workflow, such as weekly, monthly, and quarterly goals. But the tools still end up being email and calendar.
Goals - Streak (IOS app)
Tasks both timed & untimed - Any.do (IOS app)
Financial - Quicken (IOS + desktop app)
Long term notes - OneNote
Short term notes - Notes
Files - I have a disk structure that makes sense for me. Augments with OSX tagging to ensure documents that require timely deletion are dated & marked for deletion.
These all reside on my phone's first screen home.
-- Calendar for events e.g. Google Calendar
-- GoogleMail with its task function for emails
-- one file for yearly, quartely and weekly goals
-- a normal file structure, with a README in each respective project folder, all literature, documents contacts, work, etc
-- one hard copy lab book for conceptual work.
For Kanban's, I have used Trello, but got a little annoyed. I recently found this personal Kanban project:https://github.com/greggigon/my-personal-kanbanIt's use is very simple, and I find that it works well for me. A little difficult to share among a group though.
Finally for All the rest of my documentation: Keepnotehttp://keepnote.org/This glorious little tool handled nearly anything you can throw at it. It supports Windows and Linux ( I am not certain about Mac), and it is search-able. I have used it from all my work related notes, specifically for debugging solutions, like Binding Exceptions in Telerik.
Having said that, the things I come back to are Trello (Kanban-style boards), Pinboard.in, a personal wiki, and Google calendar. I like everything web-based so that I can access things wherever I am and whatever device I choose to use.
Over and above that, I use a paper-based daily planner that I've iterated over time. I pull everything to do that day on to it, then bin it at the end of the day.
Version 3 is here: http://www.slideshare.net/dajbelshaw/dougs-daily-planner-v3 (CC licensed)
Only exception is when I am on the go and I want to take quick notes on my phone. For this I use google keep, making the notes sticky until I am in front of any of my laptops and dump the note into org mode again.
I still have found my holy grail : a kind of knowledge management software where I could just stuff things probably with tags.Not only links (I have pinboard for that) but ideas, snippets of knowledge etc.
This would be online (not necessarily self-hosted) and I'm willing to pay for that.
Accessible via smartphones and potentially with an email gateway would be great.
I don't think mindmapping software fit the bill. I really would like tag and/or full-text search.
Wikis come close but it's quite cumbersome to add a piece of info.
I can be up-and-running on a new system in under an hour. Just install my IDE's, get the Adobe CC from the cloud and get started.
I often thought that store some information as Prolog facts would make it more accessible while being somewhat structured. I have not had time to build a proof of concept on this.
* To do lists/Reminders -> Google keep * Bookmark lists -> Chrome bookmarks (automatically synced, search works in content as well) * Kanban boards -> Trello * Wikis -> Nope * Financial tools -> Nothing * Calenders/Reminders -> Google calendar * Files on disk -> Total commander / Dropbox * General notes -> Asana * Music -> Google music * Videos -> YouTube
Instead we have what we have today: lots of alternatives that act as replaceable parts of a bigger web. Luckily most of them have API-s and things like IFTTT and Zaiper exists.
- Spurn ~. It generally gets cluttered with machine specific stuff.
- The primary goal is to preserve knowledge.
- The data should be easily readable in 20 years time on hw/sw not yet invented.
My 'digital life' goes in its own folder (eg /foobar), which is Syncthing'ed around to various machines, and backed up periodically. It's very big, and contains a snapshot of 'everything' I want to preserve.
Cron run various scripts to pull data from multiple services (e.g. Pinboard, DayOne, etc) so if they ever go down, I have the data I created on them.
I segment documents and projects that I create / work on from those I've just downloaded to use. This results in a fairly simple top level folder structure:
- docs: Documents and textual data
- dev: Projects, design work, development etc
- external: External tools, software, etc
- media: mostly video/audio
Projects of course do live in their own git repos.
- Emacs org mode for notes, todos, etc (best in class)
- DayOne for journaling and notes while mobile (integrated with org notes)
- Pinboard bookmarks
I'm not a huge fan of using fancy project management software tools, because fashions change, tools go out of date, data gets lost etc. Straightforward text files for most things is the best combination of usability and persistence for me. Wikis are great, but suffer from this - they need maintaining, software needs updating, the database format could change, etc. A bit of work to get a text based system going is totally worth it ;).
For side-projects kanban boards, I just use Gitlab issues' kanban view.
2) I don't. If it doesn't fit into the above-mentioned 2 page document it's not important enough to be categorized. Categorisation (control) used to be a major source of stress in my life.
3) For academic paper/thesis writing I am actually working on a software to organize all research/quotes and then keep references to them in a "main document". Contact me if you'd like to know more.
What all these apps and lists get wrong is the following: What you know and what you need to do are highly related.
OmniFocus for ToDos/Reminders and synced issues from JIRA (work) and GitHub (personal projects)
Evernote for taking notes, capturing webpages/blog posts I want to save/read later
DevonThink for going paperless at home. Scanning everything that comes into the house.
Evernote (coupled with a ScanSnap document scanner) ->
Documents Financial Statements Contracts Receipts Code snippets Infrastructure notes Invoices / POs / other financial docs
Email Calendar Bookmarks (Chrome) Spreadsheets Docs
To do lists Reminders Project Management (lists of to-do lists)
Notepad+ for iPad Pro (then shared to Evernote)
For pretty much everything else, I usually just keep text files in ~/Documents.
- managed owncloud for calendar
- managed, but small and lovely email provider with catch all on my own domain
- semi managed hosting (shared server with multiple non root users and ssh, unique thing) for website and quick online sharing of text or screenshots (upload via shareX+ftp)
It is like Google spreadsheet and Trello made babies in my book when you utilize it's ability to add filtered Views and connect and link data across tables.
Attachments from other services, calendar views and ability to do low level formulas are other standout features imho and it just seems to fit how I actually think better than any service out there.
* Sometimes Google Keep for other random notes.
* Wunderlist for long term todos
* Apple Reminders for "remember the milk" type reminders
* Trello for work & personal projects
* Mint for budgeting
* Google calendar for calendar things
* Dropbox for cloud photo storage from my phone (may switch to Google photos at some point)
* Backblaze for offsite backup
My stack is becoming simpler as I declutter my life. On last update, I quitted Evernote and my notes are now managed on a text editor. I still use other tools for:
- collaboration (Trello, Slack, Gmail)
- finances (Spreadsheet: informal balance sheet updated every quarter).
- RSS (Feedly)
- image references (Pinterest: images with searchable descriptions. Unfortunately their search engine is bad, worse than Evernote's)
For personal life, I have lots of old things in mails in Gmail (also notes in mails to self), scan paper administration type things and put them in a password protected ZIP in Dropbox, plan books to read on Goodreads, store contact info on my phone, chess games in Scid and other than that I rely on memory.
For email, I've really been enjoying Google Inbox, the ability to sleep items is nice, and the reminder function is quite a handy TODO list of sorts.
But mainly it's the vimwiki for me.
* Dropbox, for text files and code. To be replaced. * recently, Google Docs, used as an ad-hoc wiki. * Google keep for random 'check this out later' notes * Pinboard, for web bookmarks.
I like to keep them separate.
A Wiki (http://dynalon.github.io/mdwiki/#!index.md) works great for my work related stuff, while org-mode (http://orgmode.org/) works for everything else.
I sync most important files between 3-5 devices with Syncthing. Devices are small and portable, 2x laptop, raspberry pi, netbook, I'm going to replace it with external drive connected to my Omnia Turris soon.
I have a few external drives with photos, music, films I liked, everything is evaporating online, torrent trackers are disappearing, content on Netflix is expensive and getting worse and worse, so I 'data-hoard' everything and backup at least twice once per month.
Like a year ago I opened a spredhseet where I log all my bills and it works for me as financial database, ~20 categories of expenses, each has some subcategories.
* Kanban boards Yellow sticky notes on a fridge.
* Asciidoctor - for Notes, snippets, documents, Projects. * SublimeText + Material Theme + Plantasks for daily to do and journal. (synced through dropbox) * Wunderlist - For grocery shopping list
Still looking for an optimal solution for calendar though, and other information I keep in Dropbox, iCloud notes and on paper lists.
I like OneNote a lot more than I like Outlook, but the integration is reasonably good. You can create tasks from OneNote that give you reminders in Outlook, which link back to the rich-text "source material."
Unlimited list items
Tags (colored, private, public)
Search and filtering
Its nothing fency.
* Emacs Orgmode
* nvPy (https://github.com/cpbotha/nvpy)
* Asciidoctor files
It took me a long time to find the right mix of tools that are ideal for my specific workflow. These are the tools I mostly rely on now:
- Outlook.com (with custom domain) for my personal email. I find Outlook's 'Sweep' feature a lot more feature rich than Gmail's filters. I have rules that automatically move newsletters over 3 days old to archive and then delete unnecessary emails over 10 days old automatically.
- I've grown to like Wunderlist a lot for personal tasks. It has its limitations but it gets the job done well. I don't bother with many folders etc. I just throw everything in the inbox and add due dates to it. Inbox is sorted by due date. Works great for me. Also, it integrates well with Outlook.
- Evernote is where is store anything that's remotely relevant to me. Again, I don't bother with multiple notebooks. I have 2 main notebooks - Inbox and Cabinet. All notes start in Inbox. When they are no longer needed for my day to day work, they are moved to Cabinet. All notes are meticulously organized with tags. I am contemplating having a 3rd notebook called Library (offline notebook) with all my favorite online articles tagged by topic. This might work better than a Wiki to be honest. I also use their browser extensions a LOT.
- I use aText snippets inside Evernote to log call notes, meeting notes etc. using a standard format. I have quite a few other snippets that I use in other applications as well.
- All my favorite articles are in Pocket
- All my personal files are on OneDrive. Work files are on Google Drive (it's easier to collaborate on Google because everyone I know uses Gmail / Google Apps).
- Work tasks are on Trello
- Photos automatically organized on Google Photos
- My code editor (Visual Studio Code) settings are automatically backed up on GitHub Gist using https://marketplace.visualstudio.com/items?itemName=Shan.cod...
I also use a few other tools occasionally but mostly rely on these for everything. Like most people, I wanted one tool to fit all my needs but I came to accept that it's just not possible considering the complex needs of each function. You might not think about it but, task management in itself is more than just a simple list of to-dos that requires a lot of programming to be done right. Stop trying to find a one-size fits all tool. Leverage multiple tools and integrate them together. For instance, Evernote talks to Gmail through a browser extension so you can always save an important email easily. You can also create more complex workflows using IFTTT. That would be the best way to organize yourself.
Evernote (I might be way too dependent on this)
* Google Calender
* Wunderlist for task today (life and work)
Rest of the info I store in .txt files in a folder.
I am not a busy man :)
Over the years I've tried many planning methods, with very low success.
I tried GTD for 7 years before declaring it a failure. It does have some good ideas that I still use, but the TODO management didn't work for me. I think it'll work only for people who have fewer goals than I do. It doesn't handle large lists very well.
Some things I kept from it:
1. Filing cabinet - Instantly useful from day 1.
2. Calendars are only for hard deadlines. Don't put stuff in there that you merely want to do. I know this is the opposite of the submission here. For me, planning everything in the calendar, including things I could ignore, led to a mess. Keep it for things you really cannot ignore.
In general, any obsessive time based planning like this submission fails for me. GTD is not time based. I prefer planning my tasks for the week, not for the hour.
I like the idea behind Kanban, but I do not think it fits most of our personal lives. Very good for certain work environments, though.
Pomodoro technique: It's good, but not really for task management. It's just a good technique to stay focused. Worked for a few months until I got used to it. Now it does not keep me focused and I can easily get distracted by the web, etc.
These days I'm trying this:
I think it works better than GTD, and fills the gaps in it. If you do not want to buy the book, a condensed, down to Earth version is available as the 1 Minute Todo List:
Personally, I feel the book is better than the PDF at explaining the rationale behind the 1 minute todo list. Reading it was very calming. It explained all the problems I had had with GTD and similar techniques.
1. If you cannot examine your todo list inside of a minute, it is too long. So spend a lot of effort ensuring your daily todo list is not long.
2. Urgency and importance are not the same. We're hard wired for focusing on urgency, so do not try to make a TODO list purely based on importance.
3. Every week, identify everything that must be done in the next 10 days and put it on your list that you'll examine daily. Things you decide not to do in the next 10 days, keep in your "list to examine weekly".
4. Every day, multiple times of the day, look at the short list and do tasks from among them. If new tasks come in, add them, but keep the list short (no more than 20-25 items). If your list is getting too long, identify things to move to the "list to examine weekly" and get them out of the way.
5. If something needs to be done today, put it on the top of your list!
6. You'll also have "the list to examine monthly" as well as quarterly.
Very simple idea - works a bit better than GTD.
I think my biggest problem is that I need to reduce the goals in my life and focus on only a few. I have more goals than time in my life, and I keep jumping from one to the other. No task management system will work until I do this. Tough decisions need to be made!
Then for every task I would ever like to do at some point in the future, from bucket lists type things to project tasks which aren't yet scheduled, I have a huge WorkFlowy list.
Then for ToDo that I'be actually committed myself to I actually use Google Sheets where each mini-project has its own row with the next action defined and a history of all activities in the context of that project (both previous next actions and other things I did for that project) on the rest of the column. That allows me to keep a 'narrative' of each projects and to group them by meaningful time horizons (i.e. on a specific day this week, next week, the week after, the month after etc.)
This sheet works really well for me together with some Keyboard Maestro macros and allowed me to grow my perfect system but it is definitely time for turning that into a proper app though.
Whenever I get around to making that app I'd also love to include daily, weekly and monthly checklist/self-questionnaires/journals for additional level of planning structure.
A couple of good examples from the site:
- park.io (from Mike Carson) makes $125,000/mo taking domain backorders; he essentually wrote tons of scripts that buy expiring domains on behalf of his customers for $100 and that allow customers to bid against each other
- Instapainting.com (from Chris Chen) makes $32,000/mo allow customers to commission artists to turn their photos into hand-made paintings; it took him years to get to this point, but it's almost all automated and he rarely has to step in
Indie Hackers itself is my passive income source, although right now it takes a lot of work on a day-to-day basis. I'm writing a blog post about that that I hope to put up on my timeline (https://IndieHackers.com/timeline) by tomorrow. I'm doing just over $1000/mo right now, mainly from sponsors.
This probably isn't the answer you're looking for, but in my view the average developer is much better off simply selling their time at the maximum rate and funneling the profits into a well-managed portfolio. The median outcome for this is much better than the story on most passive-income businesses.
I consider it a high success because for the amount of marketing I've done in the last 2 years (exactly zero), it still has paying users. If I did a few months of code improvements and marketing pushes I could probably increase that income a few times.
On the not-quite-as-passive side, I have an iPad game that I had basically left out in the Apple App Store for several years, where it sold with no involvement or investment on my end. Only recently, Apple required all app developers to resubmit their older apps or face delisting - in my case, it involved updating cocos-2d to support the latest ARM architectures, and making a whole lot of changes for everything that had happened in iOS in the past couple of years.
I also run a small API-as-a-service, which runs on reliable infrastructure, and doesn't take much real work to monitor and/or run.
I've wrote a book that teaches people how to code in swift from the ground up. https://www.weheartswift.com/swift-programming-scratch-100-e...
I've also made an exercise platform similar to codeschool/codecademy/etc that is available as a mac app using playgrounds or online by using our swift sandbox https://www.weheartswift.com/swift-sandbox/
The site generates about 30k/year in revenue growing at a steady pace. Operating costs are around 10k / year for servers/software/subscriptions/marketing.
I need to spend about 2 weeks yearly updating the book/app to the last version of swift. I also spend about 5 minutes per day replying to customer emails. It's not that passive, but really close. (ignoring time spent developing products/book)
It's odd. Most people who see it think it's clever and neat, and a few will buy, but when advertised, people bounce right off.
25% TSX (Canadian market) 25% S&P500 (US market) 25% MSCI EAFE (Developed market excluding Canada/US) 25% Fixed Income - cash,bonds,'high' interest savings account, etc.
Works for me...also planning to get a rental property at some point.
Every couple of weeks I ship product to an Amazon warehouse and do a bit of advertising on Facebook. It brings in around $40k/mo and 3-4x during the holiday season.
BitPixels currently makes ~$1k/month which is enough to cover the App Engine and DigitalOcean bills plus a bit extra. I'm working to find 1-2 more marketing channels that can drive sustainable growth.
I've tried a couple affiliate projects, but have not found a great fit yet.
It is completely free to use and my only source of income are Adsense ads on the homepage and some sparse donations. Since May, when the site was featured on the front page of Reddit, my audience has increased with a steady rate, along with my ad revenue (almost $500 last month).
I don't really do anything maintenance-wise, except for answering questions from my users. I work on it from time to time, mainly adding new features or new country/regions maps, and I still enjoy it, as it was my first real programming project (I actually submitted it as a final project for EdX's CS50x course!).
I lose about 25 bucks per months on website for artists that I built over the course of a few years in my spare time
- $3500 deposited, run since Jun 3 (~5 months), current balance is $5200 (48% total profit, 8%/mo).
- $5000 deposited, run since Jun 28 (~4 months), current balance is $4590 (8% total loss, ~-2%/mo).
- $3000 deposited, run since Sep 2 (~2 months), current balance is $3218 (7% total profit, ~3.5%/mo).
It's certainly not for everyone but it's an amusing hobby. I've made a net profit so far so I'm happy.
I came to this after stocks as the research I'd found seemed to show that foreign currency fluctuations were significantly easier to predict (and profit from).
By all their powers combined here comes 70$ a year.
If you only have two options... you should chose Number 2.
I would go to the him and try to get feedback..."I see half our team has left. What can we do to try to learn from this situation? " > if he says "not pick bad people" = walk away.
His answer will help you decide.
Don't even consider #1. It's NOT going to be worth it for sure.
Even if you got the other person out, do you think you could execute with just that one other person?
"Idea/direction wise it's going quite well" - Is it though?
P.S. Welcome to HN. Prefix your question with 'Ask HN' and it will go into https://news.ycombinator.com/ask which requires less upvotes to get attention
Some of the most mildly interesting:
V9543XD Spacecraft collision injuring occupant, subsequent encounter
W5602XD Struck by dolphin, subsequent encounter
X35XXXD Volcanic eruption, subsequent encounter
X52XXXD Prolonged stay in weightless environment, subsequent encounter
Y0881XD Assault by crashing of aircraft, subsequent encounter
I stumbled into Venkat's blog about two and half years ago and I'm still trying to find my way out. The rabbit hole gets even deeper when you look at his list of recommended reading. The material on John Boyd and OODA loops in particular has been bouncing around my head for about a year. Ribbonfarm quickly turns into a choose-your-own-adventure type of experience as it's very easy to bounce between articles and start looking everything that you don't know.
If you're interested in getting below the surface level of how organizations, teams, and business cultures work Ribbonfarm is the best place I know of that really digs into the details. If you're expecting the typical "be a leader, not a manager" platitudes, then you'll be disappointed.
Some of the thought that goes into answers is really cool. Good ones from recently are:
Some particular good ones are:
Meditations on Moloch is one of my favorites:
For me, a close follow-up is the SCP Foundation:http://www.scp-wiki.net/
All the internet debates I saw when the confederate flag came down got me really interested in how so many people could know TOTALLY different things about the most historically significant event in the country.
Now I've got about 12 books covering things in different ways (and there are so many more). Thanks to the Library of Congress and Google's efforts to scan books it's really easy to check citations as you read when you're having those "There is no way that's real" moments followed by "Holy crap! That's real?!?!"
The whole thing has sparked an overzealous interest in history, which is the subject that interested me the least when I was younger. Now I give serious consideration to pursuing a doctorate one day with the aim of being a History professor when I get closer to 50 (which is still a decade or so off).
Accident reconstruction/investigation videos. NTSB, CSB, and OSHA have some really in-depth ones:https://youtu.be/tMsjJWJFBbAhttps://youtu.be/gDTqrRpa_ac?list=PLUXYDid45duP-lg8Kh_hSw841...
Also, +1 for TV Tropes
Edit: Also, http://www.scp-wiki.net/ has some classics.
Nuclear Attack: https://www.youtube.com/watch?v=JZIynuYDRVA
Alien Invasion: https://www.youtube.com/watch?v=FKre_8rufrw
Clown Sightings: https://www.youtube.com/watch?v=ZUugY4VfgZc
I always find the EAS activation tone to be kind of bone chilling (which I suppose is its intention). I hear it so infrequently here in Canada that it really grabs my attention immediately.
Listening to the fake ones online probably makes it worse, though. When I heard the emergency alert tone come on the radio while driving from Toronto to Ottawa, I checked the skies for UFOs. Ended up just being a tornado warning. :)
Discover new command line utilities or combinations of them to solve various things. Learned all kinds of useful stuff. Things like I know but always forget about:
python -m SimpleHTTPServer
Then there is silly stuff like:
dd if=/dev/dsp | ssh -c arcfour -C username@host dd of=/dev/dsp
Which contains (apart from the obvious Murphy's law and Occam's razor) such pearls as the Peter Principle, the Dunning-Kruger effect, and Hofstadter's Law. 20+ tabs guaranteed!
The SCP foundation is also excellent, and The Digital Antiquarian is my new favorite.
Fallen London is a browser MMOCYOA on steroids, and it's glorious.
The Jargon File (before ESR ruined it with the latest round of updates) was amazing, and still is great fun.
Bash.org is another classic rabbit hole, although far from the best for that purpose.
And Youtube contains many rabbit holes, but my favorite by far is Tom Scott's youtube channel. Also of note is Tom & Matt's Park Bench, where he vlogs with Matt Grey on a semi-regular basis, Yahtzee Crowshaw's channel, where he used to play games with Gabriel Morton in his "Let's Drown Out" series, and Channel Awesome. Just, all of Channel Awesome.
This article  is a good start even though it's 6 years old. It's not vaporware anymore, I haven't checked it in a while, but it seems to be actively developed.
If you feel that you've learned enough programming languages that you have a problem finding anything new this may give you some dopamine.
I grew up when the History Channel was nicknamed the "Hitler channel". I've read Manchester's the Last Lion, Shirer's The Rise and Fall of the Third Reich, and will soon be ordering Ullrich's Hitler - Ascent. Saving Private Ryan is in my top 5 favorite movies of all time.
This is currently my wallpaper: https://upload.wikimedia.org/wikipedia/en/thumb/5/59/US_Army...
For example, "Vaccines to prevent influenza in healthy adults" concluded, in part: "Vaccination shows no appreciable effect on working days lost or hospitalisation."
 http://www.cochrane.org/evidence http://www.cochrane.org/CD001269/ARI_vaccines-to-prevent-inf...
The last one is great. I once discovered this gem:
The other one I haven't been able to track down. I'm hoping someone here can tell me what happened to it. It was an art site called "The Place" hosted by a university in Canada. It was a mixed media site with art, poetry and short stories. Does that ring a bell for anyone? I loved that site and wanted to visit it again many times. But "The Place" is a difficult term to search with these days.
* Art of the Title, in-depth analyses of movie title sequences: http://www.artofthetitle.com
* Damn Interesting, it's damn interesting: https://www.damninteresting.com
* LEGO subreddit, do I need to say more? https://www.reddit.com/r/lego/
My current fav is Sixty Symbols, endless very interesting videos: https://www.youtube.com/channel/UCvBqzzvUBLCs8Y7Axb-jZew
Also PBS Space Time, MinutePhysics, MinuteEarth.
Sample: https://youtu.be/whgu7nX0sZc?t=522 (debunking some Shostakovich myths)
Greenberg is a gifted speaker, a composer and and music professor himself. He's sharing with us a burning passion for everything classical. If not for the informational content, then at the very least it's worth listening to him in order to infuse with his passion.
After taking some basic notions about composers and music genres, I started a YouTube safari for unknown music and composers, I am 7 years into my search already. I listened to hours of classical every day since I started. YT is a treasure trove of historical recordings, you can do comparative listening and refine your listening abilities.
There are so many composers almost nobody heard about, even professional musicians, that it's mind boggling. After all, there is a long history of classical music, hundreds of years in the making, and the level attained by Bach 300 years ago was already (and still remained to this day) cutting edge.
Imagine how interesting it would be to browse videos and papers from 300 years history of computer programming. We are overwhelmed even with the production of the last decade. Classical music has such a wonderful deep history that is endlessly entertaining.
A list of Robert Greenberg's courses is here: http://www.thegreatcourses.com/professors/robert-greenberg/
I could read that thing all day. It's been around forever, and it reminds me of what the Internet used to be...lots of useful content, simple layout, "hypertext". LINKS!
He's been maintaining it for years and my go-to source for anything laser related.
The SCP foundation has been mentioned, but a lot of people don't know they have a sister site. http://wanderers-library.wikidot.com
The wikipedia articles about unsolved problems in physics and emerging technologies are huge click holes for most nerds:
Reading about neolithic archaeology is way more fun than you might think. 10,000 years ago people built these huge sites with literally stone age technology, and the nature of their rituals and beliefs are mostly unknown.
Shodan is a search engine for devices on the Internet. Looking at other people's queries is a good way to get started. Every time you think, there's no way someone would connect one of those to the Internet, you find out that at least 10 people have gone and done just that. https://www.shodan.io/explore
Running an NTP server in the public pool gives you the IPv6 addresses of all kinds of whacko IoT stuff. Every once in a while p0f can't figure out a TCP/IP stack that's connecting to my server, so I connect back and there's sometimes a really weird device with an open telnet or HTTP port or something. About once a month I have to call someone to tell them that they misconfigured their firewall when they turned on NTP and I'm logged into an air conditioner on a cruise ship or another bizarre combination of thing and place that I never thought I'd ever say out loud. Browsing the logs is a never-ending source of amazement.
PSA: connecting to public NTP servers exposes you to people like me, don't do it unless you have to.
Surprised MF has not been mentioned, yet.http://www.metafilter.com/
Also search youtube for conference video playlists.
I have my mythtv set up so downloaded conference videos show up as a channel just like a recording on my mythtv system, so I can just sit on the couch and watch a clojure conf or whatever just as if it were a recorded PBS program. Very convenient.
As a side issue I raided archive.org for hilarious black and white silent films of Buster Keaton who was quite a comedian about a century ago.
The Digital Antiquarian - a very well written running history of computer games, especially adventure-y ones from the beginning to about 1989 now.
It has links to architects and those pages in turn have links to beautiful buildings. Also the wikipedia pages of art museums tend to be awesome timesinks as well, you can click through every artist and all of their famous artworks.
I don't use YouTube at all for music recommendations/discovery but every once in a while, I'll chance upon something amazing.
A comment on an upload of Seventh Wonder's The Great Escape led me my discovering Shadow Gallery's First Light, which I enjoyed almost as much. (Almost. SW's track, based on Henry Martinson's 'Aniara' poetic cycle is, in my opinion, at another level. Martison was awarded a Nobel prize for his work but unfortuntely commited suicide as a result of fierce criticism against this decision).
I also love ribbonfarm, previously mentioned in the thread.
Useful sections include the one on tips to speed up mowing the lawn. Less useful ones focus on things like how to open soda bottles.
The nlab is a remarkable mathematical resource open to everyone. I've been using it to contextualize my mathematical learning since I was an undergraduate.
* Rogue waves (it is not that deep of a hole but for some reason I find it interesting).
* Knot theory and category theory (again not sure why).
* Social Psychology on wikipedia
* Ben Thompson's Badass blog (more for humor and a little old now. not sure if it is updated) 
* If you are an older mid to late 30 something like me X-Entertainment  used to be an awesome rabbit hole (no it is not a porn site). Sadly it is very very broken rabbit hole with collapsed tunnels all over. The author's penchant (Matt) for 80's crap ultimately succumbed to complete utter disorganization and proper backups. It is a 404 wasteland. I recommend googling "x-entertainment and he-man" (yes it is scary to google such terms but trust me)
For linear algebra, I have been watching this MIT OpenCourseWare lecture series taught by Gilbert Strang: https://ocw.mit.edu/courses/mathematics/18-06sc-linear-algeb...
MITOCW is a great place for anyone looking to expand on their current knowledge base and an alternative for those seeking to take a course that they did not have the opportunity to take in college.
(disclaimer: I work on Are.na...it still contains my favorite internet rabbit holes, though.)
Related, for maintaining a path during rabbit hole seshs: https://pilgrim.are.na/
Even if you disagree with him on details, if you have similar taste, you can basically look up any album and see which songs might be hidden gems. It's also amusing to read his take on just when a particular band began to decline in quality.
There is always something stimulating and new in the archives, which go back years for some programmes.
Also, every episode of "Short Cuts" (available above) is usually something amazing that you've never heard of. "Resistance" and "Rivals" are both great starts.
This is a very under-the-radar organization funded by the whos-who of Silicon Valley. See the "Billionares Dinner" they host yearly in Napa.
They have great resources such as Philip Tetlock x Daniel Khanmen Superforcasting mini-course and thorough discussions by great thinkings around tech and ethics.
This is the rabbit hole you've been waiting for. Be warned!
The title truly says "A meaningful inventory of Life".
I get lost in the labryinths in that blog covering science, philosophy, literature & art.
1.1) My current favorite is reading about the Warhammer 40k universe: (http://warhammer40k.wikia.com/wiki/Warhammer_40k_Wiki and http://wh40k.lexicanum.com/wiki/Main_Page)
2) reddit.com is a never ending source of entertainment if you know how to use it:
2.1) Go to any sub which kind of interests you and sort either by "top" or "controversial" for "all time". "controversial of all time" is especially interesting if you apply it to subs like /r/relationships (if you are into that kind of thing).
2.2) Start with this post on interesting subs: https://www.reddit.com/r/AskReddit/comments/28il5s/what_is_a...
/r/UnsolvedMysteries and /r/AskHistorians are by far my favorite subs at the moment
2.3) /r/ThreadKillers/, /r/DepthHub/, /r/goodlongposts/ are also a good sources of interesting posts
3) If you are into DIY, building boats, woodworking, metal lathes, surface grinding, scraping, and stuff like that, then you will and endless supply of videos on YouTube.
/r/ArtisanVideos is a good source for interesting videos. If you want to find your own content you should have a look at this list: https://www.reddit.com/r/ArtisanVideos/comments/3v264a/meta_...
My favorite channels are This Old Tony (his newer videos are incredibly well made and very funny if you like dry humor. Check out his video on how to cut threads on a lathe https://www.youtube.com/watch?v=Lb_BURLuI70), Abom79, Clickspring, Keith Rucker, Keith Fenner, Stefan Gotteswinter, Walter Sorrells, ...
4) Reading trip reports on https://www.erowid.org/ is also a good way to waste a lot of time
some choice links Blaise Pascal's Privilege http://history-computer.com/Library/PascalPrivilege.pdf
Ada's Sketch of the analytical computer http://history-computer.com/Library/Ada/Sketch%20of%20The%20...
Bastard Operator from Hell
https://en.wikipedia.org/wiki/Limit_superior_and_limit_infer...--> https://en.wikipedia.org/wiki/Partially_ordered_set--> https://en.wikipedia.org/wiki/Binary_relation--> https://en.wikipedia.org/wiki/Real_number--> https://en.wikipedia.org/wiki/Cauchy_sequence...
Even if I think I know what's being discussed in the article, there's always some interesting extra detail or alternative way of explaining things that's worth reading.
San Diego Air & Space museum archives. Currently they have a quarter million photos there and they're uploading new ones constantly. They have received a huge number of collections from very interesting people. Where else can you see original photos of Glenn Curtiss' first airplane, crashed zeppelin skeletons from World War I and hyper advanced Convair Centaur rocket stage manufacturing? Fascinating people in the photos too.
Try this one for starters . The earlier ones are much more hardcore.
 http://math.ucr.edu/home/baez/twfcontents.html http://math.ucr.edu/home/baez/week236.html
Freeman's Mind: http://www.accursedfarms.com/movies/fm/
I'm actually wary of woodchucks because of that now :D
Another older one: (somewhat NSFW horror stuff): http://deathandhell.com/
TBH my current rabbit holes are YouTube and repeatedly clicking "random" on http://www.smbc-comics.com/ .
edit: Another couple old haunts:
Even more recently, I've been indulging some nostalgia related to my time as a firefighter by spending a lot of time on Youtube looking at videos of structure fires from around the world. It's kind of addictive to play "arm chair incident commander" and sit there going "why'd they stretch a 1-3/4" line instead of a 2-1/2?" or "why didn't the first in engine lay their own supply line" or "why aren't they using elevated master streams here", etc., etc., etc.
Stories about the development of the original Macintosh.
So many gems in this collection, they get submitted to HN from time to time.
Of particular interest was the bankruptcy of Target Canada:https://www.alvarezandmarsal.com/target-canada-co-et-al/moti...
The affidavit of Mark Wong, then General Counsel for Target Canada, in support of the filing, provides a lot of insight into how a large corporation would structure their business endeavour into another country:https://www.alvarezandmarsal.com/sites/default/files/Affidav...
First off: No Such Thing as a Fish: https://www.youtube.com/watch?v=TO6_PRaY3aY Or the podcast: http://qi.com/podcast
I have an interest in historical cooking. This one I've spent hours watching, despite the occasional advertising:https://www.youtube.com/user/jastownsendandson/featured
World of Batshit - and other stuff by the same author - got me through a bit and I occasionally pass it onto others. https://www.youtube.com/playlist?list=PLmWeueTF8l819bt3sC72s...
These two channels together will give you everything you need to get started and document close to every known glitch in the pokemon games. Well that and perhaps TRRoses old website for background on what exactly is going on in these videos, but that got taken down. Bulbapedia probably still has what you need though:
A favorite example of mine:
There's a lot of stuff going around and some of it seems like wild conspiracy nonsense, but the more you dig into it, the more entertaining it gets.
This is a Tumblr blog going back years of extremely disturbing medical imagery and art of the same style. Oftentimes there's almost no context given to the pictures other than a name of the author or a title which makes them that much weirder. The images also tend to be associated with fascism or BSDM. I've spent at least a few hours trying to find more about some of the pictures because they were just too weird to go without explanation. The guy has one post about how he really values quality and obscurity in his images and nothing else; no explanation as to who he is or why he collects such horrible and terrifying art. I've always wanted to email him and ask what the hell is going on but I'm kind of scared to know.
Obviously don't click on the link if you do not like gore.
Some games have a ton of unused content left in them
the you open your right eye:https://en.wikipedia.org/wiki/List_of_unsolved_problems_in_m...
and then you smile at the world:https://commons.wikimedia.org/wiki/File:Complexity_Map.svg
Patients given excessive doses of radiation. Lost and stolen troxler gauges and their recovery (or not.) Reactor SCRAMS and their various causes, artfully downplayed with technical jargon. Drunken contractors escorted off reactor sites. 30 year old flaws discovered in power reactors.
Someone's got to read this stuff...
So from now on I will stop reading and only take in consideration those links who will be posted in response of this comment, if any. Let's see if magic, or coincidence, works!
I advise you to do the same! (If only we could come up with an acronym for this thing!)
Fun to just peruse the stories and spend an hour or two reading. Some of them leave you shaking your head, others leave you feeling warm and fuzzy. And yet others make you want to defenestrate printers... Who knew how much fun* people had in tech support and IT?
*sarcasm for effect
Also enjoy reading the Bastard Operator from Hell stories: http://bofh.bjash.com/
I also love watching philosophy videos on youtube.
I also highly recommend BBCs "In Our Time" series. Quality broadcasting covering innumerable subjects about history and philosophy.
Reddit, Hacker News and more in one readable page.
Many old things, but most ideas are timeless.
Definitely this one.
Very good at exploding conflations and weakly argued conclusions by those who would popularize and construe results in neuroscience.
I could read this for days.
Another honorable mention is that I've been having a great time learning about AI techniques competing at codingame.com. It's something that's easy to get into, and hard to leave, for me.
biblioteca pleyades: http://www.bibliotecapleyades.net/
You can click thru 60 times!
Reddit can be, depending on your community.
But I miss Kuro5hin.
Search anything medical. Don't know what a word means? Look it up on wikipedia... recursively. Read cited studies. Read studies that cite studies. You could spend the rest of your life reading this stuff. I've been doing it for years.
The most remote inhabited island with a strange history with a few founding families, an exodus because of a volcano, an isolated economy/society and research into asthma as a genetic condition
Some's opinion, for which YMMV, but some of the stories... Like the one where he served a warrant on a meth lab while wearing a pink gorilla suit. I nearly suffocated laughing.
Google Scholar, legal edition
UI/UX is terrible now compared to early days but I can still get lost with hours of learning from some incredible writers.
http://trenchescomic.com/tales/post/9810 (dead, but a lot of content there)
It's a puzzle solving website. It isn't updated very regularly nowadays, but all the old "Theorems" are still there.
It gets weird.
https://mindhacks.com/ -- Neuroscience and psychology news and views.
It's an amazing compilation.
The Getting Stronger blog is another wonderful health and fitness blog which focuses on training the mind to thrive in difficult conditions, though it has really amazing insights on diet and training as well: http://gettingstronger.org/about-this-blog/
It's not high-brow by any stretch, but is's a great time waster.
Now, you wouldn't call that slow as molasses.
Quite nice now and again.
Just don't go there.
ps: sci-hub too
But at the time, all I knew was a bit of Python. And while I could've learned Java, I figured that being yet another Java programmer in the marketplace, but with no experience and a liberal arts degree, was probably going to get me nowhere.
So I decided I had to learn something emerging. Something where there was nascent demand but not much supply. I chose Clojure because it looked weird, and all these bright people were talking about how great it is. I invested a couple of months learning it deeply, open-sourcing my side projects, and blogging about it. I also spent that time learning non-programming fundamentals.
When I felt I was ready, I started reaching out to people in the community and companies on "Who's Hiring" threads mentioning Clojure. Within a couple of months, I landed my first full-time programming gig at an investment bank.
I know that if it wasn't for Clojure, I wouldn't be here today.
I have been developing web applications on and off throughout my now 20 year career - all the way back when Applets were all the rage. Spent time with a host of technologies and approaches: JSP/Servlets, JSF, Struts, GWT, Backbone. React has been hands down the most productive technology I've used in web space. I'm so productive using it that I now enjoy doing front-end development again. I've recently moved away from ES6 via Babel to using TypeScript with React and have been even more productive as I'm now catching more bugs either in the editor or at 'compile' time.
I'm now looking at Elm.
There aren't many extensive tutorial materials available for K, so when I decided to learn it I pored over the reference manual carefully and wrote an interpreter to try to match the spec. I built programming environments on top of my interpreter which are probably only suitable for my own use, but they make me deliriously happy to use. I made connections with both seasoned K programmers and other enthusiasts through my open-source projects with the language. Eventually I was approached with a few offers, and I am now gainfully employed by a firm which uses K more or less exclusively for backend work.
If you find a niche that makes you happy, and you're willing to invest the time to develop an unusual area of expertise, a career can follow naturally.
I saw every config file differently, trying to see how the lines between config and code blurred. Method abstractions and bottom up design became much easier. I appreciated all those prefix-evaluation assignments in college. I found a new respect for languages with good REPL's. And finally, it opened my eyes to computing history, where I discovered newer is not always better. The elders of old really got many things right.
It took me several months to develop that muscle memory to increase my productivity. Today, I can log in remotely to my AWS instance, edit a few files and do it all without leaving the terminal. I hear similar benefits on the Emacs camp too.
The steep learning curve was well worth it. I don't think I've shipped any source file without opening/editing it on Vim before.
I'm yet to find a language that allows fast prototyping while being readable six months after you wrote it - I used to love Perl, it is on pair with Python on productivity and blows it out of the water in performance, but I can't say it is easy to maintain.
C# is a pleasure to work with. It's got generics and good support for asynchronous I/O. .NET Core is also very good, it's dead simple to spin up an API serving backend using .NET MVC.
Lastly, I think the community is great. I have jumped into a couple different projects - one is a MySQL driver and another is a MySQL implementation of the EntityFramework ORM. I was able to contribute after just a few weeks of working with C#. Microsoft seems very dedicated to continually improving the language as they develop in the open on GitHub and take user feedback.
Early in my career I noticed programmers around me with 10+ years experience still typing the "preying-mantis" way (thumb+index+middle fingers pecking at the keyboard, head frantically bobbing eye-focus between keyboard and screen).
I thought to myself that if I had the same experience as them and could touch type I would be immensely faster.
I was right. Typing faster = coding faster = learning faster.
That doesn't mean I do everything in JS, but I find I like the language a lot more than most of my peers.
I remember finishing college in the late 90s and coming across Emacs (actually, XEmacs back then) for the first time. What a weird editor, how could anyone even want use this voluntarily? Until some coworkers at the place I worked back then showed me some tricks. The touch of enlightenment hasn't stopped ever since and probably never will.
- Django has been simply amazing to work with. It is the framework with which I measure other frameworks. Its far for perfect, but it has the features I need. It can also be customized to most requirements. Sure, it has downsides, but they don't get in the way as badly as other frameworks.
- React took what I leatned from Angular and just made it easy to use. Which was my #1 issue with Angular. It was too bloated. React is so much simpler.
- Visual Studio Code made me open up to newer text editors and IDEs. I've mostly been a Vim user. But VSC has proven to be very nice to use. I have not abandoned Vim, but am doing more JS dev work on VSC.
- The Django rest framework is super amazing. It just works so well with Django and allows me to build great APIs without a lot of overhead. I wish there was something like it for Java.
Then a friend offered me a software development job that I couldn't turn down, developing in a language I hadn't used before: Perl. It changed my life. I could never handle large projects before because it was too much code and too much hassle to manage it all, but Perl is so good at letting me express what I want the computer to do that wasn't a problem anymore. Perl allowed me to make software development my career, instead of just one of the tasks I did as part of my career.
Sadly, Clojure has left me in a position where Python + Django in my day work disgusts me with its mutability and unnecessary OO semantics, but I don't have much choices in my area. Ignorance can be a bliss sometimes!
This taught me: Find the tool that does the job. Even if you think the tool looks stupid.
(Also using IntelliJ IDEA for the first time in 2002 - opened my eyes as to what was possible for an IDE, and what was possible to do with Java.)
Go recently because it was my first truly compiled, statically typed language after almost 7 years of working (I know, right?). My entire career consisted of Python, PHP, JS, Ruby - you get the idea. Go changed that. On top of that, it is a very biased language that forces it's coding standards on you. Not all are good but you learn a lot about the design decisions behind them and why things work in the way they do.
Plus after working with it for a while, even other compiled, statically typed languages like C++ became a good chunk easier.
And as a extra, very recently: Elixir. Loving functional language, Elixir taught me erlangs genservers and process manage and oh boy! I don't understand why that's not the default tool we use for webservers all the time. It just seems like a natural fit vs other languages. Thanks to supervision trees, it is very easy to write fault tolerant, highly concurrent applications that span multiple servers, without the need for extra tools.
For example: You can spin subprocesses up at any point, communicate with them, kill them, let them crash without fearing that anything else in your application is affected. When previously you needed a queue server, a cache server, background workers, service crash recovery, long running requests processing and more to build a concurrent system, Elixir makes it very easy to implement these things extremely easily as subprocessed without the need to leave your application and grab tool X (upstart/cron/rabbitmq). Worried that something will crash? Just let it crash and the supervisor restarts it. Worried that the supervisor crashes? Then the supervisor of the supervisor restarts the supervisor.
Your background worker process is on server 2 and you want to dispatch something from server 1 from the same mesh? Just use it's PID and let BEAM handle the rest. Same for Queues, Stores, Caches or anything really.
I am highly convinced that learning Elixir is something every web engineer should learn.
Common Lisp and Haskell turned me into a grumpy, unemployable mess. Terrible ROI.
I went 180 and now I'm starting to appreciate (and making money with) Go.
Today the learning process is far better and smoother using Elixir and Phoenix. Jump in and give it a try!
Arduino takes care of setting up the peripherals, gives easy to use functions to control the chip, and hands over the keys to a fully ready C++ build chain. When I finished my first project I was hooked and tried to use them everywhere I could for prototyping, and always aimed to make my hardware libraries as easy to use as Arduino.
Tool-wise: Vue.js (a single file for code, templates and style is refreshing), Now by zeit.co and Sublime Text are my three hombres.
And hot-reloading, for all those hours it saves me....praise be to Websockets.
I credited it for don't fear and be good at use RDBMS. Also, the most productive dev environment ever.
To show me how good syntax and well design API make the difference. Also, I'm mostly on python after all this years so is my main income generator!
Delphi (until get too expensive and all the inestability...)
What RAD is. I was able to circle around some local competition that waste time with .NET or others tools. Better than any else for GUI, far better for DB development that many (except FoxPro, of course).
After the above, is from bad to worse. ALL other dev environments provide sub-par experience, more dev time, worse at RDBMs development, etc.
My main differentiation and second income generator. In my country (Colombia) the developers are mostly on Android. I'm one of the few that do "native" iOS development.
Because is my gateway to the ML family, AGDTs and almost as good as coding in python, except for the use of type inference.
Most of the time I saw it as a tool to use, when CSS wasn't powerfull enough.
After using NodeJS I was blewn away. NPM alone was a killer feature PHP was missing.
Functions as objects that can be passed around and closures introduced me to functional programming.
Then I learned Eiffel. Preconditions, postconditions and invariants, in a language with garbage collection. This was obviously a big step up from C++, and I spent the next decade trying to get everyone else to see it too.
As Java took over the world I looked around for the next big thing after OO, and decided to learn a functional language. Having seen how C++ made a mess of the structured/OO hybrid I went for the purest language available and learned Haskell.
So now my hobby language is Haskell, and I'm hoping to make it my professional language some time. Once you learn Haskell you realise that every type system in every other language you know was designed by someone who didn't understand what they were doing. You are also finally cut free from the Von-Neumann architecture, so you can pick whatever form of computation best fits the problem you are trying to solve at the time.
First Vagrant, then Packer, then Consul, and soon Vault and Terraform. Everything I've been wanting to do for years, I am now doing thanks to Hashicorp.
Suddenly CSS became fun again and my time designing websites went down by a guessed factor of 5.
'Wow' moments: Working in a small publicly listed company early in my career showed me how inefficient and corrupt the stock market is, gave me a brief general education in business, and showed me a lot about the nature of international business. Travel showed me how there was an alternative to decades of 9-5 work, that I had nothing to fear from failure, and that I could actually afford to start my own companies. Starting my first company from concept to break-even revenue was a great learning curve.
Best decision: Moving to China. It gave me the opportunity to start a company and learn loads very quickly.
My biggest moment was when I finally learned and understood how artificial neural networks (ANNs) - and specifically back-propagation - actually worked.
It happened in the fall of 2011 - I took on the challenge of the Stanford University sponsored AI Class (Thrun, et al) and ML Class (Andrew Ng). I wasn't able to complete the AI Class due to personal issues, but I did complete the ML Class. In 2012 I took Udacity's CS 373 Self-Driving Vehicle course (and completed it) to "make up" missing the rest of the AI Class.
But it was the ML Class that really drove things home; learning and using Octave was a revelation for me (vectors as a primitive? COOL!) - and learning to think on how to parallelize problems for that (and then later learning that an ANN was just such an application) - woke up a lot in me. Finally - a practical use for a home Beowulf cluster!
These experiences have led me to this year, where starting on November 28th, I'll be participating in Udacity's Self-Driving Car Engineer nanodegree program. I believe that as we move forward in the future as software engineers, knowing and understanding ML and AI algorithms, etc will be something employers will increasingly want and expect of developers. I'm keeping my skills current - you should too.
/43 years old, been professionally coding since I was 18 - and coding in some manner or another since I was 11 (yep - TRS-80 Color Computer w/ 16k FTW!)
Forth also made me go "wow". I really understood that way of thinking. I also think Forth is amazing for its ability to keep you from getting discouraged by allowing a problem to be broken down into new words. Postscript was my Forth "wow" combined with art.
Learn a text editor deeply (Sublime) made me extremely faster than all my colleagues.
I, as an addicted to efficiency, found my job a lot funnier everytime I learn something that makes my common task less time consuming.
I haven't touched FoxPro in over ten years and work primarily on mobile now. But a stint at Microsoft opened up all kinds of opportunity, and that wouldn't have happened were it not for a small company in Toledo, OH cranking out desktop database software. Otherwise I'd probably still be in Indianapolis cranking out CRUD for some insurance company.
When CSS and "DHTML" came around, its potential was starting to dawn on me. Others saw it first, but that was when I started to approach it in earnest.
It's pretty crazy to see how far this little scripting language running on a Netscape browser has come.
Seaside as a completely different approach on how to develop web applications which turns your thinking upside down when you are used to a typical request-response workflow.
Django as a godsaint after working on a medium-sized pure-php project without any clear structuring.
When I landed my first job back in 2012, I used to be a PHP developer. As obvious, working in a startup will force you to be a jack-of-all-trades, I started picking up SysOps (Linux, Web Servers, Email Servers, Deployment..etc) tasks along PHP development.
In mid 2013, I stumbled up-on "Docker" and I started learning it immediately. Mostly, I used it to solve dependency and packaging issues for my PHP projects. Soon I became fluent in SysOps tasks too.
Early 2014, I wanted to get into a new job. But not sure to continue as a developer or get in-to DevOps. Instead of doing the same old boring development, I chose to be a DevOps and the opportunity was provided because I have working knowledge in "Docker", which is not an easy find at that point of time. Actually I got a pile of opportunities and landed in the best among them. After 2 years passed by now I'm at my third job in a different startup, which again I work mostly with Docker.
By looking at the Docker's growth and usability, I could even say, it's gonna get my future job also :)
Made programming fun again. Don't seem to get to use it at client sites as it's too extreme an approach :(
Fast forward 7 years and a couple of increasingly lucrative and interesting jobs...
Scala. Getting a bit bored with the Erlang ecosystem, got offered an (even more interesting and lucrative) opportunity at yet another startup, that was running on Scala/Akka/Reactive Streams. Jumped at the chance and went through what was probably the most grueling 6 months learning curve I've ever been through. Got to appreciate the benefits of a strong type system and a thoroughly modern/flexible language. Also gained a renewed appreciation for the simplicity and practicality of Erlang and it's virtual machine :)
That's where I am now. What comes next, I am not sure. Maybe Haskell or Clojure. In any case, after all this it feels like I could handle anything anyone throws at me.
I don't use Clojure as much any more but everything I learned has had a lasting impact and much of it trickles into my other work now, in other languages (mainly C++).
I work on many projects with many different modules, languages, databases... What this enables me is to be one single command and a seconds away from completely switching context while still maintaining basically identical environment. It encourages experimentation because you're language/project agnostic and it reduces friction to getting started which is a great boon for productivity.
First it was a weekend project, then a full project at work, now there is a full team working on it and my title has changed to "Data analyst".
All in 6 months.
I learned C and C++ in university. It was all either procedural or object-oriented.
Lodash's "chain" was my gateway into functional programming. I am avoiding getting too deep into that because it feels kinda cultish the way adherents claim its superiority, but it has nevertheless impacted the way I approach problems.
I'd messed with some of the ESRI server products and knew basic SQL but discovering PostGIS was a paradigm shift in terms of being able to easily and efficiently run more advanced spatial analysis in a database.
- fabric, the python library: https://www.digitalocean.com/community/tutorials/how-to-use-...
- sublime text package manager
I came back to it quite recently and it's advanced a lot, although I use its C++ sister product, C++Builder, which pairs the same UI tech with C++, a trick that is hard to pull off (Qt manages it, through many clever C++ tricks; C++Builder does it through a couple of neat language extensions which I feel is cleaner overall. I really like it. This year I started working at the company making it, so full disclosure there, but I work there because I like the tech so much.)
Another wow moment was Perl, and its just three data types.
Currently I think that the most mind changing languages for me were SQL, and C++. I don't know why, I just love Postgres, and I love the C++ speed.
What I like is different: I like Python, Postgres, SQL, Java, and I'm learning currently is the newest C++, and a little bit of Rust.
I'm not sure why I still have problems with understanding Haskell.
However when I'm looking for a remote job now, all that doesn't matter. I get some strange interviews with 10 minute algorithm tasks (if you don't remember the implementation of this task, which you have never seen before, you have no chance to write it). Or even recruiters not understanding the answers to technical questions they ask.
And most of the job offers I get require 10 years of writing in one language, so I'm wondering if I did good learning all those different things.
Then ActionScript 2, which was the short lived phase of Flash where it evolved from a vector toy for making spinning logos into a JS-like language (they were in the ECMA committee and everything), but you could do all sort of crazy animation and sound too. Sadly ActionScript 3 and Flex ruined it all for me, turning Flash into Java. But it was fun while it lasted.
Luckily by then JS was reborn thanks to jQuery et al, and the next "wow" moment were all the APIs known collectively as "HTML 5" - from WebAudio to WebSockets to Canvas etc.
And finally ES6 / WebPack and React / Flux, finally we could break away from the MVC model that never sat well within a browser environment, and with a modern language to boost.
Six years ago i started developing android mobile apps, always in java! So java was my love and game changing language and i still use it today for both web and mobile projects (Spring is a beautiful and easy to work with web framework).
Being able to fully control a remote computer as if i were in front of it is a most.
The distributed nature of git still amazes me.
-> multiple cursors & fuzzy search
Sublime Text pioneered multiple cursors and fuzzy search over all the options of the text editor, now most modern editors have included it. I use Visual Studio Code btw.
Web development, deployment and configuration have been vastly simplified with this open source project.
-> NoSQL databases, in particular MONGO DB
My view of data fits way better with non relational databases, and not having to deal with migrations is a gift.
On frontend I think Polymer and Web Components are a game changer - very low entry barrier and they feel like a proper way to do web development where everything is encapsulated.
Pow allows you to link an app to open it as http://app-name.dev
Powder is a rails gem that automates the process for you.
Then Python, where I understood that a language doesn't have to be as toylike as TCL to be extensible and embeddable.
PHP, JAVA -> RAILS, PYTHON, JS
LISPS, ML family, SCALA, GO, RUST
Docker and containers for packaging, shipping, and sharing.
Kubernetes because it fundamentally changes the way we design and build systems.
ML (and now Cozmo+RL) cause future.
Tightly coupled, distributed DB queried with prolog
Tightly coupled UI engine
Everything under emacs
Smalltalk - Some of the best ideas in CS that were warped, misunderstood, or ignored. Commercialism at its finest killed this and ruined the ideas from it. The productivity in this language was huge for me and the environment was and still is a wow. The aesthetics have almost always been awful though so it really bugged me that no one ever gave a practical instead of theoretical effort to improve here. The day I saw things like Gemstone Smalltalk dumping entire running states into a bug tracker and then clicking on the issue and being thrown into the debugger was one of many incredible moments. A lot could be improved, but like Lisp, lots of imitators and few equals. In terms of impact, this really led to me truly learning OOP at a higher level and made me think about code entirely differently - as a living, breathing, environment that was somehow more real than what Lisp offered. The separations from the OS into its own world made it both incredible (I still feel like using files 1-to-1 for code is nonsense) and a pain to use (ex: integrating proper source control and existing tools because of files issue).
Clojure - Finally a practical Lisp-like experience that I don't feel like a crazy person trying to "sell" to coworkers to use on a project. Lots of things here I don't like, but even the author of the language agrees with me on most of those. I like the pragmatism, honesty, openness about what is good/sucks, and more here. It's really productive for me and I feel less in Smalltalk and Lisp land. The moment was like, "Rich Hickey, OK, this guy totally gets it."
Emacs - I hated it at first, but when the concepts started to sink in for me, it made so much sense. Licensing and politics aside, it's pretty incredible. I wish there was less crust or a way to magically rewrite it and have all the good add-ons also magically rewritten. It truly is its own OS for better or worse like Smalltalk, and can be used and abused accordingly. It just still makes so much sense to me in both Smalltalk and Emacs that I'm writing code and I can use code to do things to my editor, both in terms of add-ons and while it is running (ex: if I need a special toolbar, window setup, whatever).
Acme - It's an ugly editor, but wow it's full of great ideas. I didn't particularly enjoy the mouse chording but everything else is amazing. The relationships it had with the system using it in Plan9 just made it so powerful and full of possibilities.
Overall, my best decision to improve my work was to stop listening to the masses and just try to do my own thing, with confidence. That doesn't mean just anything, rather it means follow my instincts and balance things with a healthy dose of pragmatism and extreme skepticism. That also meant ruling out new and shiny things as well as old and awesome things like Smalltalk and Lisp on many projects. Once I learned the difference of being a contrarian vs. an educated independent thinker, I became both tormented by how terrible most software is and encouraged to think completely differently and abstractly about it all. Still trying to do some great things with that attitude, and it's more the non-technical daily life struggles that are the real challenge.
And thats for real complex projects, not making LED`s blnik.
Next, JSP and Servlets, JDBC, and MySql, along with POJOS. Made it easier to write consistent, clean code, and along with the Java Cookbook, programming was a lot of fun for a while.
It all almost ended with JSF, Struts, Struts2, Spring MVC, Spring DI, Pico, Wicket, Tapestry, Hibernate, JPA... these were often the product of good minds and talented engineers, but, yeah, this almost ended my career in programming. I remember seeing a sysadmin and unix book on the desk of a web developer. I asked what he was learning for, and he gestured to a long row of Java related web books on his shelf. "I just want to be a systems administrator", he said, "I can't deal with this churn anymore." What had been fun now required a 2,000 page stack of books with constant churn, and so many little integration errors that doing even the simplest thing was a true slog. I wanted to secede as well, but many teams (and recruiting managers) absolutely insisted on this stack. I figured software was "over" for me, at least in web dev...
Then, Rails. Pretty much saved programming for me. I get it, it's not the new shiny anymore, but it was blissful to get back to such a productive environment. Although the Rails community was too brash and dismissive of reasonable criticisms and efforts to improve the stack, I understand the hurt that was behind this angry rejection of the "enterprise" world. Get stuck on an "enterprise" Java project in 2004, see nothing get done, and then watch as people try to shoot down Rails or Django, and you'll understand why the anger hit this level, why people cheered when the simple words "Fuck You" were offered as a retort to J2EE criticisms of Rails. It's better to be civil even as you disagree with everything you've got, though, (the Django community seemed to understand this better than the Rails one).
Lately, scipy and scikit-learn, I hope. The ease of doing formerly difficult things may lead to some awesome new directions!
I found Python around 21-22 and it completely changed everything. I could sit down and just flash through the whole process of idea to actual execution in one day and I didn't have to micromanage everything. Programming became exciting again.
A few years later I was having a hard time with some personal issues and I ended up trying to distract myself with SICP. SICP just lifted a whole layer of fog for me and while in the process of reading it I found Racket. So I went into the rabbit hole that is Racket and found myself just unmasking programming languages in general, making all of them so much simpler and easy to learn. When I was done I just had a new appreciation for language features and how to build them.
Not all that long ago I looked at Elixir and started playing with it. While doing so I realized that there is no stack that can make playing with processes as easy as the BEAM and what that means for the apps you're making. The BEAM changed the way I looked at multi-threading and concurrency and it's the platform I'd use for all forms of control systems, with the branches in those systems either running entirely on the BEAM or just communicating to external nodes in other languages when needed.
After about 4-5 months of Elixir I landed a job using Erlang at a game studio and I'm extremely happy to be using the BEAM professionally. We're allowed to create fairly amazing things and the things we build, even though I don't agree with the reason they're being built all of the time, are made possible only because of the BEAM (running interop with Lua, etc., running all communication through the BEAM).
Lately everything's finally clicked for me with Haskell and I find myself not having issues with the things I had issues with previously. I don't know how, exactly, but I think I let my brain finally absorb "Real World Haskell" (the best book, in my opinion: If you're only going to read one, don't let it be "Learn you a Haskell". LYAH is nice as a reference, but I don't think the demonstrations in it are very good, relevant and exciting) and so I was able to _not_ worry about monads and simply use them, letting the idea of them just emerge in my head because of familiarity with them from usage, instead of forcing monad tutorials on myself.
When I started to appreciate Haskell as just another language is when I finally understood why it was so great. It's amazingly practical and I've redone some of my older Python projects in Haskell only to find that I've got about the same LoC count even with types, which means that I've got more safety, more robustness and I can add things faster and with less headaches.
With these languages, there aren't many things that are impossible, and I feel like they've all changed something in me in terms of how I look at programming.
Scheme - it's so concise, clean, Wow!
CL - LOOPing macros, SETF, OOP is just a bunch of slots and macros. Wow!
SML, Haskell - static typing done right. Wow!
Erlang - Wow!
Scala - concepts from SML + design choices from Erlang.
C/C++ -- learning C/C++ took me from being a backyard hacker who could figure out stuff to being somebody that could code close to the metal. It helped me understand how all other languages worked.
F# -- I wanted to learn FP and started with OCAML, moving to F#. Combined with lean startup principles, F# and pure FP showed me just how much time I had been spending fighting the tools instead of just delivering a solution. Changed the entire way I look at programming.
In that time, I've never been quite as excited about anything as I am about Virtual Reality, and specifically what Google and Mozilla are doing with WebVR. I don't think people understand how much 2D systems are holding us back. We've had the same WIMP interfaces since Xerox invented them in 1980. And we largely do the same things with our computers as we did in the 90s when the GUI finally captured majority market share. Making computers smaller and faster is not going to change that. Only a complete change in the user interface will change that.
I've always banged around working on graphics, stereo-imagery, and simulation as a hobby, but I seriously started on making something about 2 years ago (actually, I recently saw my first commit for some reason, and it was July 10, 2014). When my son was born prematurely earlier this year, it lit a fire under my ass. I know a lot of people think that they need to get the startup stuff out of the way before they start a family, but for me, my family is my purpose, my family is what drives me. I feel strongly that well-designed VR systems are going to enable a whole new level of accessibility, interconnectedness, empathy, and collaboration. I need to make that world for my son.
So because of the stuff I started 2 years ago, I now have a job where I spend 100% of my time working on VR. For the first time in my entire career, I look forward to going to work. I feel great. I have great coworkers. We do amazing things together. And it's because of WebVR.
The things I like the most about mesos is that it is light weight and removes a like of the friction in deploying new services. So I can test out a new idea without a big investment or f*ing around with the giant monolith. I found container based approaches too resource intensive for my budget.
If you are on AWS, use auto scaling groups. It achieves more than these software, it works and it's stable. (Bonus: you don't need docker at all).
If you are on GCE, use Google Container Engine (i.e. their kubernetes). That's the only [sane] way to have kubernetes running in production.
I'm planning a blog post about all that later.
All things being equal, the content of what you're sending is more important than how you send it. PDFs, Google Docs, whatever - who cares...if the content outlines concisely how your SaaS offer makes/saves the customer money and the other associated benefits you can afford to send it on a frickin' napkin :)
You're over thinking the other stuff. You include a number of pages that is essential for the conveying of useful information to the prospect. Customers aren't going to scoff at a proposal because it's < 10 pages! Just don't pad it out with a load of corporate shit, keep it on point and yes a picture says a 1000 words so if a picture helps to sell the vision, include it.
I presume given you're engaged in selling your wares you've carried out competitor analysis? What do they send to their prospects? If you don't have competitors (I doubt it) what do companies that you like send out? If you've not secret shopped them already I recommend you do. Smart Bear (https://smartbear.com/) are one of my go to companies for researching how to go about software sales.
I do this stuff for a living, if you want any other feedback or perhaps examples of what does/doesn't work hit me up. My details are in my HN profile.
I think for most this would seem like a good idea. You are both giving the potential client a chance to use the service and maybe signaling that you aren't desperate for the sale that you are just as happy if they just get value out of the free gift. But then there's pricing theory, maybe just giving away what is supposed to be so valuable "cheapens" your product and signals that in fact you're desperate to sell so you're giving it away.
I'm sure striking a balance is required here but I'm curious where on this scale from "generosity signals abundance" to "scarcity signals value" do your recommendations fall?
Collateral materials are helpful when you are casting a wide net and you have the resources to take a shot-gun blast approach. It sounds like you have limited resources, which makes the leave-behind a very low priority. Today, gathering the data on what to present and how is the priority.
If you are the only person doing sales, or if there are only a few of you, the best approach is to use email. You should be sending a follow-up email anyway, even if you leave something behind to move things forward to the next step. It's direct, personal and it can be customized quickly and easily for each customer. Then you can use the experiences using email to inform the needs of collateral materials down the line.
Finally, when you do put something together that checks enough boxes based on real client responses it should be available everywhere. Meaning, something printed when you leave the meeting, an attachment in a follow-up email, a link in your email signature to something viewable on your site. You'll find everyone will access it differently, so provide everything. Today, I have enterprise contacts that will ask for a fax. That always amazes me, and then I send an efax.
Jason Lemkin has great insight into how to sell to SaaS products, how to run SaaS businesses and everything else SaaS.
"While we understand your app is using a Google login, it still provides access to Pokemon services without the necessary permission. It would be appropriate to ensure that your app does not include the Google/Pokemon login."
My response was this."Somehow the reviewers seem to think that because I use Google Sign-In I can access all the data from any other app that uses Google Sign-In which I can't. I can no more get Pokemon data than I can access the users Gmail. My app only asks for basic information which is just the username (i.e. Ronald A. Dowty)."
Seems they're getting stick on this point not that you're trying to use Google sign-in
Friendly reminder you are at the whim of Apple Store admins who like to play the role of gatekeeper. I got tired of developing apps for them only to have them rejected for pithy reasons. I stress the word 'for', because it really felt like I was trying to please the Apple Store, and not my users.
Less common stuff, but thing I install on any new computer (os x) - I think they are all from the App Store for a few dollars each:
Color picker (puts an icon in bar at top of screen, i click it then click anywhere else and it puts the colour hex code in the clipboard.
CommandQ - makes me hold down command + q to quit an app. I hate the default OS X way of clicking command + q to quit an app. Not from app store - https://clickontyler.com/commandq/
Flycut - remembers 100 clipboard items. Cmd+shift+v, then i can 'scroll' through 100 previous clipboard items with left/right arrow keys.
Disk inventory X - see what kind of files are taking up space
Skitch - for quick screenshots with nice annotations (from evernote)
For non-dev tasks, I spend a ton of time reading with a Safari Books subscription, Instapaper, and the Kindle app for iOS.
For business tasks, I use Reminders.app as a tickler file (GTD) and Due for OS X / iOS. Google Keep is pretty nice for re-usable checklists.
A text editor & access to some sort of programming language. If my terminal dies I want minimum downtime. If my laptop dies, ditto.
That's not to say tools aren't useful but relying on them is trouble.
It's a small indicator, at least, that they've got a decent amount of awareness of when using Angular is a good idea, and when it would be overkill.
Oh well, can't wait!
Customer: Walmart Health & Wellness
Founders: James Brown, M.D.; Andy Megna, RPh, PharmD; Will Brown, Esq.
IP: Patent pending business method to facilitate Medication Therapy Management in real-time. (e-scripts for MTM)
If not, I would still go with Rails. Its massively productive, batteries included... and forces you to learn some practices that you can later take to other frameworks (migrations, asset pipeline, etc).
I dont know of any other framework that forces you to adopt these. On HN, you will find a lot of rhetoric against that - which may be true for experienced programmers.
But for sheer productivity from someone new to all this... Rails really cannot be beaten.
In the JS world, you will spend atleast a couple of days figuring out Requirejs vs AMD vs commonjs vs webpack vs browserify vs npm vs yarn.
I'm not so sure if it is worth it...unless learning JS frameworks was your goal all along.
React has one of the gentler learning curves of the front end frameworks, but it's still a lot more work than just rendering everything server-side and adding whatever minimal effects you need with jQuery.
I second sandGorgon's recommendation to use Rails. PHP is another good option. It's absolutely amazing how many successful new software companies are being built off of WordPress and/or Laravel.
I say this as someone who was using React in February 2014 and who loves to geek out over newer more powerful technologies. The thing is, your users don't care. Groupon was launched as a crappy WordPress site + a mailing list, built way past its breaking point, migrated to Rails, broke again and was a $5B company in 5 years. Many, many startups with harder-core technologists started years earlier still haven't reached where they are now even with a perpetual string of problems and failures from their IPO until now. Teespring started on Rails long after that was cool and they're a juggernaut.
Use something productive and ship it.
2. I stumbled upon http://stackshare.io the other day, I can't vouch for it but seemed nice to have a quick overview of what languages / framework / services are used around.
For backend: Go with anything that you are proficient with. If you aren't familiar with anything I recommend starting with RubyOnRails/Sinatra/Django/web2py/Phoenix.
2. Yes - http://bestof.js.org/ See also http://stateofjs.com/2016/introduction/ ,
The documentation for beginners is top notch as well:https://www.meteor.com/tutorialshttps://guide.meteor.com/
There's plenty of options, too. You can throw together a few files and have a simple app going in a very short time (an hour or two), or build highly modular apps with a React or Angular front-end.
Haskell + Elm or PureScript + Postgres
The best part about it is that it helps you catch many errors at compile time, instead of having your app crash at run time.
For keeping your Haskell and Elm data types in sync while maintaining sanity, I recommend elm-export , which will automatically generate the Elm types and JSON decoders from your Haskell code, using GHC Generics. Watch the author talk about it .
Choosing Elm over JS already gives you a head start, but you might hit a productivity wall at some point, and PureScript gives you all that extra power with its advanced type system. Some related discussion here .
Check out Matt Parsons' blog  for more on Haskell, Elm and PureScript.
Lastly, for database you can use Persistent  which gives you a type-safe API for data modelling and data store, and can automatically generate and perform migrations for you.
P.S. Do take my suggestions with a grain of salt as I don't have much experience with any of the fancy JS frameworks.
If you like Python, Django.
If you like Ruby, Rails.
Otherwise: Flip a coin.
A lot of very smart people will tell you that PHP is as good an option as Rails or Django. The problem with PHP is that while the upside for PHP is, as they're observing, just as good as the Rails/Django upside, the downside is way worse.
Counterintuitively: I think you should really know what you're doing as a developer before you decide on PHP. PHP isn't by itself going to teach you to be a better developer. Python will.
Probably don't build front-end web applications in Go.
"No one really knows."
There is (in my opinion) no reason not go with TypeScript. It's strictly better than ES6. React and MobX because of their simplicity.
No particular reason to choose Go other than it's fun. TypeScript with Node is also a good choice.
Edit: I am talking about SPAs.
My advice is that there is no clear winner. Each technology serves a spectrum of needs, some better than others. If you're experienced enough to know what you need, then vet each technology in terms of what they offer to solve your problem. If not, my advice is to pick something that appears reasonable and go with it; you'll learn a lot, and eventually you'll arrive at the conclusion that all of these things are just tools--your own experience is the strongest thing you bring to the table.
For backend, I prefer Play + Scala over Ruby/Python because of the static typing.
I settled for Flask, SASS (using egg, my own boilerplate/micro-framework ) and Vue.js .
Simplest to get started with, gets the job done and scale nicely.
: http://wiredcraft.com: http://flask.pocoo.org/: http://wiredcraft.github.io/egg/: https://vuejs.org/
One great thing about this architecture is that it can scale as the app gets more complex, since you can just add more components to the UI, and more fields to the GraphQL schema, without needing to re-structure anything.
I work on Apollo, a set of tools to make it easy to create and use a GraphQL API, and we have a hello world client  and server :
 https://github.com/apollostack/frontpage-react-app https://github.com/apollostack/frontpage-server
Django is very neat and you can learn how to code within a week looking at the sourcecode of Wagtail.io ... I did it that way.
PHP is very straightforward and pretty much every issue that you run into would perhaps have a solution ready for you on StackOverflow.
If you're building simple CRUD apps for a business audience both Rails and Spring Boot would be good choices for instance.
That said Angular, React.js and Vue.js are equally valid choices for building complex applications but each of them is way beyond a 'basic web app' scope in my opinion.
If you're really unpatient, I'll click on the first link for you...which reveals the popular frameworks. This is based on real data since it's a survey, not just one or two comments on HN.
CSS ICON: http://cssicon.space - Generate CSS icon.
INITIALIZR: http://initializr.com - Generator HTML5 templates (Classic/Responsive/Bootstrap)
BUDDY GO: https://buddy.works/buddy-go - Git hosting on your server.
LAYERSTYLES: http://layerstyles.org/ - Crate CSS from Photoshop Layer Style.
FFFFALLBACK: http://ffffallback.com - It bascially scans the pages CSS and creates a clone page where you can test and analyze different fallback fonts.
Curiosity, one of the project I want to rewrite is an old .net 2.0 using Ajax 1.0 (someone remember that...) having response.write (literally anything)
The idea was understand also how to combine babel and webpack to work with an external api (couple of weeks before create-react-app that you should check in any case)
I'm not using react in production yet, the application I have are full of data entry and very few nice things like stars and likes or profiles with nice icons but
Spend some time on
VUEJS (use their vue-cli)
react (use create-react-app) and check react router.
If you still don't get them after few weeks html and jquery will always rescue you (at least for next 5 more years)
Backend... cause you are learning ES6... you probably want to check
Express session (maybe using mongo as data storage)
But becauseyou also want basic...
Both have nice solution for static framework.
Good luck with this.new.world.
So, since your question says "basic" I'll leave it at that.
For database Postgresql is your best bet.
Backend: F# or Elixir
I liked how easy it was to learn Redux. It teaches you functional principles, not only useful for your specific web app but also for your career as a programmer.
By many measures the best and most popular stack would be mysql, php, html, css, and maybe a little jquery sprinkled on top. It powers an enormous amount of the web, it allows very rapid development, and it's about as cool and hip among the hacker news crowd as a cod liver oil enema, and with good reason!
Of course, you can improve it, but you need to figure out what metric you're looking to improve it on. If you rule out PHP or jquery or whatever, then other answers start to look like the most popular.
> Seems like React frontend
React has a lot of buzz, and it widely used for new projects trying to build web apps with heavy client-side functionality. Of course, there's simply an enormous amount of Backbone, Angular 1, or random jQuery client-side apps out there, plus an even more enormous amount "traditional" webapps with minimal client-side functionality (like hacker news). You have to define your search quite narrowly to make React look like the most popular tech.
> perhaps Vue
> and Node being the popular backend?
For small hobby projects among people who mostly know JS and have no particular reason to choose anything else? Yes. And low barriers to entry mean it's used in a large number of projects.
On the other hand, in many ways it is an objectively inferior backend. And in others it's objectively excellent. It really depends what matters to you.
> Is there a site that keeps track of [...] how their popularity progresses?
...none of it matters. Any vaguely functional stack is good enough; the odds of your project failing because you picked Rails instead of Django, or Mysql instead of Postgres, or Coffeescript instead of Typescript is nil. What does matter is that you pick a vaguely functional stack and start writing code.
This question reminded me of it
* Frontend examples: https://github.com/tastejs/todomvc
Backend: backend as a service like Firebase or Horizon/Rethinkdb. Vendor lock-in is a big concern here but you can get your prototype done so fast with those tools.
If you want just Templating and always open connections for building backend site builder tools then PHP is your language.
If you want free and scalable with as little code as possible with building files you never have to write again then Python Django restful API and angular2.
If you plan for this to be worked on indefinitely and it'll be customized every day and you know the greatest will stay with you with high risk, then vanilla js and nodejs.
If you want as quick as possible but with a scalable price then reactjs and firebase.
Edit: This was a half-decade or more ago.
Also for that particular interview, I waited for an hour and a half in the lobby before a recruiter finally showed up. It turned out that my recruiter was let go the day before and my interview time fell between the cracks. Pretty much the worst experience I've ever had interviewing.
If you join Scientology, for instance, the second thing you do is TR0 Bullshit where somebody screams as you and you just sit there and don't flinch. After that they'll scream at you all the time and if you complain they'll tell you to "keep your TRs in.". If you really cant stand getting abused they don't want you on board.
- Lot of people want to work for Google. Plenty of supply
- Cost/Benefit. The cost of contacting everyone is not worth the benefit. Probably too many applicants to respond to
- Because they can. They are Google.
- They are big. Perhaps a certain division/HR team is worse than others. So it could come down to specific HR team who is the culprit.
I bet if the supply of candidates go down and they need to find people, they will respond a lot more.
My own personal experience couple of years ago was good. I failed the interview though.
I imagine it has, to an extent, among their pool of potential candidates.
> And shouldn't people be more hesitant to apply to companies knowing that they will be treated badly?
I'm sure there are people who have decided not to pursue employment at Google based on the what they've heard about Google's interview process. But, apparently, there are still many thousands of good developers who are undeterred by Google's reputation. So for the time being, in their cost-benefit analysis, Google has decided they're better off without making major changes in their hiring process.
Of course, this is not an excuse for the poor treatment youre receiving, and Im sorry to hear that.
Edit: this is assuming the recruiter doesn't go ghost on you themselves that is....
Doesn't stop people from applying and they seem to end up with the candidates they want, so it's probably working for them. They have to standardize on some process, this one seems to produce the desired results and with the number of candidates they get, I assume that they're not worried about false negatives, but are worried about false positives...
that said, my experiences with google have been way above average. probably one of the few companies where i genuinely enjoyed interviewing (i usually hate interviews). follow-ups were very informative as well. sounds like you got a flaky recruiter.
Have been getting their recruiters calling every 6 months since, and that was almost 8 years ago now.
If you're in a city, you might try working out of a co-working space a few days a week. It would also give you a chance to socialize with other developers when you need a break from working. This can be a good thing, as long as your don't spend the whole day socializing. :)
If you live in a house and have a decently sized property, you could try building a 'Shedquarters' (Google it, there are some pretty amazing examples out there). Alternatively, you could park a camping trailer on your property and work from there.
At the end of the day, nothing will be a substitute for good work habits. And make no mistake, staying focused and on task is a skill you can develop and improve over time. Getting started is the hardest part.
In the past, I've found it helpful to ban myself from using the internet after my work hours are done for the day. Pick up some good books, and spend a couple of weeks worth of evenings just reading non-stop. It'll be hard at first, and you'll be tempted to go online. Keep on reading regardless, even if you really don't feel lie it. I've found that after a week or two, the urges to go waste time diminish. And interestingly, the strength to avoid distraction and keep plowing forward even when I don't feel like it carries carries over to the work day. I realize that this might only work for me and nobody else. But it might be worth a try if you're looking for a starting point.
Having a routine is important.
Additionally, here are a couple of things that you might consider hacks that have worked for me:
1) Front-load your day - I start my day at 4am and I start work immediately. This has a couple of benefits. For me I know I am most productive the first half of my day. Starting early eliminates a long list of distractions and interruptions simply because no one else is up to bother me. Plus, if I find myself dragging between 4pm and 6pm I don't feel guilty about cutting out because I have already put in a pretty solid day overall. This is something I read not to long ago that validated what I was already doing: https://news.ycombinator.com/item?id=12346307
2) Walk - Any time I am feeling distracted or stressed I take a walk outside. It reboots my mind and I come back refreshed. If something was eluding me before the walk it typically reveals itself quickly after returning from the walk.
3) Diet - This is from my response to this post (https://news.ycombinator.com/item?id=12684180): "In order of volume and priority...Coffee, leafy greens(in all forms, especially cabbage - all types, kale, napa, green, etc.) and protein in all forms, diversity is important, animal and vegetable sources.I mix in other fruits and vegetables for flavoring and variety. Also, I eliminated salt and that relieved my stress in a significant, noticeable way.I start my day at 4am, if I eat heavier, carb-based items, I notice a crash somewhere around 3 or 4 pm and the last few hours of my day are a struggle. If I stick to what I listed above, I power through the afternoon and feel more balanced when I end my day."
Distractions are usually a consequence of being burnt out. That means you need to take more _effective_ breaks and/or work out your discipline muscle, meaning you can go longer and more effectively.
(Then again, my "problem" is the opposite and I think it's something a lot of remote workers experience you work even more hours and even harder than in a typical office environment.)
Since it is a side project, you can swap out Ember and try Elm.
There are ones like Beego (https://beego.me/docs/intro/) that others have mentioned that have all the batteries included.
Others like Gin (https://github.com/gin-gonic/gin) that have a lot built in and offer an stable API and good performance.
Gorilla (http://www.gorillatoolkit.org/) offers pieces you tie together but are at a lower level of abstraction.
If you use the standard library, you have to build a little bit more, but you do not have to deal with dependencies or changes in 3rd party APIs.
There is even a fairly good book on using Beego to develop web apps with Go. https://astaxie.gitbooks.io/build-web-application-with-golan...
The best I can point to would be Gorilla.
I used to have similar issues. It was mostly down to procrastination and overwork/stress.
Weekends were really bad since I was so busy/stressed from the week that I would get into an attitude of "i'll start doing it in an hour" and eventually it was so late that it was too late to get any work done. I had a lot to do, just very little impetus to do it now.
Fixed it by starting to smoke pot. Not even kidding. I set a timeline for my weekends for when I was working and when I was done. When I work, I work. When I'm done, I go smoke. Basically every weekend for a few months.
I've probably tripled, if not more, my weekend productivity by giving myself a defined period of work and a defined period of relaxation and a reward for getting there.
If the reason is latter, I wouldn't worry too much. But in order to make my weekends or off days productive, I try to sneak in a small share of web browsing on working days - it basically works like rest/sleep. As for former, I let the interest or necessity generate naturally and not force myself to do something useful and think its a crime to relax.
If your stress level steadily rises from Monday to Friday, you'll need the weekend to wind down. This is the first problem to solve. Do fun things in the week days to wind down before the weekend (ideally wind down every day). What are fun things? I can recommend some ideas, but its different for everyone, but getting some form of physical execise is a BIG plus. Walk, run, swim, play... whatever floats your boat.
How to approach the weekend project? This is what works for me. Breakdown the weekend project into really small pieces. I don't mean you make a project plan for the weekend project. Just find the first one or two mini goals, something you can accomplish in an hour. Hit the mini goals. If you don't feel motivated to hit the mini goals. Find out why and iterate. Maybe try a 15 minute goal. Maybe a different project. The point is make really small nudges in the direction you want to go. If it doesn't work, find out why and fix it. When small nudges start working, it'll build up momentum and will eventually become a full weekend project! Have fun! That's the whole point of weekend projects!
First take a look at this from a few days ago: https://news.ycombinator.com/item?id=12734671 on a book: Deep Work. Basically just some of the tactics ADHD people have been using for ages.
The whole world seems to have developed some mild sub clinical ADD thanks to social and phones. So first off don't be surprised you're struggling.
Understand that web browsing and social are variable reward machines. Click a link and you have another new snippet to read, or video to see. Each one gives you a reward and a small dopamine boost. Now compare with preparing for interview, or thinking about a side project. Where's the rewards? Later. Maybe not even today! It's a luxury cheesecake vs diet fruit portion question.
Look at the pomodoro technique and break tasks up with small rewards. 25 mins productive, 5 mins social (if you can stop at the next beep). Get a cheap $5 kitchen timer to sit next to you. If your willpower is lacking, add a browser extension to set limits on social cheesecake sites. If the phone is main distraction add an app to silence notifications, or remove the strongest distractions - the social ones!
Same goes for desktop on your laptop - remove the candy, set it up for productivity. Maybe separate logins - one for productivity, one that permits you near the fun stuff. :p
For god's sake don't keep todo lists and such on your phone. Turn phone off, use a notebook, post it or pad, or text file on the laptop! Otherwise you're now holding the crack, and hoping not to be tempted. Just 5 minutes, I can handle it...
Accept that your attention will wander, and get used to checking in and trying to bring it back. That timer helps. If you struggle add another timer to beep every few minutes - as a checkin. Don't get depressed if you trip up. Forgive yourself, and try again - you're building a new habit, and that will take time and many mistakes.
Last, lots of exercise, fluids, healthy eating and breaks away from keyboard will keep you fresh.
I read an article some time ago that I cannot find. It stated that extreme procrastination is the result of a form of drug abuse: we need our daily dose of fb, youtube, etc to keep us functioning, but that takes all the time, and when we realize we wasted another day, it makes us sad, and the cycle begins anew. It is also no secret that these sites are designed to be addictive.
This article might help you too (well, the original, but I couldn't link that because, most likely, the author of the original essay procrastinated the renewal of the web page for too long, and it cannot be reached): https://www.theguardian.com/lifeandstyle/2012/sep/07/change-...
To that last point, I believe both of us could benefit from the "GTD" (David Allen) approach. In particular, utilize the "Clarify" step to write out 1-3 small things you want to do each day. Instead of setting yourself up to "build a small thing" or "learn a subject," split the day's tasks into easy stuff like "init git repo" or "read first chapter of intro to Go."
But, if your week burns you out (my main motivation for a lack of will on the weekends) you may be better off resting. Schedule your downtime in addition to your learning/project time. Give yourself time before and after your project to zone out and click links aimlessly. And, if it suits you, get a buddy to be accountable with. Someone who's going to ask you on Sunday evening if you've taken at least one step toward your goal. Hope this comment helps.
After that, it's easier to actually work on computer-y things. Don't fool yourself into thinking that you can do thought-heavy things all the time. You need physical activity! Mind and body must both be healthy in order for either of them to work at the highest levels.
Its a common theme that appears in most books (heck Just Fucking Ship is a whole book on this) and I have noticed this over time with different people but never understood it.
Is there a psychological reason behind this? Is it something that needs to be overcome with the ways listed here? I guess what I am asking is why is that many cannot just decide to do something and do it without trying to hold themselves accountable using techniques.
2. Identify steps required to reach it, write them down. It's better to do it with pen and paper, no to-do apps or anything like it.
3. Take the first step right away, do not postpone it.
4. Log your progress and time on each step. Archievements and failures too.
5. At the end of the day look through your log, asess your achievements on 10 grade scale, set goals for tomorrow.
Here's the link:http://calnewport.com/books/deep-work/
Although, I do have my share of procrastination but I have gotten a lot better than I was an year back when I used to spend all the free-time on movies. This weekend, I read lots of New Yorker articles, a small book, and finished writing an article. To an extent, I think I can do better by working on a small side-project but then again, there is always room to feel guilty.
You just have to hate wasting time and gradually, things will get better. There is no secret sauce towards working; if we had Facebook wouldn't be a multi-billion dollar company.
Every day you get 86400 minutes offered to you. You can either not do anything with it or use it to accomplish your goals.
Time is on of the only things you can't buy. Every one is equal on this level, this si the most precious and the most volatile ressource everyone has.
But first you must define your goals precisely.
So stop whatever you are doing, get a piece of paper and write what you want to accomplish within 1 week, 1 month, 1 year.
That done, try planning your week ends so that you get shit done and eventually your accomplish your 1 week, 1 month, 1 year goal.
Helpful to keep to you schedule : identify your "time stealer". All those things that wast your time like useless tv, uninterested facebook posts and so on. Realize that every minute you spend doing something you consider useless is wasted.
Then, most important, try getting some rest BEFORE being tired : that way you won't procrastinate in the "I might rest just a little while before i get to it" spirit.
I hope this can be helpful to you. I just spend the last year trying to get out of the loop you're talking about so I know exactly how you feel about it. I'm succeeding one little step after the other.
It's a lot of discipline, but I can tell you the trip is worth the effort.
On the surface, you clearly don't have passion driving what it is you want to do.I can relate to this because I'm learning to code. It was a struggle until I found Codewars, at which point I was able to easily turn on some music and sink hours at a time solving coding challenges. Turns out that the skill of solving these things doesn't transfer to.. anything. I struggle to sit still going through any tutorial and I still have no idea how to build things.So, on the surface, find something that motivates you.
Digging deeper, this inability to finish anything I start seems like a personal issue. I've worked a lot harder than this before.I think there are facets of my life, and probably yours, that need to be put into order first.
There's a satisfaction with life that I've had before and currently it's missing. I'm unable to stick with anything because I immediately seek cheaper forms of satisfaction. I think attaining a more genuine satisfaction with myself would eliminate this urge.Maybe you feel similar.
Also it obviously sucks to do things alone. Meetups, even when they lead to nothing, are still a big source of motivation. Personally I notice my productivity correlates with how often I'm going to meetups.
- Have a specific plan in mind, not a generalized "learn something new"
- On Tuesday, post on facebook asking a friend if they want to do a work-along day on any hobbies. Then hop on appear.in together or hang out in person.
- Keep yourself well-fed and well-rested.
Once I get back into the house, I've burned off some energy and can focus on my side project. For whatever reason if I sit in front of the computer all weekend I have a hard time getting started.
Next weekend try this:
For every 55 min of YouTube/Facebook etc, put in 5 min of serious work. Just 5. But be disciplined about this schedule. Time yourself so that you don't do a minute more of the work!
Learn the schedule habit first.
Pause on that word: decision. We all have impulses, wishes, desires, etc. But you're only ever going to progress when you stop, think about what you want, be realistic with if you can actually achieve that with everything else going in your life - then DECIDE that you are going to do it.
Once you've decided, that is when you follow through every time (if you've done the first steps correctly). Then it's basically autopilot and you don't ever feel like procrastinating. I dunno - works for me.
Waking up at noon ruins the day for me. YMMV
2) Limiting the things you want to do. I had this nagging feeling that I should read all the interesting articles that come across in HN etc. I solved but installing a "save to wunderlist" chrome extension. I tell myself that I would read it later (which rarely happens).
I try to get outside and move every day that I can. I surf on weekends and it makes my life a lot better. Then the day is already in the "win" category, so if I feel like working on something, there's less pressure.
Failing that, have you considered getting a cabin in the woods? Or maybe a boat? Get as far as you can from an internet connection, as often as you can.
And if i was doing something unproductove like youtube facebook etc I closed the tab.
Another thing was that instead of theorycrafting and worrying about O(n) for the smallest projects ever I just went ahead and got something running. Its pretty easy to be disappointed if you cant see your results.
For preparing for interviews you dont really need the internet. Just get a piece of paper and use the cracking the coding book.
Again, this helped me a little bit, YMMV
Internalized guilt over not being "productive" isn't helpful.
Fix your home environment so that it doesn't encourage you to sloth.
But I used to plan such things like trips.
Met with a friend (or alone) and we coded the weekend (or week) away.
I've often thought of becoming my own boss out of spite, but I'm a little too inexperienced and don't quite have my own idea fleshed out to put my whole life on hold just yet. I like the show Silicon Valley, but they tend to (obviously) over-exaggerate the stereotype of start-up types. There's a very real undercurrent of the schoolyard need to "fit in" that weaves through most startup-y people, and the closer I get to it all, the funnier it is.
However, as a strict outsider looking at things, I find it amusing that every startup claims to disrupt something or the other, many times things that have already been claimed to be disrupted by others, and there is hardly anything to separate one from its competitors in terms of technology. I find it no different than every bigco claiming they are leader in something or the other (which could be arguably true in some cases) but often simply recreating the same technology the competitors have for any number of reasons. In both cases there is tremendous amount of cliche in the way they talk or present their ideas while overselling themselves, which sometimes amuses and sometimes annoys.
I've been a software person for a long time, and I've learned that there's no perfect environment. Some are less toxic than others, though. And which ones are "less toxic" isn't necessarily a function of whether it's a startup (though there may be a higher fraction of people who don't know how to manage - or even how to be a grownup - in the start up world).
If you're in a reasonably sane and healthy environment, don't casually leave it. A better deal may be much harder to find than you think.
Seriously, I hate startups and their culture.
Kind of like how HGTV started as a low budget thing aimed at DIYers and turned into Lifestyles of the Rich and Shameless after it got successful enough.
I don't know how or even if "startup culture" can be returned to its roots, but I think that's the problem right there. Now YC imagines it shall save the world or some crap and is running a Basic Income experiment and has, imo, lost its way.
I don't hate startups, but I hate what has become of the culture recently. It wasn't always like this.
The most important thing is communications, definitely.
The best results I had were on a fully remote team, using Slack heavily.
I'm currently on a half U.S. based / half remote team, and it's harder, as much of the stuff communicated on the U.S. side doesn't reach us. We do have weekly meetings over GoToMeeting.
Some very good articles on the subject are Scott Hanselmans, and Jeff Atwood's and Stack Overflow:
For some people, that means getting dressed up. Keeping a dedicated home office. Strict time routines, etc. The what doesn't matter so much, as long it provides you with familiar structure.
The key in the beginning is to over-emphasize discipline (and communication) until you find a good balance.
(I've been working remotely for 10+ years)
For working remote, what I found that was the best was making a place in your house or apartment that is the office. Try to do everything in that part and only do work there. It will help you get into a work mode at home.
There is a similar thread here: https://news.ycombinator.com/item?id=12788080
For convenience, here is my post to that thread:
First, discipline is critical to what you mentioned. Figuring out how to develop habits that avoid procrastination or other problems with your productivity are wildly different for each individual. Some people work well with a TV on, while others are completely distracted by it, and up paying attention to the TV instead of being productive. Some people take 15-20 minute naps and wake up ready to rock. Others, fall asleep for long periods of time, don't reboot and waste a day. You have to know which one you are and tailor your routine around you.Having a routine is important.
3) Diet - This is from my response to this post (https://news.ycombinator.com/item?id=12684180): "In order of volume and priority...Coffee, leafy greens(in all forms, especially cabbage - all types, kale, napa, green, etc.) and protein in all forms, diversity is important, animal and vegetable sources. I mix in other fruits and vegetables for flavoring and variety. Also, I eliminated salt and that relieved my stress in a significant, noticeable way. I start my day at 4am, if I eat heavier, carb-based items, I notice a crash somewhere around 3 or 4 pm and the last few hours of my day are a struggle. If I stick to what I listed above, I power through the afternoon and feel more balanced when I end my day."
Most OSS starts off with an itch to scratch and then if other people have the same itch they should be able to find you via google.
I think you either need to think of marketing open source pretty much exactly like any other marketing effort, or you need to not think of it as "marketing" at all. If marketing seems inappropriate, you need to think of it as how to get the word out or how to reach the people who could benefit from it or would be interested in it.
Thinking of it as marketing may be problematic because most people think of that as being about a) self promotion and b) making money. If neither of those is a comfortable fit, you still need to think about how to connect with prospective interested parties so as to further the mission.
How you do that will depend on the particulars of the project. Please give us some idea of what, if anything, you are working on. Hopefully that will lead to better answers.
Demand for JS developers is growing too, as websites become more complex, Node.js becomes more popular on the backend, and frameworks like React Native (more popular than any other iOS or Android library on github) start to pick up mobile developers.
Community also is very "poisoned" with the idea that you _have_ to work in your evenings (contributing to OSS, writing your own or just playing with hot technologies), and therefore new stuff is baked extremely quickly. It is usually very low quality, and you have to cope a lot in order to make it work, and often you have to dive into source code, and it is considered as normal, which is quite sick from my point of view.
Also, it is truly "hype" community, which is super excited about what is hot now and it means that today kings will be overthrown very soon (right now stuff like Cycle.js and Vue.js is gaining traction). Nobody wants to maintain their libraries and very often you can see projects with a lot of stars completely abandoned.
Recently, Babel.js was defined as _defacto_ standard, and it basically started transpiling era, which is not going to end in the foreseeable future. It shakes the stability, and makes extremely easy to add new features (like stage-0), and people just used to unrealiable tools.
So, all of this works as a snowball, which only speeds up. People create more and more complex web applications, and also js is going into other fields (like microcontrollers, Node.js grows in popularity, React Native is super hot now). When it will stop? Nobody knows. Maybe WebAssembly after implementing will stop it (people will spread over competing technologies), maybe no.
Being the creator or top two contributor of a library is now worth so much more than being a small time contributor that the incentives are skewed towards everyone just making a new thing, always.
It's their way to stand out.
I think it's natural that the web programmers would understand web self promotion better than other languages. Guess who's better at Twitter? The js people! Why? They were writing the web to begin with!
Sane defaults are an important part of tech, and default async is a terrible setting. Python sync is easier, and Go routine concurrency is easier. Always on async just seems like a terrible default. For speed I'd do Go, and for all else Python.
Then I guess it did have a shepherd, the W3, and all the browsers followed its standard, except the one that had 90% of the market. At long last, in the past few years, market share has passed to companies that are much more willing to follow open standards.
But at the same time, the user base is huge, a churning mass of millions of programmers of every level of ability, and each one of them can now publish their framework on Github. Plus there are several large web companies that are competing with each other.
Thankfully at least the language itself has a single standards track. Cross-browser agreement isn't perfect, but it's much better than it used to be. It's just that we don't have a standard library, like Perl's CPAN. Instead we have NPM.
I wasn't paying enough attention when Perl and these other languages developed, so I don't know for sure why they're different, or even if they were that different at this stage. Even they have their different web frameworks to this day.
I'm not saying Ruby on Rails is the best backend framework (I don't use it anymore), but when it came around everybody understood that it was getting something right. It popularized a new model for server-side web development that all other communities started to follow and improve. When it came out, most developers who were already working with the web could see that it would be very useful, it solved real-world problems they had, it just made sense.
In my opinion, we need to realize that webapps are not documents, and document-oriented HTML is the wrong tool. I don't think things will get better until we start looking at webapps as essentially drawing on the screen, like native UI APIs. I think we need a standardized virtual machine, like a lightweight JVM (or, better, a heavyweight Lua), which would allow people to use whatever language they prefer, as long as it can compile onto the instruction set. Static-type people can use a statically-typed language, and dynamic types can use dynamically-typed languages. Make an instruction set that maps well onto native CPU instructions, and provide well-thought out input and drawing primitives. We essentially need a PostScript for apps.
Even looking back about 20 years, how many companies where making CPUs? How many different architectures where there? How many companies where making PC clones?
RISC is going to change everything - Hackers
This is natural the world isn't ending
However, I would suggest that we are now building applications at a level of complexity which has not previously existed on the web before (unless you include non-standard tech like Flash/Flex or Java Applets, which both had their shortcomings).
1. JS has become very widely used very quickly, which means that there have been lots of hastily built things, which have been replaced by better things (and for every 'better thing' there are many alternatives which fell by the wayside), and a larger pool of people to build them.
2. It's easier than ever to build new tools (or any kind of app, for that matter), because the npm ecosystem makes it trivial to combine existing smaller pieces of code into new combinations.
Every framework has a "sponsor". Every strong "sponsor" either has a vested interest in the web, or, a vested interest in some other platform with which the web competes.
The importance and power of the web are obvious. So, it is a dance. "Embrace, extend and extinguish". And, hop, here we go again.
I think it based on two factors:
I had a similar experience with Java when it was the king of the web frameworks - JSP, JSX, JSF, Spring MVC, Struts, Stripe, Wicket and a dozen others.
Java was big enough to contain all of these frameworks, and it was big enough for people to support new ideas rather then iterate on existing ones.
I'm not familiar with C/C++ enough, but I think it has a similar amount of change to Java (which is somewhat less the JS)
2. the other big factor is how decentralized it is - JS is extremely decentralized, there are tons of big organizations contributing to it's advancement, to frameworks even building their own compilers (all the browsers).
Java is very similar in this regard, even in their governing model (a collection of companies that decide on standards together, though Java has drifted from that model with Oracle's lead lately).
C# is the opposite, it's one of the biggest languages but doesn't have a lot of change in it - everything is dictated by the central authority (Microsoft) and competing frameworks that don't get popular enough.
There are other factors of course, but I think most of those can be seen in other languages with less change, and are less relevant overall.
As you walk, you realise that each of them uses selection of screws and chisels and screws and wheels, and types of wood and door handles and all of them are somehow different. Not because they have to be, but because they were acquired independently by each worker. You come with an idea that if you standardise on some set of commonly used wheels and handles and chisels. This means you will need less of them, it will be easier for each worker to acquire, reuse and combine them, less time spend relearning different tools and a lot more other benefits. Once you did that, you may realise that the things built on top of that - like drawers, doors, covers - can benefit from the same standardisation. And so you do and keep improving your factory.Notice however that such idea would never come from single worker.
So JS is stuck at being early-stage factory. Main thing that it lacks is a boss that looks at it and improves it. Any proposed change has to gather momentum, convince some committee and even than it takes years to push it. It takes so much effort that most of the time anyone who tries just gives up. Where in other languages its enough to send complain email and propose a solution to one mailing list to get someone involved and get proposed change deployed in the next release a month later, you can't do it with js.For the same reason there is nobody to make a sweeping change and wipe this disaster from earth. Too much politics involved. So everyone hack his way around it, and hacks are not very maintainable, so you'll need to redo them on next project, but very differently. Making any two projects incompatible and hard to build one on top of another.
Java had its Sun, Python had BDFL Guido, JS has no such thing.
There's nothing quite like this anywhere else in tech, as most platforms are dominated by a single vendor. Imagine what Windows development would be like if, in addition to the need for backwards compatibility, there were three or four competing vendors of Windows, each with different feature sets and bugs.
Finally, many new programmers come into this incredibly diverse, sometimes frustrating, environment every year. It is an environment that encourages open-source contribution. It's no surprise that many new tools and libraries are released every year, and some of them gain adoption.
Relatively recently the standardisation, improvement of the language itself, real origin policy, common frameworks and finally npm released whatever was holding it back. It shot out from the rubber band and it's trying to catch up in months where other languages had years to find the way. You may notice that even though a lot is changing, not much is really new. Async existed before, so did dynamic languages, so did MVC, so did immediate mode UI, so did many other things. Js is now going through all of those ideas quickly because the path is known and clear. It will slow down though. There's only so many paradigms that we know. At some point people will run out of easy ideas and will have to start slow experimentation just like all the others.
Compare it to say, creating a new operating system. Sure the world could benefit from a better OS, so why not make one? The perceived benefit is small (why do this when Linux exists) and the cost is large (it's hard and you need a lot of knowledge).
Also a lot of half baked ideas. The number of js writers is huge but on average very inexperienced compared to other languages.
JS used to be a horrible ecosystem where different browsers behaved differently, the language itself had various pitfalls and most code was written in classical script kiddie style. This has been changing for the better for a long time in small steps, but frankly something has always sucked, warranting the next evolution.
The second point is politics: JS is huge these days, and there's still a lot of room for improvement. Everyone wants to be the company behind the de facto standard library for web apps.
This is appropriate because websites and web apps are more complicated than ever before, and face the same challenges that traditional enterprise software faces: large codebases that stay around for a long time and need to be maintained and refactored, integration with various APIs, asynchronous communication, separation of concerns, separation of model and view, business logic, test coverage, development of different parts of the application by different parts of the engineering team, etc.
At some point, the benefits a framework provides outweigh the time it takes to adopt and learn the framework. A framework provides an overall way of doing things that gives structure to the project and makes a lot of the challenges I mentioned easier to deal with. Frameworks significantly reduce the number of "how do I implement this feature?" questions that are bound to arise, by providing a standardized way of doing things. They make it easier for teams to collaborate, because the codebase is relatively consistent and engineers aren't constantly dealing with other team members' idiosyncratic code. (Yes, that means there is less room for individual creativity and expression, and it makes programmers interchangeable to some extent. Welcome to the world of business.)
Another reason for the proliferation of frameworks is that the playing field keeps changing. Most recently, it has been smartphones and social media that have revolutionized the way people use the web. Before that, it was streaming video and "Web 2.0." Whatever the next big thing is, I'm sure it will inspire a new flurry of new web development frameworks.
In comparison, java, PHP have undergone some more than welcome mutations in terms of syntax clarity. Evolution in JS is made by adding features in frameworks, not in the core definition of the language.
You could see JS as the assembly language of the browser and all the frameworks as some C/fortran/C# that translates into JS.
The problem is the web would look definitively balkanized/ghettoed between old and new computers if you made a non backward compatible change of JS ...
JS is the most ducked taped language of the landscape of computers. And it is leaking memory, performance, abstraction from everywhere.
Angular 1 has been released in 2010 and Angular 2 in 2016. Obviously, if you started to learn Angular 1 last year it can be frustrating (specially with Angular, it's not the easiest framework to learn out there   ). But I would say the majority of Angular developers has used it for 3 or 4 years now and most of them probably enjoy to have the chance to learn a new modern framework that fixes the design issues of the first version.
To generalize: The front-end world is surely overwhelming for the new comers (but is it not the same in all the other fields of programming?). However, after some years into it, you realize that you have mostly sticked to the same tools for years. 
Let's assume he wants the skills/tools to still be relevant in 1-2 years time in a sizable percentage of the job market (noticed that many startups don't like people with web experience that isn't in React/Angular/Node).
With HTML5, CSS3 and ES6 being released, and seeing wide adoption, the web-application layer and APIs suddenly have access to a magnitude more functionality, and we're essentially in the early romantic period where we're pushing these new features to the max, and figuring out what sticks.
Over the next year, we'll settle at the maxima of efficiency and usefulness with the web framework. Despite some negative voices, IMO these are very exciting times for the web :)
Also these JS frameworks tend to be opinionated with how databinding works etc, such that there's always something that you have to work around when you're using the framework in real-world projects. People get annoyed enough that hey it's easier just to create another framework.
A lot of the churn going on is due to people trying to work out the best way to use these new features, along with whether or not to keep backwards-compatibility with existing frameworks and libraries.
Mozilla unilaterally released new language features that only worked on Firefox, so nobody could use those language features in practice on the web; in many cases, new language features wouldn't even parse in IE.
This is when the language really started to unthaw. IE declined in dominance as Chrome rose, and the demands of server-side development started to be felt more strongly in the JS community.
Languange evolution kicked into high gear at that point. There are a bunch of interesting pluggable transpilers out there, including TypeScript, JSX, and Flow, and countless non-standard plugins for Babel.
Client-side frameworks were tough to implement on IE6, not least because IE6 was just so darn slow. As newer, faster browsers came out, it became possible to trade off some performance to improve developer productivity.
And everybody has their own ideas about what those trade-offs might be like!
At the same time as IE6 started to decline in popularity, the mobile web on iPhone and Android rose in importance. Smartphones include a bunch of new sensors (GPS, orientation, camera) and new limitations (RAM, slow/unreliable network). This spurred on browser vendors to "compete with native apps," adding features to the browser platform, inviting developers to respond to these with new frameworks.
As for the JS server-side, Node.js is still a relatively young platform as these things go, and so it's not surprising to see a lot of churn in server-side libraries/frameworks, especially given how much churn the language itself is undergoing.
Node.js is also the first major platform to be born in github, which IMO encourages experimentation (and flame wars) via forking.
Node.js's standard library is designed to be small, (they call it the "core" and resist Python's "batteries included" philosophy,) forcing folks to rely on libraries and frameworks to keep the lights on. Even most libraries themselves need to take dependencies on other libraries, because of this "small core" philosophy.
I think it's going to be at least a few more years before things start to cool off a bit. Enjoy the ride, if you can!
The variety of backend requirements, and the flexibility of UX, led people to solve many individual workflow bottlenecks or generalize to any/many.
Then so, like the English language, exploded to the simple-->jargon range of overloaded usage and niche comprehension, very quickly fragmenting, but universally powerful.
Developing a framework as a startup for a particular use case may take more time than prototyping on an existing framework--this is why the prototype should be discarded, and a critique of how open source/reusable code has always been a source of technical debt apart from the rare, shining outliers.
Frameworks as a popular thing started because people (rails?) started sharing their code and no other can share code as easily as JS and npm.
Angular 2 should be called Begular because it doesn't have anything to do with Angular but inspiration. You can stay on Angular but don't be surprised that people will prefer to develop something else since Angular folk painted themselves into a corner so hard that to make framework that sucks less they need to go back to drawing board.
That's unusual. These frameworks extend the language. Angular's developers reasoned that anyone smart enough to figure out Angular 1 will be able to migrate their code to Angular 2. It's looking more like C++ and less like CSS. :)
TLDR: I believe its mostly due to the lack of basic language facilities in pre-ES6 JS. With ES6 covering the basics this will probably slow down (At the very least people will stop writing their own module and object systems)
However, moving fast does percolate down from the top. Look at Node.js and how often they release new versions.
Also, some of these things are getting addressed over time, so I'm kinda going to talk about the state of JS over the past decade rather than the state it is in right now. Some of these things are being mitigated (very few things are really being "fixed"), but it's still early. These issues have historically included, but are not limited to:
1. Poor modularity brought on by being not just a "scripting language" like, say, Python, but a language actually designed to write small event handlers that fit into a single HTML tag attribute. "x = 56" defaults to putting x in the global namespace. The language did not provide modules or very much in the way of separation by default. You've pretty much always been able to namespace things, but you had to really work at it; the language did not help. (I'll also toss in the dynamic typing here, just because I don't want to give it a full slot here, but it does inhibit making big projects easily.)
2. Very poor control-flow management ability due to the choppiness of event-based programming. There has historically not been a way to maintain a call stack across events, which strips away all the tools of structured programming, a set of tools so fundamental to how we operate that we often don't see them as a fish doesn't see water. Promises and generators allow us to try to mitigate this, but at the cost of spending design budget; promises for instance introduce a second entirely new set of control flow mechanisms that mirror the base language's looping and flow control constructs, particularly annoying because you must control both error and normal flow on both of these levels.
3. The browser's interface to JS is the "Document Object Model", which due to historical reasons is a Java-designed API bolted on to the side of JS. A native JS model could have been much more powerful and easier-to-use, requiring us to burn less design budget on simply interfacing to the browser in a reasonable manner. A lot of the design churn is attempts to answer the question "How can we make manipulating the DOM more JS-native?" There are also several performance issues introduced by the fact that the DOM model, combined with the rendering model, is extremely rich; things like manipulating a node on a page vs. detaching the node, manipulating it, and reattaching it have historically had end-user-significant differences in performance, as every DOM change triggers an incredibly complicated set of updates to a widget toolkit that was designed for flexibility rather than performance.
4. Browers themselves further introduce many complications. Then you have all the security issues that arise from being fundamentally client-server with dubiously-trustable servers. You have all the details like what cookies flow between what domains and where and when, that you need a different domain for your static content both for security and performance reasons (prior to HTTP2 particularly), and any number of crazy APIs that also vary across browsers, requiring the developer to use shims for things as simple as XMLHTTPRequests because you just never quite know what you actually have.
5. I could have list "client-server" in #4 there, but it's also worthy of its own callout. Many frameworks have different solutions for client-server interactions, ranging from ignoring the problem and letting you solve it up through Meteor-like attempts to completely blur the lines between the two, and everything in-between. Client-server interaction has been further inhibited by the fact that historically, there have not been any reliable and high-performing mechanisms for streaming things between the client and server, creating a design limit around needing to be request-based, further creating a wide variety of ways of hacking around this problem, each with their own quirks.
6. As an open standard, nobody is really empowered to fix these problems in a coordinated way. As a result we're sitting on top of 20ish years of standards, some well-done, some poorly-thought out, some hackily fixed after security issues, many poorly-understood by developers, and all in the browser.
7. Finally, one must not ignore the fact that web pages continue to become intrinsically more and more diverse. The best framework for a document-centric app is one thing, the best framework for a CRUD app another, and neither of those will help you much with an intrinsically real-time streaming app like a chat client.
And there's probably a couple more dimensions I could come up with if I thought more. What you see is that there's a lot of possibilities for mitigating all these issues ("solving" is often not on the table, these are mostly fundamental issues arising from layers below the JS), and the framework churn is in many ways nothing more than people combining all of the various combinations of possible answers to these problems, looking for synergies, solving different problems (per #7), and basically frantically rifling through 60+ years of computer science theory looking for the perfect solution to problems in an environment with so many fundamental strutural issues that no perfect solution is possible. Which is also why you see such vigorous advocacy sometimes; someone thinks this is it, this solves all my problems once and for all because it worked for a couple of weeks, and only once the community has chewed on it for a while does it become clear that there's a lot of people with different needs for whom that doesn't work so much, and it also didn't actually solve all the problems once and for all after all.
BTW, none of this is criticism of the JS community, merely explanation. Given the hand we've been dealt in the web browser, lots of people trying lots of things is the best we can hope for. The fatigue is just an unfortunate, but unavoidable, side effect. The best solution for the fatigue is to concentrate more on the fundamentals being explored than the details of a particular framework. For instance, "reactive" programming is its own paradigm, with its own lore and learning; learning how to program that will also let you write better spreadsheets and be better at creating database triggers, for instance. Concentrate on the fundamentals. The fundamentals are not churning that fast.
Skip the chart, look at the long tail of listings.
Should there be?
That's not the problem, angular 1 and angular 2 are 2 completely different frameworks that share the name and the team only. The team wanted to piggyback on the fame of the first version, but they share absolutely nothing conceptually. and contrary to what the Angular team says there is no "upgrade path", you need to learn the stuff from scratch once again.
The problem is, and the Angular team will find out very soon, "second systems" unless they provide huge advantages over the first version, are always a failure.
...and it is where a lot of excitement is now. Excitement drives development (of tools themselves and general usage). Much of the time, it is for the best.
People tend to get lost in tooling, which I can understand.
It's always on. Anyone from anywhere can interact with what you create instantly. What else is like that ?
There are very great developers in the ecosystem, who write great tools and libraries which become popular, are well maintained and documented. But the majority of the developers are just average developers. As everyone, they attend conferences and bootcamps, and when I then talk to them, the usual thing they learned there were two things: (1) make a blog and write about what you are doing and (2) make some OSS projects or participate in existing projects.
It is very great to have people who create projects and bring in new ideas, it helps create a mature technology. But the truth is, most of the average developers have never been in larger projects, have never been digging into complicated/large open source libraries and have never had to manage larger applications. One of the most important things you learn in such projects is to be calm and think about documentation, architecture and dependencies carefully.
And this leads to the current situation;
- we have a lot of libraries doing the same things, just because developers do this "just create an oss project on GitHub/npmjs" thing without searching for existing solutions
- some hip developers have so many projects that I always ask myself how they are planning to support all these
- when a problem arises, e.g. a bug in a library, many developers these days seem to tend to write their on lib fixing that problem (if it is a small library) or building an internal workaround instead of contributing back to the original project
- on the other hand, there are a lot of project maintainers who ignore issues and pull requests just because they have a very strong opinion about what their library is doing. Oh boy, sometimes it took me days to write a PR which (from my point of view) improved something or added a new feature, carefully followed existing guidelines (code formatting, docs, etc) just to get the answer "nah, that's not my scope. Fork the project or write your own"
- it seems to be easier to convince people with less business experience. They often jump on the next hot train coming along that sounds good. I don't want to exclude me here completely; as I read about React, it started working with it directly - because it seems to solve all the problems I had with Angular and Backbone
- I have the feeling that a lot of developers today (still) have this "read the f*g code" mentality. Even mature libraries developed for years have so bad documentation (even though they have their own .io domain just for it) that I have to read their source to see what parameters I can pass into a function.
[edit: typos and formatting]
we need a full IDE, Language, Library combo for better development.
- Has no standard library.- Is used to automate host platforms that have either no standard framework or very little (e.g. Node on v8 doesn't have nothing but it's quite small).- Has no module/namespace system.
The effect of this is that immediately, anyone building anything in non-trivial has to make a decision about how to fill in things that would be covered in a standard library. I'm not even talking about fancy stuff, just the stuff supplied by underscore, lodash, etc. The choices are basically:
1) Write all the code yourself. This is an extremely low ROI option2) Adopt a series of libraries and hope you can get them to work together3) Adopt a framework, that by its nature, will be designed to use some sort of new pattern and this pattern will be expressed on top of whatever libraries the framework uses, so just draft behind that.
There aren't really many other mainstream systems where a language is used to specialize applications on a platform where this situation obtains. Windows, OS X, iOS, Android, even Java, come with enormous, enormous amounts of library code. Generally, this library code also pushes one fairly firmly towards certain design patterns.
Imagine if we all decided to use...hmmm...Scheme, I guess, to develop Windows applications, and you took away everything but the lowest-level Windows APIs. I'm using Scheme because the Scheme standard outlines a remarkably small language that has nothing approaching a standard library.
We'd probably be in a similar situation. How do you do this? How much does adopting this or that library force you to do this or that? It's just not very common to have a situation where to do anything non-trivial, you need to either: - adopt an enormous amount of third party code (because the situation works at every level, each third-party solution will also not be built on a standard library ecosystem) - write an enormous amount of boilerplate code.
And further, the issue is exacerbated by the fact that js doesn't really have a standard module system, so even the approaches taken to fill these gaps are frequently non-compatible, or just choosing which system to use to manage modules often means replacing huge chunks of your application.
There are other reasons why JS the language is moving, all of the sudden: JS has had a lot of rough edges and all of the sudden a confluence of interest, capability, and technology has made it possible to sand down some of those edges.
But I think even if the ES process slows down, and we all agree that language-wise the features in the language are pretty good or something happens that freezes, we'll keep seeing lots of churn because of the interaction between every project being built on towers of third party code with far-reaching effects.
When Java, for instance, was released, the standard library it shipped with included: - a set of standard container classes: hashes, vectors, arrays, etc. - a rich set of real types (e.g. numbers that weren't insane, Objects for compatibility with the object system, primitive types in the language for performance) - a whole tree of calendar/date manipulation code - a standard way of connecting to SQL databases and all the code for that - a standard GUI-drawing and event-handling system - a big, rich set of APIs for handling IO of various kinds with different performance/complexity tradeoffs. - a concurrency api, threadpools, etc.
That's just a sample. And all of the bits worked together, and sort of implied patterns in how things should be built and used.
You could certainly replace anything, should you choose to, in your project (e.g. the calendar stuff really sucked), but the point is, there was a default, and there was a standard pattern for where and how to bring in new library code, and that new library code would in turn be built on as little third-party code as possible.
Look at an average iOS project's Podfile or Carthage file, Android project's Gradle file, and then look at a Node or browser js project's package.json. Then actually look in Pods and node_modules. The average amount of third party libs in a JS project is many orders of magnitude higher than in the others.
This is just like...no one writing an Android app is like "which Runnables library are you using?". No one writing an iOS app is like "soo...the new GCD spec looks interesting, which GCD lib are you using for your project? Oh yeah how spec-complete is it? Does it work with AFNetworking?"
Iterating arrays, objects, & strings"
Compare this to something like AppKit (and UIKit), which were very much in the pre-internet/sharing mentality: there is one framework everyone has and becomes experts in and is fairy stable, because its kind of the only thing you can rely on being around. Sharing code is very difficult, to the point where just copying and pasting files is still a valid contender.
The explosion of options and the increase in churn is a natural consequence of this. There are simply more people working on more problems, all encouraged by an environment where sharing code is a fundamental property. If step 1 of setting up node is downloading other people's random packages then it should be no surprise that step 4 of sharing your own packages will seem natural. We should expect this to only get faster -- the more people program, the more crazy ideas will be tried, the more switching there will be. I really don't understand what the alternative is: arbitrarily choosing frameworks to be around for a 5 years (a decade?).
Unless you believe we're really close to figuring this whole "software development" thing out (whatever that means), I wholeheartedly believe that programming 20 years from now will look more like this -- faster pace of developments.
- I took 1 month off. Seriously. No computers, just reading, playing games and swimming. I needed a break.
- I spent 3 months leaning Deep Learning from the fundamentals - learning without an urgency of time meant I could do things like: I couldn't remember the chain rule in calculus, so I could just stop my lessons there and go and spend 3-4 hours learning that, then resume lessons - this ability to stop and research as required was immensely powerful to getting a deep understanding.
I have spent the last 6 months building SignalBox - a Deep learning platform. I now have 15 large customers, and I'm scaling up -- I cant keep up to be honest, but automation is helping me scale this out a lot.
I am now focusing more on computational chemistry and molecular exploration with Deep Learning.
I really think Universal Basic Income is a good thing, because although a large part of the population could piss it away, I am by no means unique, and there must be hundreds of thousands, or even millions of other "me"s out there that would benefit from having the necessities paid for so that they could just produce great work.
As others here have predicted, I spend a lot of time outdoors (having moved to France specifically for the rock climbing) and building tree forts in the back garden for the kids. Pretty much any day can be a day off, so if the sun is shining you probably won't find me at the computer.
I also find I still work quite a bit (which translates to a few days a week for me). Partly because I realize that products come and go, and that these ones will eventually plateau then fade away, so I'd better have another one in the pipeline to replace them when that happens.
But partly because it's fun. This has been my hobby since I was a kid, and it's only an accident that somebody decided that we should start paying computer programmers hundreds of thousands of dollars back in the 90s. Had that not happened, I'd be an Engineer who programmed in his spare time. I used to spend most of each year traveling, and I'd find that the thing that brought me back to the "world" was never money, but the need to use my brain again.
I bet that even if this next thing  takes off and leaves me idle again, I'll probably find another fun project to work on.
Then travel the world with my girlfriend, eventually our family.
Then I'd use this platform to disrupt higher education and hiring/job seeking systems.
1. Self-fund a PhD in something worth a damn.
2. Work harder on developing family.
3. Write a fiction.
4. Wonder about (figuratively) with no aim in particular.
Oh, you mean _in_ the tech industry? I'd probably spend a fair amount of time working on space tech and real time software. There are untold lessons in reliability, efficiency and know-how that I'd like to at least glimpse before I'm gone - I've had enough of the mess that the Web has become in any of those regards.
- spend more time volunteering in animal sanctuaries.
- never read another business book or listen to a business podcast again.
- never think about marketing, SEO, CAC, conversion rates again.
- spend more time cooking.
I'm fascinated with farm-tech. I went into tech because there isn't money in farming. My passion is farming. A fusion of the two is my ideal job.
(I've had free time to do amazing things several times and I e always blown it by lack of motivation.)
Also, my deadlift, left hook & bike endurance. Wouldn't mind a few multi-week self supported bike rides thrown in there.
Travel and meet top researchers I admire and learn from them.
Solve real human problems.
If you don't have any DJ friends, try to make some. I only got to really understand the process when I had someone show it to me. Mixing itself is actually easy and straightforward, but somehow hard to explain in text/video form.
If you can't do the above, try these resources:Advanced Vinyl Handling (oldschool but very comprehensive article series): http://music.hyperreal.org/dj/AVH/Basics.html
Decent videos on Youtube from Ellaskins: https://www.youtube.com/user/ellaskins/videos
Ideally, get your hands on some good quality turntables/CDJs to really get the feel. Don't waste your time with poor or unsuitable equipment like belt-drive turntables, it will only hinder your progress. A pair of Pioneer CDJs and/or Technics 1200s will do you well.
If you just want DJ with software and auto-sync, you don't need to learn much beyond pressing play on deck A, pressing play on deck B, cutting bass on deck B, crossfading to deck B, returning bass on deck B, rinse, repeat.
The skill in DJing is in the doing not the theory because part of the skill is taking the risk of people not liking the mix. That skill is learned through practice. Mixing better music is learned through feedback.
Here's the free book in HTML form:
You can also buy a PDF version that comes with several hours of Zed doing the exercises. I bought that just because I liked the content as I prefer text, but you might have different tastes so here's the link:
Python for Data Analysis http://amzn.to/2dDw6fL
Web Scraping with Python: Collecting Data from the Modern Web http://amzn.to/2eov4dZ
Python Machine Learning http://amzn.to/2eobdt3
For learning, I'd recommend taking something like Janert's "Data Analysis with Open Source Tools" and go through chapter-by-chapter trying to figure out how to implement the various analyses in Python. That book in particular uses a different technology every chapter for its tutorial exercises, so ignore those. But the exposition of the concepts is fantastic.
Take an icy plunge right into the "Titanic: Machine Learning from Disaster" dataset ;)
Now I am able to read the books because I desire the knowledge to further my passion.