Ask HN: What is your side project for 2018? - <AUTHOR> I just started learning Developing application and I am looking for passive income ideas. I'm actively looking for income sources and my skills. I just launched https://www.cmyport.com/ as a side project and adding new feature soon. I am learning php/mysql and looking for suggestions. <comment><USER3> I have 3 big ones.

\- Nulis - a tree text editor for writers

[https://nulis.io/](https://nulis.io/)

I have built a beta that was very well received, now it's time to clean up the code(rewriting it from scratch), add some cool features, and follow the roadmap to complete v1.0.

\- Helix - a habit tracking app

[https://helix.startuplab.io](https://helix.startuplab.io)

Designed this app mostly for myself, but I think it turned out great, has a lot of potential, and users seem to love it. My goal here is also to complete all the functionality I've set out to complete with my roadmap and reach a solid v1.0.

\- Startup Lab - <USER2>

[https://startuplab.io/blog](https://startuplab.io/blog)

I want to seriously pick up the pace and quality of my blogging. I want to finally develop a sustainable daily writing habit, and make some successful posts.

====

If I succeed, I will have two awesome SaaS projects to sell, and a great traction channel(articles + medium publications + reddit) to promote them.

I've estimated that I will need 40k total visitors(or 9 months of 150 daily visitors) to reach my goal of $1k MRR

(40k visitors * ~5% retention * ~10% conversion to paying customers = 200 paying users. 200 users * $5/mo = $1k/mo).

If I successfully accomplish my plan - I will finally achieve my dream and become a successful startup founder.

====

As a bonus, I would love to find a good voiceover actor and produce YouTube videos out of my articles(or learn to speak better and do voiceover myself); and I would also experiment with engineering as marketing(I have 3 smaller projects I could promote and use as a traction channel).

<comment><USER4> Is there a "long-term" view for Helix where you can zoom out and see a map of your activity? Kind of like GitHub's contribution graph.

I'd use this, looking forward to a V1.

<comment><USER3> Yep, there is! Open the menu and click "Calendar".

<comment><USER4> I just signed up. Going meta for a second, this only works if you make using Helix a habit :).

</comment></comment></comment></comment><comment><USER5> I'd like to port the entire authorization module from my open source Python project, Yosai, to Rust and use it as a shared library from Python. I PoC'd this work last January, resulting in the release of my first crate and Rust tutorial. I haven't touched Rust since, though, but intend to push on further.

A complete Rust implementation has the benefit that it can be adapted to myriad other languages and thus has a much wider audience appeal. It's also about 10x faster than cpython, but pypy may eliminate that gap entirely. Of course there are the usual other benefits, as well.

Since Rust is in its infancy for application development, such an authorization library would address a growing need by the Rust ecosystem.

If any programmers want in, email me.

References:

Yosai: [https://github.com/YosaiProject](https://github.com/YosaiProject)

Python-Rust adapter: [https://github.com/YosaiProject/yosai_libauthz](https://github.com/YosaiProject/yosai_libauthz)

authz.rs: [https://github.com/Dowwie/rust- authz](https://github.com/Dowwie/rust-authz)

blog post: [http://daringordon.com/rust_tutorials/](http://daringordon.com/rust_tutorials/)

<comment><USER6> I can't find your email.

</comment></comment><comment><USER7> As a side project to learn React and Firebase I threw together a side project in an afternoon to help couples spice up their bedroom time (very slightly NSFW, no nudity). [https://pairful.com](https://pairful.com)

Obviously a lot of CSS work to do, however with some better SEO and animations, it could be a useful tool with affiliate possibilities. This isn't an area I know much about/care for, however.

</comment><comment><USER8> If any of you are interested in working on side projects full time, we're starting a community in NYC of people doing just that.

Check us out if interested: recesslabs.com

For me, my last side project was a crypto-related joke site (sendcryptopeopletulips.com).

I think the next one will also be a humor + tech project. I'm really interested to explore tech as a medium for comedy.

<comment><USER7> This sounds interesting - working on side projects full time sounds like a contradiction in terms however...

</comment></comment><comment><USER9> Changing my job. As I'm looking for remote only in European hours - it will be quite challenging. Family issues don't allow me to work in US hours from Europe. I think this will be my full time project, as such a position is quite unique in Europe.

Besides I'm going to read a lot, and finally understand Haskell.

As for the programming stuff: write a book about databases, and write some Postgres patches for fun.

<comment><USER6> I won't mine hanging around, reading your book, and testing your patch

</comment></comment><comment><USER10> Last few months I've been building digital musical instruments for Android [0], I guess I'll continue working on that. So far I've built a few 'instruments' that emulate traditional instruments (guitar, organ, choir...) that you can play in real time on your phone. During next year I would like to take advantage of interactive platform, to make the instrument actually respond to your playing (and then to augment it).

[0] [https://play.google.com/store/apps/details?id=com.castlewrat...](https://play.google.com/store/apps/details?id=com.castlewrath.hexpress)

<comment><USER11> Very cool! I love the guitar mode especially (as long as I'm leaning far to the left to get a clean sound haha).

I was wondering, what are you using to make this? Are the sounds sampled, or is there digital synthesis going on?

<comment><USER10> Thanks. I'm using free samples I find around (common source being decompiled soundfonts). I also plan to integrate Faust audio processing which would enable true digital synthesis and HiFi sound effects. Next version of guitar should have wah-wah effect.

</comment></comment></comment><comment><USER12> Been working on this game to teach people how to code on the blockchain, Ethereum and Solidity. [https://cryptozombies.io](https://cryptozombies.io)

<comment><USER6> Would you allow someone to work with you ??

</comment></comment><comment><USER13> My side project for 2018 is to finish my side projects for 2017, some of which were also side projects for 2016.

I swear I'd end up late for my own funeral.

<comment><USER6> I will stop you from attending your funeral.

</comment></comment><comment><USER14> Mainly I'm devoting my free time to a native REST client in the vain of Postman or Insomnia. It's also been an excuse to learn the Qt framework and brush up on my C++ skills. So far, I've found C++ to be insane, but I quite like Qt.

[https://github.com/tmstieff/Woke](https://github.com/tmstieff/Woke)

</comment><comment><USER15> I'm working on a little project I've been tinkering with for the past 9 or so years. Its a club-house of sorts for artists so that they can learn and discuss art.

One of the features is called 'Lightbox' where you can draw overtop a picture and follow steps of a tutorial. Another feature would be to help artists find resources related to your niche with 'LinkKit'.

Right now its very old code and I've been working on a much cleaner update during the past year. So, once its ready I'll do the show 'Show HN' thing for feedback.

Here's a taste of the old code.

Lightbox [http://artjutsu.com/lightbox/canvas/Default.aspx?q=3](http://artjutsu.com/lightbox/canvas/Default.aspx?q=3)

LinkKit [http://artjutsu.com/beta/linkkit.aspx](http://artjutsu.com/beta/linkkit.aspx)

</comment><comment><USER16> I'll be continuing work on Jam Together.

Jam Together is a web application which you can use to play some music together with your friends, remotely. Right now it's possible to play with a midi keyboard as well as just your laptop keys.

I've got a piano, a synth and a drum kit working (if you create a free account. Piano only without an account).

I'll be adding more instruments, work on reducing latency (anyone here with multiplayer game development experience that would like to help out?), different jamming modes, and most importantly work on some marketing to get more feedback on the app so I can evolve it in the right direction.

Check it out on the link below. A couple of disclaimers though... Chrome only, optimised for people residing in the EU for now, otherwise latency is too much of an issue to reliably play.

[http://jamtogether.eu](http://jamtogether.eu)

</comment><comment><USER17> I will keep working on CryptoProphet.co - a smart alert system to keep you updated on any unusual changes of prices of your favourite cryptocurrencies. We send our cryptocurrency price alerts through Telegram.

[https://cryptoprophet.co/](https://cryptoprophet.co/)

<comment><USER18> What kind of algo are you using to detect changes?

</comment></comment><comment><USER19> Learning video editing and video production to a level somewhere between OK/meh Facebook video and Casey Neistat. I know it can be more an art than a science, and I am learning from every videographer/producer/tech person that I talk to. Just getting a workflow down is a WIP. No one reads blog posts anymore, and I think this is a good skill to cultivate. I've done my share of volunteering as a teacher/tutor, and I'm beginning to believe I can better bring value to these organizations by helping them share what they are doing through snappy, informative short videos. I don't think I am a good teacher/tutor, and I am a natural storyteller. Does anyone have tips, suggestions, recommended sites/books? I will be using Adobe Premiere Pro.

</comment><comment><USER20> I will continue working on "The Better Wiki", which is a proxy to Wikipedia with better readability. Inspired by "Reader View" of Safari.

[https://thebetter.wiki/en/](https://thebetter.wiki/en/)

</comment><comment><USER21> I'm currently working on a sort of mind mapping system at the moment, with the idea that I can use it as a sort of personal database.

I'm using ArangoDB ([https://www.arangodb.com/](https://www.arangodb.com/)) to store ideas as collections of nodes, where the properties and details of those ideas (or objects) can be connected to eachother. The properties can be simple descriptions of the node, or documents such as html, pdf, or images.

Im doing this because my memory is terrible (ADHD), and I want to make a system that lets me take notes and record ideas in a way thats more... organic in the way that I think about things. I also tend to use a lot of documentation from the web, and have no way of sorting it other than through bookmarks. Being able to pull webpages off of the internet and reference them within notes is a powerful tool, I have found.

I'm excited for the project for a lot of reasons, but what excites me the most is what I can do once I have this personal database filled out enough. I will essentially have a graph based model of what is typically floating around my head, like a network of thoughts, interconnected by both objective and subjective properties. I aim to use this database to build a sort of personal assistant, personalized for the user.

I think that this is something that we are kind of missing today, where a lot of our interactions come from the internet, this ephemeral space where you can't exactly organize everything that you see and interact with. As an example, imagine that you saw a neat article about cancer research that you wanted to tell someone about later. You send the URL to your database server where it is downloaded, parsed, tagged, and linked to other articles or notes that you may have (this would start out being manual, but I hope to automate it). Once that info is in the database, you can have it recalled through either a direct request for that record, or through implicit actions such as looking for scientific papers in the database and narrowing it down to the one you want.

I have nothing to show for the project so far, it still in it's infancy, but I really think that this is something that will be useful to people, if at the least just myself.

<comment><USER22> Solve your own problem, I like it! Keep us posted.

</comment></comment><comment><USER23> To finish the implementation of an XMPP server written in Go (Golang) [https://github.com/ortuman/jackal](https://github.com/ortuman/jackal)

<comment><USER24> Curious, why not instead contribute your valuable Go expertise towards matrix (specifically the homeserver called Dendrite)? Certainly don't want to take away any of your passion for xmpp...but if you haven't read up on on matrix in general, I encourage you to do so.

For matrix in general, see: [https://matrix.org/](https://matrix.org/)

For diff. between matrix and xmpp, see: [https://matrix.org/docs/guides/faq.html#what-is-the- differen...](https://matrix.org/docs/guides/faq.html#what-is-the-difference- between-matrix-and-xmpp)

For Dendrite - matrix's homeserver written in Go - see: [https://github.com/matrix-org/dendrite](https://github.com/matrix- org/dendrite)

Cheers!

</comment></comment><comment><USER25> Building an API based quick report service (around Typeform, Zapier, Mailgun, and R-Project's Plumber service) for my professional and academic businesses focused on essay editing and resume writing. People don't have the time or inclination to do final edit themselves so these tools will tell them how bad their doc is and whether they need a professional service like ours. Will mostly be for Asian clients who find me on China's Taobao and Weidian where we have our electronic shops.

</comment><comment><USER26> I've two side projects that I plan on working on in 2018:

\- A "Travel Guide" for Physics, which collects the best explanations for any physics topic and sorts them depending on the required level of sophistication: [https://physicstravelguide.com/](https://physicstravelguide.com/)

\- A platform, where students and researchers can publish their notes: [https://physicsnotes.org/](https://physicsnotes.org/)

</comment><comment><USER27> I have been developing [https://useragentinfo.co/](https://useragentinfo.co/) as a side project. It's a simple device, browser and OS detection. Currently it's running in a single server setup over linode. By Jan2018 I'll be migrating it to AWS Elastic Beanstalk for stability. This will be my weekend timesink.

</comment><comment><USER28> I am working on an Open Source website to visualise most efficient learning paths.

Website: [https://learn-anything.xyz](https://learn-anything.xyz)

Code: [https://github.com/learn-anything/learn- anything](https://github.com/learn-anything/learn-anything)

Currently trying to move to a new design and format.

<comment><USER29> I've seen your project before, amazing! keep up the good work.

</comment></comment><comment><USER30> I just finished my latest Hacker News reader. I usually read HN on my phone, so over the years I've written several wrappers to improve the layout on mobile devices, and also to test out new tech. This version uses Bootstrap 4 for the frontend and ASP.Net MVC Core 2 on the backend, running on a Linux server. [http://webbindustries.com/hackernews](http://webbindustries.com/hackernews)

For 2018 I'm hoping to make progress on an app I've started, which handles Project Management specifically for software development consultants. The difference from most other PM tools is going to be handling multiple projects for multiple clients, client/role-restricted views, separate-but-linked requirements and task+time tracking, and separate-but-linked budgeting and estimating. I'm designing this primarily for myself, but also so that it can become a SaaS product I can offer as either a hosted service or self-hosted product.

</comment><comment><USER31> I'm working on a multilingual CMS that bundles all the core services that startups have to sign up for:

[https://pollygot.com/](https://pollygot.com/)

It's more of a full-time project until it succeeds or fails. If it takes off then I'd love to build SEO recommendations and Digital Marketing tools into it. These are 2 industries in the content world that really need to be commoditised.

As a side-project to Pollygot, I'd love to do an RSS reader app where you can view discussions from both HN and Reddit within the same app. If this one takes off, then I'd love to do a Flattr/Brave type model of micropayments within the app

</comment><comment><USER32> A small programming language, lisp-inspired (no parens with python's offside rule) targeting js (and lua later). An example:

\- input: [https://p.sicp.me/gti5L.lisp](https://p.sicp.me/gti5L.lisp)

\- output: [https://p.sicp.me/bRaaf.js](https://p.sicp.me/bRaaf.js)

It's written in lua (915 lines at the moment). I do that to help me with the building of a programmable voice assistant ([https://github.com/slasheva](https://github.com/slasheva)).

BTW this topic is a great idea. 4chan has a daily programming thread like that.

</comment><comment><USER33> 12 smart contract projects, one for each month. So far I have a list of 9 projects to do, easy stuff. The usual, lottery, auction... But I want to do it from the point of view of a python backend server, so I plan to use Viper.

<comment><USER34> I'm interested in doing similar. Due to time constraints might be be per 2 months.

Some ideas:

Poker variant - quite hard but thought of a way to do it without a trusted oracle.

Hodl contract - forces you to hold for X months

Simple asset price contract where 2 parties bet each way. Requires an oracle.

Sports betting. Oracle.

Reputation coin - prove your general rep by aggregating HN, SO, Reddit etc. scores. Oracle.

The usual lottery

A "ponzi"

Let me know if you want to get in touch and I'll stick an email in my profile. Would like someone to bounce ideas and help each other if stuck.

<comment><USER33> I am really interested! I particularly like your idea about the simple asset price contract. Could be really cool to get in touch.

</comment></comment></comment><comment><USER35> 1.

Release finally my timetable generator application for highschools/universities [https://github.com/karandit/confetti/](https://github.com/karandit/confetti/)

2\. Finish my other long pending project, a REST API game inspired by the detective game Cluedo [https://github.com/karandit/rest_dojo_web](https://github.com/karandit/rest_dojo_web)

It was used as a motivation for me to learn elm [http://elm- lang.org/](http://elm-lang.org/)

</comment><comment><USER36> I'll try adding few more feature to my static blog generator [https://github.com/geekodour/gitpushblog](https://github.com/geekodour/gitpushblog)

</comment><comment><USER37> I started a website for my final capstone project for my Bachelors degree in software/mobile development application and website design.

I am going to be working on finishing that up in 2018.

It's a huge project that is going to take me quite some time. I want to keep the site 100% ad free, so I trying to put together some ideas on how to monetize it. For now I an just asking for donations. But at some point I might need to figure out some kind of way to monetize it.

\- United States Ghost Towns [http://unitedstatesghosttowns.com](http://unitedstatesghosttowns.com)

</comment><comment><USER38> I've made an android app, 2 months ago, to keep track of your coins (Bitcoin & altcoins). I'm still developing the app and new features will come in 2018 ! Don't hesitate to give me your feedbacks. [https://play.google.com/store/apps/details?id=com.juniper.wa...](https://play.google.com/store/apps/details?id=com.juniper.wallet)

</comment><comment><USER39> Hookdoo: SaaS that allows you to create incoming webhook endpoints to run shell scripts on your remote servers. [https://www.hookdoo.com/](https://www.hookdoo.com/)

And of course my open-source webhook server project: [https://github.com/adnanh/webhook](https://github.com/adnanh/webhook)

<comment><USER40> How does Hookdoo differ from plain old CGI scripts? I have no idea why I would need it.

<comment><USER39> Hookdoo allows you to execute the same script on multiple servers. It's centralized, and you don't have to maintain multiple versions of the same script on multiple hosts. You can easily add or remove servers where the script should be executed etc...

It also adds the concurrency control feature so you don't have to worry if you want only one instance of the script running, or want to kill the currently running one, or run them in parallel etc...

Another feature would be generic trigger rules where you can use values from payload to see if the script should be run at all (i.e. push to the feature branch, but you want to run the script on merges to master...).

As a developer, all of this might sound easy to implement, but whatever you make, you also have to maintain... And as you know, the business requirements tend to change quite often and you'll get to a point where you have to generalize your custom CGI scripts, and you end up spending more time maintaining infrastructure than doing development on the actual product.

Webhook on other hand is pretty much a CGI server with a few handy features :-)

</comment></comment></comment><comment><USER41> [https://elastic.news/](https://elastic.news/) \- soon with 100% more elasticsearch!

</comment><comment><USER42> I need to improve the write up, but I'm coming to the end of my current iteration of a genetic algorithm to evolve the Mona Lisa from polygons.

This year I reimplemented it in rust and did some low level optimization to make it fast.

[https://github.com/peterbraden/genetic- lisa](https://github.com/peterbraden/genetic-lisa)

</comment><comment><USER43> Getting users on my just-launched REST API Monitoring SaaS:

[http://www.apilope.com](http://www.apilope.com)

Initially I thought it'd be easy to acquire users since I'm speaking to my own kind - but it's pretty hard to get into developers' head :) No instagram influencers can be used, that's for sure.

Anybody have any ideas?

</comment><comment><USER44> I started out trying to figure out what a weekly sprint kanban board might look like if it were a pocket notebook. Ended up somewhere a little different ([https://1rick.github.io/bluebird/](https://1rick.github.io/bluebird/)), but it suits me ok for my own pocket task manager.

</comment><comment><USER45> If I have time it will be updating my last project, [http://cinetrii.com](http://cinetrii.com) , with a more sophisticated algorithm.

It infers inspirations for queried movies using their reviews: [http://cinetrii.com?i=tt5580390](http://cinetrii.com?i=tt5580390)

</comment><comment><USER46> Work on governed.io, a native app that makes it easy to fax and manage your communication with your congressional reps.

</comment><comment><USER47> I don't know yet. For me "side project" means significantly less planning. My method is to listen to people around me, "I wish I had a tool that could do x."

If it's simple enough, I don't bother Googling for a solution, I build it for them. Exactly as they request. Nothing more, nothing less.

</comment><comment><USER48> Hydroponics.

Between farmbot and MIT openAg, it feels like there is momentum to disrupt the food industry. From my first tests this year, it is way cheaper and gives better results, to grow my own food either in the small plot in my back yard or inside in some sort of hydroponic setup. My goal is to make it super simple.

</comment><comment><USER49> I've just started a native Android project for wrapping Wakatime operations (I find current offerings not good enough). So that will be a project going forward into 2018.

Also going to create some free example applications for hopefully teaching more advanced native concept on Android to any who want.

</comment><comment><USER50> I will be definitely working on Appure ( [https://appure.io](https://appure.io) ) - screenshot generator for App and Play stores, adding new features, improving existing stuff. Still, have a lot of hopes for this app

<comment><USER50> ... And even though i don't have a lot of users, existing ones are very loyal and happy with the tool. It gives me a boost every day knowing that someone actually benefits from what i'm doing.

</comment></comment><comment><USER51> I recently found a book for children featuring "NLP" for making them sleep. Apparently it's a best seller on Amazon. I think I'll buy it and adapt it for spicing up relationships. It's gonna be huge. Sigh.

</comment><comment><USER52> We are a software development company from Nepal. We launched [http://www.99leave.com/](http://www.99leave.com/), a complete attendance and leave management system.

<comment><USER53> No exactly a "side project".

</comment></comment><comment><USER54> Same as last year. New publishing platform for independent journalists [https://www.demotico.com](https://www.demotico.com).

Looking for beta testers to give feedback at the moment.

</comment><comment><USER55> I'm working on a browser extension that replaces the New Tab page with a Bitcoin price chart: [https://crypto-tab.com](https://crypto-tab.com)

<comment><USER56> This is neat! Can we have an option to change from USD to EUR and select a preferred exchange? I'd like to see Bitstamp prices in euros if possible.

<comment><USER55> Not yet. Currently I'm working on adding Ether and Litecoin. But I'm adding this suggestion on my suggestions list! Stay tuned :-)

</comment></comment></comment><comment><USER57> I'm working on a freight brokerage to compete against Uber Freight and the likes...

Using Elixir, PostgreSQL, Vue.js, Stripe Connect probably hosted at Packet, Vultr or DO and maybe GCP.

Not a fan of AWS or Serverless-hype.

</comment><comment><USER58> I will continue working on NodeZA: [https://nodeza.co.za](https://nodeza.co.za) \- will focus on content creation and interaction between members.

</comment><comment><USER59> The v2 of my habit tracker [https://everydaycheck.com](https://everydaycheck.com) :P Already on the works! Every day it gets a little easier!

</comment><comment><USER52> how do you prevent on [https://www.cmyport.com/](https://www.cmyport.com/) which is allowing someone to port scan another IP?

<comment><USER60> Why would he try to prevent that? If you have computer/device facing the internet with public IP you have to acknowledge that anyone can poke at it.

</comment></comment><comment><USER61> Add more features to my personal todo-list app, while still keeping it simple: [https://five.today/](https://five.today/)

</comment><comment><USER62> ECommerce platform for myselve and some sort of AI for stocks, i'm not sure if it will be profitable though. But that's why i'll backtest it and give it a go.

<comment><USER63> For backtesting, try [https://www.quantopian.com/tutorials/getting- started](https://www.quantopian.com/tutorials/getting-started)

</comment></comment><comment><USER64> I have a point of sale system for mobile devices. [https://posangel.com](https://posangel.com)

</comment><comment><USER65> I am teaching computers how to interact with the environment via touch, its a machine learning project: github.com/jtoy/sensenet

</comment><comment><USER66> A business guide (ebook), leading to a more in-depth online course, leading to my SaaS offering which automates what the course entails.

</comment><comment><USER67> I will keep working on CookArr, and maybe get my 2nd game out :-)

[http://cookarr.com](http://cookarr.com)

<comment><USER15> Gosh, those marshmallows looks devine! I'll make sure to link to it within my side-project (once the new version is up).

</comment></comment><comment><USER22> One AR, one social network.

</comment><comment><USER68> porting and finishing a game I made to the nintendo switch

</comment><comment><USER69> new linux DE

</comment><comment><USER69> new DE</comment>


Google: My interview experience - <AUTHOR> http://gilvegliach.it/?id=17 <comment><USER2> As always, remember that even technical interviews like this one have an incredible amount of random chance built into the hiring process. This is especially true at a big company like Google (where I work and do interviews). Do they happen to have positions open right now? Did you happen to get asked questions that clicked with you? Was the hiring committee feeling grouchy that day? Did you get an especially harsh interviewer for one of your questions? Did they just hire someone with your skillset and so don't need a duplicate right now?

There's a decent amount that you can do to prepare for one of these things, but there's also an incredible amount you don't have control over. If you don't get the job, it's not a signal regarding your quality as an engineer and you shouldn't interpret it as such (however tempting it may be to do so). Remember, there are many great places to work right now, and your skillset is in demand. If we didn't get lucky enough to hire you, someone else will quite soon.

<comment><USER3> You think a company like Google would be able to implement a non-subjective and fair interview. Their current process must cost them a lot of talent

<comment><USER4> > Their current process must cost them a lot of talent reply

They optimize to reduce false positives. They're completely fine with false negatives. They don't have any shortage of talented engineers willing to interview there.

That last bit is why I think it's quite silly for smaller/unknown startups to be copying Google's interview process, as seems to be the trend.

<comment><USER5> >>They optimize to reduce false positives. They're completely fine with false negatives.

Getting too many false negatives is a very sure way of getting a lot of false positives.

>>They don't have any shortage of talented engineers willing to interview there.

You might be wrong there. Apart from huge money opportunities, there are little incentives for any body to waste their best years in large company political middle levels.

<comment><USER6> >>Getting too many false negatives is a very sure way of getting a lot of false positives.

Why ? IMO if you reduce the False Acceptance Rate, you will up the False Reject Rate. Good chart at [https://www.tractica.com/biometrics/in-biometrics- which-erro...](https://www.tractica.com/biometrics/in-biometrics-which-error- rate-matters/)

</comment></comment></comment></comment></comment><comment><USER7> Xoogler here:

If you want to work for Google, my advice is to try again when you get a chance. IMHO, getting an offer is about 50% the luck of the draw as to what questions you get, and what interviewer you get. If you were close this time, you might get an offer next time.

If it makes you feel any better, people who I knew were smarter and better coders than me got declined, yet somehow I got hired.

BTW, I thought so little of the HR process that I refused to participate while I was there. I did not do interview training, and never did any interviews or committees in my time there.

<comment><USER8> Why didn't you participate if there was room for improvement?

<comment><USER7> Two reasons:

The idealistic reason is that I didn't want to participate in a corrupt system. AFAICT, an individual interviewer is powerless to change the system. I've I'd have rated every candidate a must-hire, they would have thrown my feedback out.

The more practical reason is that I was a SWE embedded in a hardware group. Interviewing (and writing up the feedback) takes time. My spending time on interviewing would not have helped my boss (or his boss), so when I told my boss I didn't want to do interview training, he didn't care. This kind of paid off, because I got to spend enough time doing stuff my boss (and his peers/bosses) cared about that I got promoted while I was there.

</comment></comment></comment><comment><USER9> It seems many acknowledge that the Google process (and other similar ones) is very flawed with a high false negative rate, but it's considered ok because there's a flood of talent always applying to Google.

Maybe this used to be true, but I don't think it's true anymore. It's very likely still true in the fresh graduate to early 20's age range of candidates. But at this point, senior engineers know what this process is about. And I think many are deciding to just avoid this process since it's very biased against senior engineers (who are rusty on DS and algorithms and don't have time to study it like a second job). So the flood of senior talent is probably less now than it used to be. But Google doesn't care. The main reason is, success hides all failures. They're still generating billions in revenue every quarter. Until those numbers change, no one is going to care about fixing a broken process like this.

Next time I look for a new job, I'm going to start with this list: [https://github.com/poteto/hiring-without- whiteboards](https://github.com/poteto/hiring-without-whiteboards) and give priority to companies that don't have this type of process. I hope more companies recognize that they can get a big competitive advantage for senior engineering talent by not copying the Google process.

<comment><USER10> Of course processes are biased in favour of hiring grads. Graduates are awesome from an employer's POV. They don't know their own worth yet, they don't have families competing for work/life balance, and they're eager to prove themselves. So you can pay them a pittance to burn the midnight oil crunching through the most miserable parts of your workload.

</comment></comment><comment><USER11> Better than my interview experience.

Sailed through the phone interview, went in person for the day long interview. Most were no problem except for one that took longer than it should have. And then...

Nothing. Radio silence. No emails. No answered emails. I had ceased to exist.

After that colossal waste of time, I decided to only work remote.

<comment><USER12> > _Nothing. Radio silence. No emails. No answered emails. I had ceased to > exist._

Actually, that seems to be the standard behavior for rejected candidates these days, at least in my personal experience. (I've seen some references calling it the "California no", suggesting that the practice is widespread.)

It's really kind of annoying.

<comment><USER13> > the "California no"

Never heard that before. That's going to be my new go-to phrase for this though.

</comment></comment></comment><comment><USER14> For those of you not familiar with what a "2.7" means on the Google hiring scale, the rough scale is:

      1 - I will resign if Google hires this person.
      2 - I don't think this person should be hired, but I could be convinced otherwise.
      3 - I think this person should be hired, but I could be convinced otherwise.
      4 - This person should definitely be hired.

(interviewers can use decimal scores)

<comment><AUTHOR> Right, with 4 being basically impossible to get, and scores being normalized wrt the history of the interviewer.

<comment><USER15> I haven't worked at Google, but I have interviewed with and reviewed feedback from Xooglers, and 4's are not impossible -- but they are rare and you have to essentially be smarter than your interviewer about the particular problem to get one. This can be pretty hard, since many interviewers pick problems that they are extremely familiar with.

<comment><USER16> On my Google onsite (in Zürich as well), one of the interviewers told me that if he gave me a 4.0, he'd have to argue on my behalf if the hiring committee wasn't sure of hiring me.

<comment><USER17> Arguing to HC on behalf of someone I gave 4.0 (which _is_ rare, and which I _did_ give a few times) is something I would do _gladly_ (and I expect most others will do as well).

It's not like going in front of HC is an inquisition or anything -- they are just your peers.

</comment></comment></comment></comment></comment><comment><USER18> I didn't see you mention this, but the point of the coding interview is not to see how optimal your solution is (although it helps). It's also to see if you're a good person to work with.

If you nail the problem right away but you don't talk it through with the interviewer you'll be scored lower. They want to see if you'd be a person they'd like to work with on the team, not the quiet person that never collaborates.

<comment><USER19> The point of the coding interview is whatever the interviewer thinks it is. Sure, it SHOULD be to see if you are a good person to work with, but that's not always the case, if the interviewer thinks that you should produce a working and optimal solution(for whatever reason), that's what you will be judge on. Unfortunately not everyone uses the tools at their disposal in the best way. And it might not even be a case of intentionally doing it wrong, it might be that the interviewer doesn't know any better. If you take an experienced dev and you put him to make interviews he will not always know the best practices to interview someone.

<comment><USER20> For Google that simply isn't true. Check out Work Rules some time. Google has put a ton of effort in having a repeatable hiring process that specifically avoids this problem of interviewer bias. Most people, even Googlers do not really understand their hiring process and how it works. It isn't to hire the best coders.

</comment></comment></comment><comment><USER21> At least they give you some feedback in the end. I had the experience to be rejected after an onsite interview at Amazon, and they did not take the time to give a word of feedback, after I even asked for it. I see the past interviews were of great help to you to finally get the position at Amazon. I am looking forward to read your third post. Complimenti collega!

<comment><USER22> I had the same experience with Amazon--dinged with no feedback.

Normally I'm a sucker for irony, but when they sent me an auto email a few weeks later asking _me_ for feedback (ie, a survey on the hiring process), I didn't find it immediately funny.

<comment><USER23> Bonus annoyance: After rejection, get 15 contacts from Amazon recruiters in the next 5 months.

Those made me wonder if it wasn't for the best.

<comment><USER24> All from uncoordinated business divisions! And I've heard it also happens when you got an offer (while waiting for your visa/relocation).

I'm not hating on Amazon but their recruiting process is by far the sloppiest of all big tech companies.

</comment></comment></comment></comment><comment><USER25> My experience: I applied for an open position at google on their website, during the university, an interview was arranged after some mails, I was positively surprised by their care of detail: about setting the inteview at right time during the day for me, wow!. When I recieved the call i was suprised, but because call me at wrong day, at wrong time, It was on dinner on my time, and I drinked a couple of beer, it was stressful, the interview was difficult and unsuccessful, after a couple of days by mail told that inteview was not successful. I'm from italy, here the company adopt the Hollywood Principle: "don't call us, we'll call you", because there are too much applicants and few good jobs. I digested: maybe I'm not good for the position, but also them are not perfect, but at least they try to be gentle. After a two of year I recived a mail for an interview, I was suprised because I did not solicitate it, I was very relaxed because I was discard the previous time, so why this time should be different? (I'm fine that better developer exist), the interview seem goes easily, at the end interviewer ask me where I'd like to work if I could decide and describe some offices on google on different coutry, It was too exciting to be true, and replied all are the same for me, but why you call me, on the other interview I was discarded, he was suprised, told some 0info and asked some info on precedent inverview. Also this time I was informed by mail that the interview was not successful. Lesson 2: I thinked they call me by error, so two mistake in two interview:. nobody is perfect.

</comment><comment><USER26> I had a similar experience my first time, but I applied again a year later and passed. I did study algorithms (mostly DP and graph stuff) via HackerRank for two weeks before each onsite, but I never did fully succeed with any of the algorithms questions.

The second time, I think I was just lucky with questions I liked. I don't think my programming ability changed drastically in the year between.

</comment><comment><USER27> I'm becoming convinced that the only way to get into Google is to get in as an intern or new grad if OP studied for 6 months and still didn't get an offer.

It doesn't seem that way at other top companies like FB, Amazon and MS from the people I've talked to.

<comment><USER28> Meh, just try again in a year. High variance.

<comment><USER29> "Just try again in a year" is a good option when you're young. But it gets less attractive as you get older, especially if it means abandoning an interesting project or senior role you accepted after "Company X" rejected you. There are too many good opportunities out there to get hung up on any one company.

<comment><USER30> I've lost track of the number of times I've gone through the interview wringer at Google. It sounds like a great place to work, which is unanimously confirmed by a number of people I know who work there, but I'm no longer going to go out of my way looking for the chance. Prepping and going through the process is like a second full-time job.

And so unnecessary. Think about it--it's Google. They should have enough data on me by now to know my skills and potential with high confidence, to the point where their interview shouldn't even need humans in the loop.

<comment><USER31> I could only imagine the legal shit show that'd occur if they tried to do that, however amusing and novel the idea may be.

</comment></comment></comment></comment></comment><comment><USER32> > In this model, the sourcer discovers a talent

> The talent is then picked up by a recruiter

Am i the only one who trips over such terminology of calling a hired worker "talent" and finds that it feels like it's manipulative, PC or doublespeak?

What meaning does the word "talent" have in casual English?

<comment><USER33> It's jargon from show business (movies, music, TV, stage, etc)- the "talent" is generally the performers or maybe just the star.

I don't think it's insulting, but it may be manipulative; it implies that the potential hire is a star performer and/or brings something unique to the role.

</comment></comment><comment><USER34> > The recruiter also said I was borderline, which might be just a nice empty > word from her, but made me feel better.

I don't think this is just her being nice; I was also told I was borderline and they actually ended up letting me interview again for a different position (SETI instead of SWE). Alas I got rejected again, but the year after they called me back because I was borderline, or so they told me, and I am working there now.

As others have said, there is some element of chance, both on their part and also likely on yours. Hopefully you'll apply again as it seems like you have a good chance.

<comment><USER35> I've heard of Google hiring committees rejecting candidates who got all "Hire" recommendations from the interviewers. I've also seen candidates get hired who seemed on the wrong side of "borderline." There are many more factors at play than just your interview performance.

</comment></comment><comment><USER36> Is that photo of "Google" really the culc at Georgia tech?

<comment><AUTHOR> It is the Zurich office from the street.

</comment></comment><comment><USER37> What other professions are like this? Do lawyers, accountants, civil engineers, bartenders, etc. take massive time to memorize stuff every time they want or need to go job hunting?

<comment><USER38> A friend of mine was shocked when I told him how things are looking for a job in the software world. He's a civil engineer. I guess it makes it easier in their world owing to accreditation and certs. He just found it astounding the amount of prep time it takes your average dev to get ready for an interview.

</comment></comment><comment><USER39> I'm curious if the people giving the interviews have an incentive to be conservative with scoring. Maybe it looks bad when your score is the highest? As if you're lowering the bar? If true, I could see that contributing to how these interview stories play out (candidates thinking they did better than their no-hire outcome).

<comment><USER17> There are no such incentives.

When writing feedback, you simply look back at 20 other interviews where you asked the same question, and write "candidate X's performance on this question was was in {top,bottom} {5,25,50}% of ... at this level".

You also have _no idea_ how other interviewers will score, and if your score is 1.5 when everyone else's is a 3.9, it's likely that the HC will ignore you.

The HCs do see multiple feedback from you and your peers, so they build a model of your feedback for themselves: P is a soft interviewer, so we'll adjust his score down but Q is a very hard interviewer so we'll adjust her score up ;-)

<comment><USER35> My hires are uniformly distributed across the score spectrum. Not sure how the HCs "adjust" me. I have gotten props for the quality of my written feedback though.

<comment><USER17> It doesn't matter how your candidates are distributed across the spectrum (and I _do_ hope that your _hires_ are not uniformly distributed ;-)

What matters is how your scores compare to other interviewers scores on the given slate.

> Not sure how the HCs "adjust" me.

Maybe they don't. Maybe you are the most precise and best-calibrated interviewer on every slate, and never make a bad call. Good for you ;-)

</comment></comment></comment></comment><comment><USER40> Does anyone know how Google's interview looks for QA/Software engineer in test?

</comment><comment><USER41> > Alas, rejection

Is anyone getting accepted to Google at all? So many stories of applications which failed at some point. Calls, tests, onsite, over a month of teasing. Maybe person in his/her 20s has enough time and energy to throw away for something like this.

<comment><USER42> Yes people are getting jobs. It's just the ones that don't who write the blogs that get up voted. Many college seniors I know have gotten offers without preparing that much outside of their usual work

<comment><USER43> Well, college seniors should have the easiest time getting a job at Google, since they are closest to the material that Google tests on and would have it fresh in their minds, so I wouldn't be surprised that many of them do get offers.

I have a feeling there's a significantly higher rate of failure for people who have been in the industry for 5-10 years and haven't had to most of the things they'd get tested on since college.

</comment></comment></comment><comment><USER44> At google, I was given some code that manipulated some bits and the interviewer, in inexplicably terrible English, kept asking me what the purpose of this code was for. He has a very thick Eastern European accent which was not understandable and I don't know how he was able to get into interviews. I could tell it was doing some sort of overflow detection but other than that I had no idea. I hadn't done anything with bits since college. He kept insisting that I keep trying to understand what the code was doing even though it was obvious I had no idea. After a 40 min, excruciatingly awkward conversation we moved onto his next question which I also couldn't understand due to his terrible English. What a complete waste of time.

<comment><USER30> Thick accidents and borderline language proficiency is even worse on phone screens, where interviewers always seem to sound like they are talking through a sheet of plastic placed over the phone. I've lost count of the number of times I've had to get someone to repeat their question over and over and over on (not Google) phone screens. Once did a phone screen with an exec who I'm pretty certain was conducting it from his handsfree in an open-top convertible car (clearly heard traffic noise). I've always wondered how many opportunities I've missed out on due to poor audio quality.

<comment><USER35> I have a very hard time with accents. I've done a couple of phone interviews where I hardly understood a single thing the candidate said. In those cases I usually write my question verbatim in the shared document and focus on the code the candidate produces. It has probably hurt the chances of at least one or two interviewees.

</comment></comment></comment><comment><USER45> If you have a Google account why should they still need to do an interview?

<comment><AUTHOR> Apparently they are thinking about it (perhaps just a rumor): [https://www.thesun.co.uk/tech/3332120/google-creates- jobsite...](https://www.thesun.co.uk/tech/3332120/google-creates-jobsite- google-hire-but-does-that-mean-employers-will-be-able-to-snoop-on-your-grubby- digital-history/)

<comment><USER41> Having completely blank account means hired?:) Hard to escape google in today's internet:)</comment></comment></comment>


Let's celebrate scientists, engineers, etc. with same interest as celebrities - <AUTHOR> https://twitter.com/nmpanek/status/970430266765295616 <comment><USER2> Yeah but an actor pretending to be a scientist is so much more impressive than a boring old scientist doing boring science stuff. Moreover, the science done by the pretend scientist is a lot more impressive.</comment>


Today's Version Control Tools Are Still Primitive - <AUTHOR> https://medium.com/@karti/todays-version-control-tools-are-still-primitive-8d37e8e8f9a5 <comment><USER2> If you've used Git for only a year, and you've got a mere "hundreds of commits" under your belt with distributed version control systems, then the pain you're feeling may not necessarily be coming from the tool.

Many of your unmet needs basically boil down to a desire for automatic replication of the state of a codebase to a remote endpoint. Right now, it's an explicit choice made by the developer. There are a lot of good reasons for this. If you don't feel like any of them apply to you, it should take you maybe half a day to write a script that creates a throwaway commit and is pushed to an arbitrary remote. Or you can just put your project in Dropbox and call it a day.

Also, if you're looking to work on a Git project using a Chromebook, maybe just use the inline edit mode in GitHub.

In all, I don't think the features you're looking for necessarily _belong_ in a distributed version control system or its related protocols. As I've outlined above, you can get what you want by extending such a system, or using existing extensions on top of those systems.

<comment><AUTHOR> Author here.

You're right that I'm a Git beginner.

I don't want to hack up my own distributed version control system that fails in interesting ways :) And yes, I do put my Git workspaces in Google Drive, but that doesn't address many of the limitations in the post.

Github's inline edit mode is exactly the kind of affordances we need. When I needed to make a simple change to my open-source project (adding comments to document assumptions), I didn't want to mess with downloading, resolving conflicts, merging and pushing.

Regarding your point that this doesn't belong in a version control system (a point that other people made on this HN post) but in extensions, I want an integrated environment. I don't want to investigate extensions and hooks and scripts to make things work together. I want it to be seamless. Just like IDEs are different from text editors (and upset some old-school programmers that "XYZ shouldn't be in a text editor"), I'm advocating a new style of version control system that does more.

</comment></comment><comment><USER3> Is the author using Google Drive sharing as a substitute for a Git server like Github?

> That frees him to modify the code as he sees fit without worrying about > whether he's accidentally throwing away my work, making me unhappy.

Git already keeps history!

> I should be able to instantly create another workspace. Currently, syncing > everything down from the server takes 10 or 20 seconds

It'll only take a moment with `git clone --shallow` and you can then run `git fetch` in the background.

> The last time I switched branches in Git for this, I accidentally had an > unsaved change in my text editor. When I later pressed Cmd-S, it got saved > to the wrong branch.

Use a text editor that knows Git. This is unsolvable with a text editor that isn't integrated with your version control.

> If you want to keep two versions of code, the filesystem already offers a > solution. It's called folders. That makes it easier to switch between them, > as easy as minimising a window. It's hack to have only one folder and > copying files back and forth to simulate having multiple folders.

git supports having multiple folders with different versions of your code checked out: [https://git-scm.com/docs/git-worktree](https://git- scm.com/docs/git-worktree)

The entire CPython repository is 300MB (less over the wire thanks to compression) and once it's downloaded, Git can answer just about any query you can think of in under 100ms, or as the author says, "instant". I'll take that over some complicated smart-sync cloud solution any day.

<comment><AUTHOR> Author here.

I have all my Git workspaces in Google Drive, but that's a hack, because I'm using two cloud systems (BitBucket and Drive) together. It would be like editing some Word documents by keeping the intermediate versions in Dropbox but the result in Google Drive.

> Git already keeps history!

Not for uncommitted changes. Like edits in Google Docs. Being able to go back lets me freely modify the code to try out something else knowing I can easily go back. Without making intermediate commits, branches, a second workspace, or other overhead.

> This is unsolvable with a text editor that isn't integrated with your > version control.

Actually it's solvable, by having different workspaces instead of branches when I want to try out two different approaches to see which one works better.

Thanks for suggesting worktrees, but given Git's complexity and poor UX, I try not to get too fancy :) But you're right that does work instantly. I'd like instant performance + easy UX.

<comment><USER4> [https://codenvy.com](https://codenvy.com)

</comment></comment></comment><comment><USER5> Several of the authors complaints stem from him not using temporary branches liberally. I think he's suffering from the common beginners' problem of thinking that committing has to be final. The word "commit" doesn't help; "snapshot" might be a better metaphor. But even if you understand that a commit is cheap, and disposable, it takes quite a bit of experience to get comfortable using the graph comprising different branches, and to be confident with remote and local branches. This learning curve could be said to be a problem, but personally I don't really want software engineers as colleagues if they can't learn git.

<comment><AUTHOR> Author here. You're right -- I haven't created even one branch so far, let alone liberally. But snapshotting should be automatic, like in Google Docs.

It's not that someone "can't learn git". Learning is a process, and takes time. But I have no sympathy for tools with an unnecessarily steep learning curve and poor UX like Git. I should have to pay that price only when I want to do something very sophisticated that only Git can do. Not for basic tasks. Simple things should be simple and hard things possible. Snapshotting should be automatic.

<comment><USER5> OK, I hope the tone of my original post wasn't unpleasant (on re-reading, not sure I'm a huge fan of it). It might be interesting to have a version control system which does continuous recording. If git is the last word in VCS then I guess humans didn't live for much longer! But personally I am completely happy with the current style in which the user explicitly creates snapshots and these form a distributed graph, and the user is given tools to work with the graph.

<comment><AUTHOR> Thanks for clarifying tone.

</comment></comment></comment></comment><comment><USER6> Sadly, Git won. BitKeeper solves a bunch of this stuff, not all, but a bunch but nobody cares. The reality is GitHub won. To 99.99% of the world version control is GitHub. Step outside of what GitHub can do and you get blank stares.

If you want to play with BK, it's at bitkeeper.org, all open source, apache v2 license (because that seemed to be the license that most people liked, contact me if that doesn't work for you).

<comment><AUTHOR> Interesting, and sad that Git won.

I used Mercurial earlier, given that it seemed to have a better user experience, but Xcode's integration with Git made me switch.

Thanks for your offer.

</comment></comment><comment><USER7> This article has a few points.

First of all, the author wants backup, switching machines, and collaboration all integrated into VC. This is a worthwile goal, and i can see that shoehorning git et al into those rules can feel... clunky. I think there is room for improvement there.

The author comes off a little greedy, when he wants to (a) be able to instantaneously create a new workspace while (b) being able to manage huge code bases. Oh, and everything should work even on his chromebook - as long as he has one computer that can do the work, all his other computers should offload the work to the one capable of doing it. Transparently of course.

This sounds great and all... but i would not want to implement it :-)

<comment><USER8> I, too, want a pony.

<comment><AUTHOR> Preemptively reducing your expectations is a great way to ensure that we won't take big leaps forward. You can choose to be sarcastic, while I'll keep my positive, hopeful attitude.

</comment></comment></comment><comment><USER9> It seems like most of his demands can be solved with Dropbox or a similar cloud sync software.

Git will likely never implement his ideas because git is designed for _decentralized_ workflows where you can have hundreds of people working on different things in the same large repo. Why should Linus have on his disc a copy of every single WIP branch of the many people currently hacking on the Kernel? This will never happen. It's completely outside the scope of git.

<comment><AUTHOR> Linus needn't have on his disc every random person's WIP. The software can be smart enough to only sync code he's tried to read, edit or compile. Or Linux can choose. An analogy is Google Drive letting you choose which folders to sync down to your device. The point is that there are many better solutions to the problem than people never want to see each other's work, which is the status quo, and requiring them to jump through hoops if they want to.

Git will never implement my ideas, and I wasn't asking for it to. I was calling for a new kind of integrated version control system. It's like an IDE vs a text editor, and many old-school programmers saying, "No, that shouldn't be part of an editor".

</comment></comment><comment><USER10> This article really resonated with me. Especially the integration is something we can uniquely do. At GitLab we'll build the GitLab IDE in 2018. It will be a single user thing at first but the article has a couple of great ideas for to do it with multiple users.

<comment><USER11> Ah, please don't.

I love GitLab, made it a corporate standard accessible to every single employee. But the current problem space is already huge, and you are struggling to solve all of it properly.

Branching off into an entirely new dimension, like an IDE will be, will make it even harder for you to satisfy existing customers.

<comment><AUTHOR> That's the problem with enhancing existing tools — you have to choose between satisfying existing customers in the short term. The best vehicle for my ideas may be a new tool built from scratch. Sure, reuse code fragments or libraries, but don't feel constrained by backward compatibility.

</comment></comment></comment><comment><USER12> Nearly all of these features are appropriate to a cloud-based IDE with sync capabilities, not a distributed version control system. The author even acknowledges he's thinking of such an IDE by referencing Cider.

A DVCS does one thing and one thing well: it enables copying one history of a codebase to different clients. Broadcasting updates to a client's particular history to all other clients in real time is not its job - yet all the listed 'desirable' features (with the exception of those citing performance) seem to do just that.

</comment><comment><USER13> This article could just as well be titled "Today's OSes are still primitive".

</comment><comment><USER14> This seems all nice to have but what I really miss is the software engineering side integration into the whole development side. You should have the software engineering people who make J-STD-016 or similar traced requirement, design, test and deployment documentation all the way into the code. Heck sometimes generating code & tests from documentation is really valuable in a large system.

Now we get around this by making Jira tickets and hanging jira tickets in change requests and change requests have documentation changes but really i would like to pull up any piece of code and read all the requirements and the design decisions that are made on it.

Is something we miss (30 man year sized project, with 3 full time engineers, both software engineering and coding) and is more of an imitate problem once the software becomes to complex to hold into an engineers head (i try ;)).

</comment><comment><USER15> I like that this is not just a rant about git. Instead there are quite specific demands which are really not available anywhere.

I think this goes beyond version control though. To move computation seamlessly integration with lots of parts is necessary. I think something tightly integrated like Smalltalk would be the best path to build a prototype.

</comment><comment><USER16> You are talking about much more than just version control here. And, yes, a web based IDE with web based workspaces is probably the way to go.

I think Eclipse Che is doing _exactly_ that today and is production ready.

</comment><comment><USER17> Concur with #7 & #8. IDE support & support for large repos seem basic. Other features are not strictly within the scope of VCS, but things that we've come to expect in 2017. I'm for keeping them separate

</comment><comment><USER18> A web IDE is a great start, and as Sid already pointed out, at GitLab we'll ship an IDE deeply integrated with version control (and CI, CD, monitoring, etc.) in 2018.

But that only covers part of the problem. A lot of the post revolves around newer concepts of realtime as exemplified by Google Docs. Specifically I mean:

* Realtime

* Collaborative

* Versionless

An IDE is obviously realtime, but our focus is on single-user realtime, at least initially. CodeEnvy, Koding, and others have created shared editing environments, so maybe that's a pattern that works. But that still doesn't sound like what the author is really looking for. These are editing environments built on top of git so require the same branch and commit model. e.g. if you forget to commit your changes, anyone looking at the code outside of your (shared, collaborative, online) environment won't see it.

I've been wondering for a while what the next iteration of VCS (or DVCS) is going to be, and I have a hunch it will involve realtime.

What would it look like if the underlying VCS was realtime itself? If it worked like Google Docs?

I imagine it kind of like Google Docs's "suggesting" mode, where edits are shown on the mainline, but as suggestions which can be accepted or rejected. That's kind of like merging a merge request or pull request. But it doesn't seem to scale well. Imagine a doc with hundreds of simultaneous suggestions on the same code, especially stale suggestions that you aren't going to merge, but aren't ready to delete either. Would you switch between groups of suggestions/suggesters (like you would switch branches)? Would you just not work with long branches? I mean, that's an anti-pattern anyway. And don't even think about branches of branches or applying a patch to the last N stable branches. But if you're doing continuous deployment to a web product, those patterns don't apply anyway.

Would being forced to see all the suggestions trigger latent OCD and cause people to clean them up constantly? Or would it turn out not that bad because you're only seeing simultaneous changes on a single page at a time?

That brings up another challenge, changes that spread across many different files, but need to be considered together to make sense. Google Docs rarely have that problem. Maybe that means that it's inherently incompatible. Maybe it just needs a new solution we haven't seen yet. One idea comes to mind: the way recent editors show a mini-map of a file, and when you search, all search hits are highlighted on the mini-map. Extend that in some way so that when I'm looking at one suggestion, related suggestions are highlighted for me. I don't know, might be a dumb idea, but the point is that some thinking out of the box might solve this.

Google Docs (and realtime collaborative editing in general) were such a game changer that people flocked to it even though it was seriously under-featured compared to Word. Sure, tons of enterprises are still on Word, and there's a bit of a gap between companies that have embraced Docs or not. But for those that did, it's changed how we work. Keeping everyone in sync is far more important than having 10,000 options for making words follow a curve in 3D.

I wonder if some realtime version control, applied to code, will open up new ways of working we can't even conceive of today, and we'll slowly forget that we once loved the branch and commit model.</comment>