Ask HN: What's the post mortem of the big Quora hack? - <AUTHOR> At the time, Quora published a blog post saying they're "sorry for any concern or inconvenience" and that they're still investigating the precise causes: https://blog.quora.com/Quora-Security-Update
But then they didn't follow up with their conclusions:
1. Who hacked 2. How the hack was executed 3. What are the steps they took to help affected users (if at all) 4. What are the steps they took to prevent future hacks from happening in the future (if at all)
Does anyone know? <comment><USER2> Why don't you ask on quora?

<comment><AUTHOR> Because someone else did, and there are no useful answers there: [https://www.quora.com/How-did-Quora-get-hacked- and-100-milli...](https://www.quora.com/How-did-Quora-get-hacked- and-100-million-users-information-stolen-as-announced-in-December-2018)

And here's another one: [https://www.quora.com/Who-was-the-third-party-that- hacked-in...](https://www.quora.com/Who-was-the-third-party-that-hacked-into- Quora-and-accessed-the-data-of-its-100-million-users)</comment></comment>


How many hours of work does that purchase cost? - <AUTHOR> http://www.bargaineering.com/articles/hours.html

<comment><USER2> This is actually a more dangerous way to think about purchases because it presumes that all of one's income is disposable. If one makes $40,000 a year but have $18,000 a year in rent and $6,000 a year in food and other expenses then I can't really just say "well, this $3,000 flatscreen is expensive but it's only really three or four weeks worth of work."

<comment><AUTHOR> If you were to modify the calculator to account for this, the fixed costs should be deducted from salary and divided among all the hours worked?

So if you made $40,000 a year and had $10,000 in fixed costs, you deduct taxes & whatnot, the $10k, and then divide by 2000 hours. This gives you a true "net income after expenses" per hour. Yes?

<comment><USER3> Sure, but as someone on salary I tend to find disposable income and then calculate that spread evenly over time. AKA I have 1,000$ this month to spend however I like that's 1000/31 = 32$ a day or 1.30$ an hour.

I do this because I can't work more hours to make up for extra spending I can only wait till more money shows up.

</comment></comment></comment><comment><USER4> We saw a huge jump in conversions at work when I compared our product's price to a cup of latte on the landing page.

I believe that we make most purchasing decisions based on comparison to another product or a _default_ no product state when even spending a dollar mentally seems like _a lot_ of money. One way to counter the _default_ state is to compare your product to another product the person is very likely to have purchased recently or does not consider expensive.

So many hosting companies compete on price between a buck/month to $9.99/month. Honestly, I think you destroy the price argument for vast majority of users if you just get 'em to think about the $5.99 grande coffee purchase every morning.

<comment><USER5> Can you tell us what you said exactly on the landing page to make the comparison?

<comment><USER4> I can't talk much about the latte experiment.

But another one I did was display a dollar bill to really drive home the point that our service is less than one dollar a day. Something about seeing a picture of a dollar bill (versus just reading about it) must make it more real.

More precisely it said "Less than $1/day {small pic of dollar bill} {big equal to sign} Access to xx,xxx potential clients"

</comment></comment></comment><comment><USER6> "The cost of a thing is the amount of what I call life which is required to be exchanged for it, immediately or in the long run." - Henry David Thoreau

</comment><comment><USER7> Related, an article from the Journal of Consumer Psychology, "If money doesn't make you happy, then you probably aren't spending it right": [http://dunn.psych.ubc.ca/files/2011/04/Journal-of- consumer-p...](http://dunn.psych.ubc.ca/files/2011/04/Journal-of-consumer- psychology.pdf)

</comment><comment><USER8> I applaud the notion of examining the way you spend your money and thinking about whether the stuff you spend money on is really adding value to your life or whether it's just a habit that you've fallen into.

But:

 _You can save more in one call to a cable company than skipping your morning coffee, even though skipping morning coffee takes more work._

What could possibly be less work than _not_ buying something? Not buying something usually saves both money _and_ time.

And I don't know about his cable company, but getting a human being from any of my utilities on the phone is something I'd count as _work_.

</comment><comment><USER9> When we pitch our product to potential customers, one of our big selling points is engineering time savings. It's easier to compare hours of work to purchasing something when:

a.) It's a necessity for a business and

b.) Each hour costs you real money (like engineering time).

The coffee comparison is helpful in day to day life, but it's more about quality than cost. Like hiring someone to clean your house, or paying for a restaurant to make you dinner. You _could_ do it yourself, but you choose to increase your quality of life by paying more to have someone else do it for you.

<comment><AUTHOR> And when you get a professional, they're often better at it than you are. It's a little like comparative advantage.

</comment></comment><comment><USER10> Dan Ariely has made an app that does something like this, although instead of looking at the number of hours it takes to pay for something he compares it to what alternatives you could buy, so if you like coffee and you want to book a book you see how many coffees you would have to give up to get the book, similar but equally interesting concept. You can see his app here, its the first one Oranges2Apples <http://danariely.com/apps-tools/>

</comment><comment><USER11> I think two important metrics are being left out of the author's perspective:

1\. What value do I assign to my personal free time?

2\. Does my purchase have the ability to save me time?

For instance, a cup of coffee will cost me 15 minutes of my salaried time PLUS 15 minutes of my personal time (to drive, order, pay, etc). However, perhaps I am a writer and the coffee and coffeeshop environment will help me accomplish 2 hours of writing in 90 minutes. Then the whole thing is a wash.

</comment><comment><USER12> An intelligent man once told me to evaluate purchases in terms of Mars bars.</comment>


Designing the UI of Things for iPhone - <AUTHOR> http://culturedcode.com/things/iphone/makingof/

<comment><USER2> These mockups look great.. I love the watercolor look.</comment>


How I used a css framework to create my wordpress themes - <AUTHOR> http://www.siiimple.com/how-i-used-a-grid-to-create-my-wordpress-themes

<comment><USER2> I wish there were an easy way to use Smarty for Wordpress templates. There's something messy about PHP in the templates.

<comment><USER3> CSS "frameworks" are beginning to remind me of those _convenience_ infomercial products. Yes, it would be nice to have a blanket with sleeves, but why should I pay three installments of $19.95 when I can just wear a sweater and curl up on the couch with a blanket? assuming I spend a lot of time huddled up somewhere comfy, instead of, say, just sitting up at my desk :-/

CSS is "hard", but fuck man, how much CSS do you write per year? I average about 3 - 6 files. I have a master CSS file for all my web apps; and as soon as I "finish" a project it's handed over to a real designer who makes it look purty. All my CSS "writing" is done with the unix `cp` command.</comment></comment>


A faster way for your team to communicate - <AUTHOR> https://flock.com/ <comment><USER2> one more slack?</comment>


Show HN: Every Coding Comic I've made so far  - <AUTHOR> https://imgur.com/gallery/Cll4jg1 <comment><AUTHOR> Hi everybody  I've been on summer break lately and in the meantime I've been having fun drawing these! Thanks so much for going through them and I hope it made you laugh a little

<comment><USER2> Nice work! Are there any usage/sharing guidelines?

<comment><AUTHOR> Ah just link my Instagram! [https://www.instagram.com/coderbea/](https://www.instagram.com/coderbea/)

Thank you thank you so much!

<comment><USER2> Thanks, would like to use one in an ebook I work on in my spare time, if that is ok: [https://mixmastamyk.bitbucket.io/pro_soft_dev/](https://mixmastamyk.bitbucket.io/pro_soft_dev/)

I noticed a certain fondness of Harry Potter :).

<comment><AUTHOR> Omg this is so cool and haha yes

</comment></comment></comment></comment></comment><comment><USER3> Looks great! You should make these into a calendar

<comment><AUTHOR> Heheheh thank you!! </comment></comment>


Microsoft announces major expansion of Windows Azure services in Asia - <AUTHOR> http://blogs.msdn.com/b/windowsazure/archive/2013/05/22/cross-post-microsoft-announces-major-expansion-of-windows-azure-services-in-asia.aspx

<comment><AUTHOR> _"We are excited to be the first multinational organization to make public cloud services available in China, and encourage customers to sign up for the free trial at<http://www.windowsazure.cn> starting June 6."_

Yes! I've been begging Windows Azure to deploy a datacenter in mainland China for a long time due to the unpredictable nature of the "Great Firewall of China".</comment>


Raspberry Pi Founder Shows Off Incoming Touch Panel for Making DIY 'Pi Pads' - <AUTHOR> http://techcrunch.com/2014/10/21/pi-pads/ <comment><USER2> Since the Pi is meant to be for education, what I think would further this goal is to turn the Pi into a graphing calculator as a replacement for the TI series that is currently required in many high schools / colleges. So you would take the basic design, add the case, battery, button pad, cheap screen. Think of a calculator that has the Pi's SD slot, HDMI, USB, GPIO, etc ports.

When used in class or on tests, it can run a built-in program from its ROM. For use in full computer mode, you boot it off an SD card. Anti-cheating can be done via DRM features that are already available on the chip (although open-source purists wouldn't like this part, but it shouldn't get in the way in "full computer" mode).

The way the anti-cheat code could work is simply a calculator function which gives a digital signature hash based on user input. Student enters a serial number from the test, and writes down the function's output (which is derived using a private key burned into the chip, and only accessible by the built-in calculator-mode code).

The reason I think a calculator form factor would work better for the education market, is that every high school already requires a $100 graphing calculator, so might as well make it the calculator be of more use.

<comment><USER3> > every high school already requires a $100 graphing calculator

I can't help but feel this is a historical aberration, and one that is bound to correct itself eventually. The reason it's so entrenched at the moment is, I imagine, standardisation--which is why a custom raspberry pi solution would not be suitable.

As an side, I'm not entirely sure why a graphing calculator is even required anyway. I never used one once in my entire school curriculum, and don't feel like I suffered for it. Being able to plot a function by hand is something of a skill in its own right because it teaches you the analytical tools to be able to learn how a function behaves, and as long as the teacher knows the correct solution there's nothing to be gained from every individual student having their own calculator.

<comment><USER4> > I never used one once in my entire school curriculum, and don't feel like I > suffered for it.

I'm glad someone else said this, because I wasn't going to admit to it. I got through 4 years of high school math and science, and four years as a CS major/math minor and I don't remember ever using anything other than the permutation/combination functions and some basic graphing. The TI-83 was much more important in getting me into programming than doing real math.

<comment><USER5> Creating programs to do the same steps over and over once I understood it was the biggest benefit I got out of my graphing calculator. However, having a larger screen with a scroll history was a close second, so even just using it as a standard scientific calculator with a large screen made it very useful to me.

My high school didn't require a graphing calculator though, and most of the class didn't have one as I recall.

</comment></comment></comment></comment><comment><USER6> In retrospect, we really should have made a cat-shaped chumby (see: linked video @ ~13:19)

<comment><USER7> Aw. Chumby brings back memories. I still have my original Chumby in a box somewhere and it always makes me feel nostalgic.

</comment></comment><comment><USER8> Cool! Back in 2012, I got impatient and put together my own resistive touch screen for the Raspberry Pi: [https://www.youtube.com/watch?v=uwEwHFglq8M](https://www.youtube.com/watch?v=uwEwHFglq8M). I just got a small LCD, a resistive touch panel, soldered up a microcontroller, and wrote a simple kernel module ([https://github.com/osandov/raspi/tree/master/tsc2007](https://github.com/osandov/raspi/tree/master/tsc2007)) to get it all working. Unfortunately, I never really got around to documenting how I did it, and it looks like this makes it obsolete, but it's all for the best :)

</comment><comment><USER9> This is great news! I have one of my RPis attached to a MDF plate together with a breadboard. I have bought several temperature sensors, relais and 434 MHz transmitters/receivers to play with. For now I'm doing all "development" with an old eee laptop but it would be nice to do it directly on the Pi with a BT keyboard. At some point I want this up on the wall where the thermostat is and have it control music, the heating and check buienradar.nl for example. So a stylish case would be nice :)

</comment><comment><USER10> From the picture it seems to be a 7 inch, 1024x600 touch panel, same as in the Kindle Fire original.

<comment><USER11> I believe, based on descriptions of the prototype, that it will be 800 x 480. That seems rather small, but they want to hit a price point (< $70), consistent with their primary mission of providing an affordable educational system.

<comment><USER12> 7" WVGA TFT panels are flooding out of Asia for dirt cheap now, that would be my guess as well.

</comment></comment></comment><comment><USER13> The Raspberry Pi is a developer board which brings out the pins of an ARM chip designed for use in low-end tablets. If you want a tablet using the same chip, you can easily buy one. The price point on Alibaba is about $30-$50. Even on Amazon you can get one for $50.

<comment><USER14> That's fine, _IF_ those things can be rooted and have released any proprietary drivers so you can load your preferred ARM-compatible Linux distro.

If, however, you want to run Plan 9, RISC OS, FreeBSD, Haiku, or anything else that isn't Linux, then you'd probably still come unstuck regardless of Alibaba's openness.

<comment><USER15> in terms of buying products from alibaba, most equipment on their uses the MTK tool chain. MTK offers full drivers to run most of their hardware, and can run under a multitude of Android OS is. I also have a friend who took the MTK tool chain and installed debian on his HaiPai Noble N7889 phone. It didn't run very well at all, but it did run.

</comment></comment></comment><comment><USER16> This is a great step forward for continued approaches to lean hardware development.

</comment><comment><USER17> Anyone know how these are going to be priced?

AdaFruit have been selling a $35 PiTFT 3" touch screen - which is useful as a small control screen but not for making piPads. (well, maybe piPad nano...)

<comment><USER11> I believe the target price is "under $70".

</comment></comment><comment><USER18> I'm curious what the actual price for this will be. I'm more interested in just mounting this somewhere so I don't need a keyboard or mouse for the pi.</comment>


Crockford Keyboard - <AUTHOR> http://jslegers.github.com/crockfordkeyboard/ <comment><USER2> Interesting. The toggle from "alpha" to "euro" seemed like a neat feature at first, but it's of course completely un-suited to fast typing.

Likewise, compartmentalizing typing into various groups (alphabetic chars, accented chars, capitalized chars, symbols, punctuation, etc.) is logical, but mostly incompatible with just about any modern keyboard workflow.

edit : after doing some further reading, I realize I was judging it based on a completely incorrect set of criteria. It's intended purpose was for non typists, single-hand typing or "environments where conventional two-handed keyboarding does not work" [1]

[1] <http://www.crockford.com/wrrrld/keyboard.html>

<comment><USER3> > edit : after doing some further reading, I realize I was judging it based on > a completely incorrect set of criteria. It's intended purpose was for non > typists, single-hand typing or "environments where conventional two-handed > keyboarding does not work"

Though even by these criteria it's poorly suited for any language not completely served by ISO-8859-1 (and some languages that even 8859-1 is sufficient for). This includes a number of European languages.

</comment></comment><comment><USER4> Is there anything particularly interesting or useful about this keyboard design, or is it simply because it was designed by Crockford that makes it deserve mention? Aside from unsuitable for touch-typing, it looks like a common sense way to do it.

<comment><USER5> It looks like a nice single handed layout.

I'm not sure about having t, n, s on the weaker fingers.

</comment></comment><comment><USER6> The "Done" button is a toggle? Is that a side effect of this being a proof of concept, or was there some extra functionality in mind?

Edit: Answering my own question, since it looks like this was designed for touch/pen based input, it would probably hide the keyboard: <http://www.crockford.com/wrrrld/keyboard.html>

</comment><comment><USER7> I can't see the point of this keyboard but if it is a good thing to have the letters run from a-z starting from the top-left it seems like the numbers should start with 1(or 0) on the top-left as well.

<comment><USER8> The point is that the vowels all run on the left hand side.

</comment></comment><comment><USER9> semi-colon is pretty hard to find..

<comment><USER10> lol, I went to this site expecting a keyboard full of semi-colons... so there you go I guess...

</comment></comment><comment><USER11> Typing "var crockford = true;" is pretty tricky.

<comment><USER12> Really? I guess I'm more used to shitty smartphone keyboards but that was relatively painless. You only had to go to the "standard" symbols button twice.

</comment></comment><comment><USER13> It's as if the alphabet runs in order.</comment>


Co-founder wants to start another company with my IP - <AUTHOR> I started a company in 2019. The company was exploring IP created by me prior to incorporation. The IP is registered and copyrighted to me only. The IP is a machine learning model that is able to predict the probability of treatment successes.
We raised £2 million round. Due to a number of disagreements we decided I would sell my IP to the company for a number we both agreed on. I spent £5K and 6 months drafting a settlement agreement and IP assignment deed. However, at the last week of negotiations we disagreed on a clause of the deed. This clause was added by him and his lawyers at the last week of negotiations. We decided we couldn't come to an agreement and it was best to dissolve the company.
Now, my cofounder is starting a new company, with a similar name, same mission, and the same lead investor and £2m funding. He claims he is not using my IP.
I think it is copyright infringement. Even if he just reproduced my model with another dataset or method (he would have had time to reproduce it during these 6 months because he had access to more than 50 pages describing the methods. I had to share my methods because we were exploring ways to bring it to market, but I never shared the raw data and the raw code with him).
This whole thing happened last week.
1 - I have not signed the strike-off documents yet
2 - his new company is not registered in the company's house yet.
What should I do? Should I 'wait and see'? Should I be more proactive and stop him now? <comment><USER2> I would imagine that copyright infringement is difficult and expensive to both prove and defend in court.

I would suggest 2 things:

1) Speak directly with the investors. You have some type of relationship with them. Let them know what happened. Let them know that you're not releasing the IP. That you've gone through this process and your former co-founder who is both negotiating in bad faith and in their name. I would imagine that the prospect of a costly lawsuit will force a resolution or they will pull funding. Even if you do not sue today, there is still time down the road. They could become successful and you can go after them then.

2) Go on with life. Start your company. Pick better co-founders. Become successful. Don't spend years of your life obsessed with something that didn't turn out.

These are hard learned lessons that I wish I knew 10 years ago.

<comment><AUTHOR> Thank you. I will take this advice and contact the investors.

</comment></comment><comment><USER3> Is the investor aware of the legal risk the new company is under if you aggressively sue them? He may be willing to settle things if that increases the chances of the new company staying afloat.

<comment><AUTHOR> My cofounder told me they are aware and that "they don't see me as critical person to the business" (quoting). He also told me they don't want to talk to me. I doubt any of that is true, but not 100% sure. I could reach out to them, but would that be a good idea? And how could I do it in the best way possible?

<comment><USER3> Speaking with the investor directly is necessary for this. From my limited (books and movies) understanding of law, a protracted legal battle can tie up resources in a company. Even if they win it will slow them down. Note to mention all that taking place in a bad economic environment (Covid-19). You need to plan with your lawyers how much legal pressure you can put, given your resources and the proof you have of the damage done to your IP. You can then make best and worst case scenarios of how much that legal pressure will hit the offending company and discuss those scenarios with the investor. If you can both see a mutual beneficial way to avoid that legal mess you could end up with a deal.

P.S. If you were to start a company like your co-founder is doing, would you also have the same IP problem he has? Cause if not maybe the investor can invest in you, if you wanted to try that?

Obviously there are a lot of unknowns so don't take anything I wrote here at face value. Do your due diligence.

<comment><AUTHOR> I could start a company without my cofounder. I already have plans to do so, but I won't use the same business idea or IP. I have a different vision (hence our conflict to start with). I agreed he could keep the IP and I would be free to do something else, in exchange of a 'buy out'. But after 6months of negation he kept adding new terms to the buyout and the last one, to which I couldn't agree, were very restrictive covenants of 24 months. His argument was that he didn't want to let me use his money to start my own business in competition with him. I could approach the same investors, but with something new, something fresh. The IP is mine, and my plan is to license it to another business at this stage.

</comment></comment></comment></comment><comment><USER4> Consult a lawyer

<comment><AUTHOR> I am already doing that. Each lawyer has a different strategy. Some are more aggressive than others. I wanted to hear Thoughts from The community.</comment></comment>


Solving Address Entry on Android - <AUTHOR> http://chairnerd.seatgeek.com/android-places-autocomplete-textview/ <comment><USER2> Stephen D'Amico

</comment><comment><USER3> Space Jam</comment>


Atebits - Tweetie for Mac - <AUTHOR> http://www.atebits.com/tweetie-mac/ <comment><AUTHOR> The first time I've seen that an iPhone app gets developed for the Mac. It's usually the other way around.</comment>


The Amazing Shortcut Keypad - <AUTHOR> http://www.theamazingshortcutkeypad.com/ <comment><USER2> Hey! Robin here - the creator of TASK: The Amazing Shortcut Keypad. Great to see so many comments and some interesting engagement :D

A lot of you are identifying other ways to achieve this sort of automation either with AutoHotKey or custom scripts and if that works for you then good on ya, no point in changing :)

However, the keypad was designed to give you quick, easy and intuitive automation in seconds. No writing code, no binding keys or running scripts. You just drag and drop and it's there.

It's not supposed to be revolutionary new tech, it's just taking a fairly standard macropad and making it easier, faster and less bother to get working. Added benefits are you can share automation 'recipes' and it'll be open source so you can hack/tweak it to your own needs.

<comment><USER3>
        > No writing code, no binding keys or running scripts.

This might be a dumb question, but why bother making hardware for that? Could you write software that works with an existing external num pad?

<comment><USER2> This is a really good point, and in the future it would be really cool to implement it on anything. However, it's tricky to guarantee compatibility with every num pad out there, and there are several pieces of software which try and do this already but come up against numerous problems.

In the spirit of keeping it simple, I'm using an Arduino as the heart of it as they are simple to programme and people can hack and tweak to their own needs, rather than struggling with firmware upgrades etc.

I do really like your idea of making it work with a range of hardware. I'm actually going to release 4 different designs ranging from a single button right up to the 12 mechanical key version you see in the link. That way people can choose their price range. Could be as low as £15 !

</comment></comment></comment><comment><USER4> I like the idea, but can't you achieve most of the functionality just with an add-on $10 USB 10-key, and your choice of scripting? I have used the crazily versatile Controllermate[1] on macOS to do something similar with a gaming keypad that triggered Applescripts and shell scripts.

1: [https://www.orderedbytes.com/controllermate/](https://www.orderedbytes.com/controllermate/)

<comment><USER5> It'll send the same codes as any other 10-key you have. That was my issue when I was looking for something similar, as I still use the 10-key on my keyboard occasionally. I ended up getting a Logitech G13 for the same purpose but never ended up clearing the desk space so I could set it up.

<comment><USER6> In addition to a few more keys next to the keyboard, how about adding a simple voice interface?

"Keypad 1"

"Keypad 2"

or even name the macros:

"Keypad sort"

If I'm not constantly repeating a macro, I like to keep my hands on my main keyboard.

<comment><USER5> ;)

I use VoiceAttack when playing Elite Dangerous in VR.

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

<comment><USER7> What kind of things do you get to control with your voice? ED in VR looked cool as hell.

</comment></comment></comment></comment></comment><comment><USER8> My mechanical keyboard has all this functionality, built-in. No software. No coding required, as it just remembers your strokes. (Or emulated mouse input via its mouse input controls.)

The same company has a mechanical numpad/calculator that can do the same as this shortcut keypad as well, in about the same package, along with having a calculator and display.

These macro pads are all over r/MechanicalKeyboards. Plenty of parts and kits to get you started if you want to make your own.

</comment><comment><USER9> I use different solution that is arguable better than this and is right now on the market for not much money. I am talking about MMO mouses. Personally I am using Logitech G600 that have total of 20 programmable keys which can be programmed in 3 layers giving grant total of 60 macros, all within a reach of your thumb. This mouse is able to save macros onto on board flash memory which allows use on any system, even Androidm of course after configuring it either on Windows or MacOS.

<comment><USER10> Huh, really? That's very nifty, I didn't know it saved commands to flash and didn't need a companion utility. Very useful, thanks for the info.

<comment><USER9> Yes, many mouses are doing that, you just have to check with the manufacturer (I had A4Tech and Bloody mouses having this feature). Unfortunately this is not the case for all mouses of one company so while Logitech G600 have this, Logitech M705 doesn't. I found out that mostly gaming oriented mouses have that feature. As for my mouse I have shortcuts for different systems (Linux, MacOS, Windows) set on each layer. Companion utility is needed only for initial setup.

</comment></comment></comment><comment><USER11> You can assign macro or function to keys on your keyboard, why the need for the extra hardware?

[https://support.microsoft.com/en-us/help/237179/assign- macro...](https://support.microsoft.com/en-us/help/237179/assign-macro-or- function-to-keys-on-your-keyboard)

<comment><USER12> Since you're citing a Microsoft page, let me give you my very recent experience.

We've acquired a Surface Book, which as you probably know can be used as a tablet or as a laptop. The tablet part can also be reversed and closed back on the keyboard. This makes for a very nice graphic tablet!

The only problem is that, in this configuration, no more keyboard for the essential shortcut used while drawing in Photoshop and the like.

One solution is to plug an external keyboard. Another solution would be to use this!

<comment><USER11> It was an example. When using PS the menu bar is always available.

</comment></comment></comment><comment><USER13> Wouldn't it be faster to just input a key accelerator (which you can do on your Mac straight from system preferences -- I would assume Windows has similar)? That way you don't have to take your hands off the keyboard, simply press command-foo.

I doubt cmd-foo is harder to remember than the bindings of blank keys on an accessory device.

<comment><USER14> Going by the screenshot, it looks like you can do a bit more than the System Preferences keyboard shortcut page lets you! Looks more like something like AutoHotkey, I'd say, but with a non-insane interface.

<comment><USER2> Yeah, you've got it! You can type text, send keyboard shortcuts, mouse movements, media commands and numpad keys. You can also delay and repeat anything as much as you like.

Now any of that can be done in any combination and it's set up in less than 1 minute.

It hasn't got all the features of AHK - some things have to be sacrificed for simplicity but you are very right in saying it has a lot more to offer than simple key bindings. These are proper macros :)

</comment></comment></comment><comment><USER15> HammerSpoon already does a great job at this on Mac.

[http://www.hammerspoon.org/](http://www.hammerspoon.org/)

<comment><USER16> Or alternatively BetterTouchTool, which additionally allows Touch Bar customization if you have a tMBP. [https://www.boastr.net/](https://www.boastr.net/)

</comment></comment><comment><USER17> I made a program that lets you use a laptop as an external keyboard, which is also based on an Arduino.

[http://peterburk.github.io/programs/#keymouserial](http://peterburk.github.io/programs/#keymouserial)

As a clicker for presentations, I'm planning to buy a Sanwa Supply NT-MA1 Optical USB Numeric Keypad Mouse. But I still need to save up money for that.

</comment><comment><USER18> These guys have been making some pretty neat controllers for a while now: [http://xkeys.com/XkeysKeyboards/](http://xkeys.com/XkeysKeyboards/)

<comment><USER2> They are really sturdy pieces of kit and they're UTF-8 too so great for custom characters etc. However, they're really expensive in the UK (where I'm from) and the interface is seriously old and clunky so there is room for improvement, especially if you're looking for a more customisable solution.

</comment></comment><comment><USER19> Alternative if you feel like spending a little more: [https://rama.works/m10-a/](https://rama.works/m10-a/)

<comment><USER20> Nice, but nearly everything on their online store appears to be "Sold Out"?!?

<comment><USER21> I suspect that they might only sell through massdrop: [https://www.massdrop.com/buy/rama-m10-a?mode=guest_open](https://www.massdrop.com/buy/rama-m10-a?mode=guest_open)

</comment></comment></comment><comment><USER22> I've been wanting a macropad for a while, but to be a really useful complement to the keyboard this would need a display. There appear to exist some OLED solutions, but iirc they were very pricey and probably didn't support Linux very well.

Unfortunately nobody makes what might be a cheap display-enabled solution, namely a macropad with a regular, large LCD character display matrix, with buttons arranged on the side to each line, like a quickdial.

This is probably not super hard to realize with Arduino (though I would be unsure which interface to use; possibly serial over USB? Then implement an evdev driver?). Getting it nicely looking and sturdy would be much harder, though. So if anyone is going to market something like this let me know. ;)

<comment><USER2> Your comment has made me think about putting an LCD display on this. Like you say, with it being an Arduino, it's just a matter of wiring up a 16x2 LCD display and using the inbuilt library. Nothing too tricky there.

In fact, the hardest bit is just designing a 3D printed case for it but that will only take an afternoon. I will look at adding this to the crowdfunding as a stretch goal.

</comment></comment><comment><USER23> I actually made something similar using a small program called "luamacros" to intercept keys from a Planck ortholinear keyboard, then I printed out labels to put on the blank keycaps.

I think I've finally settled on a good layout, so I'll be printing up some custom keycaps to permanently print the legends on the keys.

It's surprisingly useful! I've got some buttons to open websites, some to do git-things, some to open terminals to various places on my PC, some to open folders, and a few to open programs.

<comment><USER24> Luamacros was used by the video editor of Linus Tech Tips to make an entire spare keyboard into a macro pad. He even used up every single key!

[https://www.youtube.com/watch?v=Arn8ExQ2Gjg](https://www.youtube.com/watch?v=Arn8ExQ2Gjg)

<comment><USER23> Yeah that was where I got the idea.

I was actually able to remap the keys of the Planck with some customizable firmware to remove the layer key and Ctrl/alt/etc... keys which made it easier to work with.

</comment></comment></comment><comment><USER25> Kind of on-topic, does anyone know what's the smallest industry made USB keyboard/button presser one can find?

I'm talking small as in, number of keys. Ideally just one or two keys and a USB connection so that you can interact with a computer.

Think like a clicker.

<comment><USER2> There are a couple of them kicking around the Mechanical Keyboard community. This sort of thing: [https://encrypted- tbn0.gstatic.com/images?q=tbn:ANd9GcRSutzW...](https://encrypted- tbn0.gstatic.com/images?q=tbn:ANd9GcRSutzWPW0vYd2-VYMsDQZF8S0F5-gLjtdz7ei60vtwjfEyKouIRQ)

However, you will be able to make a keypad consisting of anywhere between 1 and 16 keys using the TASK software. In fact, you will be able to make a highly functional single key for about £7 using the designs I will be releasing in the shortcut keypad crowdfunding campaign!

<comment><USER25> Thanks.

This one:

[https://techkeys.us/collections/keyboards/products/onekeyboa...](https://techkeys.us/collections/keyboards/products/onekeyboard)

would be perfect but it seems to be sold out. I'll contact them to get more info.

There's other great options in the website nonetheless.

</comment></comment></comment><comment><USER26> Less powerful than autohotkey, and requires you to use a separate keypad? Just use autohotkey and the keyboard you're already using? I just bind my capslock to my alternate layer. For instance holding caps turns j,k,l,i into arrow keys.

<comment><USER27> I have RSI so a single keypress for things like ctrl+c and ctrl+v is much easier.

The more keys you need to press simultaneously the worse it is for some people.

<comment><USER26> You could program press and hold of any key to do whatever you like. Or you could use the copy paste buttons on a contour roller mouse. With autohotkey, you can make any key, do anything. The sky is the limit. You could make press and hold c equal copy.

</comment></comment></comment><comment><USER28> This is great. It's like a mouse only stationary and with lots of keys that you can press instead of clicking. And you can program the keys to do whatever you want! Wow!

<comment><USER2> You've got it in one!

</comment></comment><comment><USER29> This looks awesome. I have missed the Gateway 2000 AnyKey keyboard since my last one died a number of years ago, and perhaps this will fill that role.

<comment><USER2> I hope so! If you have any tech questions, ask away.

</comment></comment><comment><USER30> Steelseries keyboads offer the same functionality with numerous easily programmable keys. I use heavily with Sublime Text. Steelseries engine software is flacky on mac though, since sierra update often freezes, fine on Windows. Ideally keys should have programmable LCD icons aswell, I would happily pay $200 for such. I used to use Actions app on ipad, but a bit slow compared to steelseries, so stopped using.

</comment><comment><USER31> Slightly off topic but what kind of things are people automating behind macros here? I run autohotkey but only use 2-3 macros daily which are macros to start and kill apps I work on (hard kill to avoid waiting some shutdown time) and an "attach to app" macro.

Not enough to justify buying these. Am I missing out? Any great macros for developers?

<comment><USER2> I originally created The Amazing Shortcut Keypad to automate AutoCAD during my engineering studies. Instead of having to type 'line' 'rectangle' 'fillet radius 20' 'snap 5' etc, I now just press a button and it happens instantly.

It sped me up so much and was so much more efficient, I decided to develop the project to help other people... and here I am today!

It's not just long tedious things which are worth automating, but sometimes, it's the things you use really frequently which need a slightly more efficient way to be accessed.

</comment></comment><comment><USER32> I like this. It also reminds me that I should make more use of my G keys on my Logitech mechanical keyboards.

<comment><USER2> Very similar functionality to the G Keys - if you have them then definitely make use of them. I'm jealous, I want G keys.

</comment></comment><comment><USER33> I can also recommend QuadroSync, which basically turns your iOS device into a TouchBar. I don't use it much because I prefer keyboard shortcuts, but it's one of the first apps of its kind that I actually can see myself using for a bunch of things.

</comment><comment><USER34> I use xcape ([https://github.com/alols/xcape](https://github.com/alols/xcape)), to overload modifiers. You get around 7-8 extra keys at an easy to reach distance.

</comment><comment><USER35> [https://www.artlebedev.com/optimus/aux/](https://www.artlebedev.com/optimus/aux/)

</comment><comment><USER36> The device somebody needs to make is a little 3x2 home/end/pgup/pgdown/ins/del block of chicklet keys with an adhesive back that I can stick on to my Macbook Pro to turn it back into a computer.

Most (all?) other manufacturers have also ruined that little magic block of keys, so there would certainly be a market from folks like me who were brought up in a world where you could delete a character or jump to the end of a row with a single finger.

Charge me $500 for the thing and I'll still buy it.

<comment><USER37> > Charge me $500 for the thing and I'll still buy it.

Is this what you were looking for?

[https://techkeys.us/products/sixkeyboard](https://techkeys.us/products/sixkeyboard)

<comment><USER36> A bit chunky but yeah, that's sort of the thing. It'd be nice if they had a low-profile chicklet version (or at least included the actual keys with the thing), but I'll order one and see if I can make it work.

Thanks!

</comment></comment></comment><comment><USER38> > Automatically loop through tedious editing. (in the video)

Why would I get a new numpad when I can do this with vi/emacs/etc. macros?

<comment><USER2> Mostly for speed but macros will do the job - it's just another example really :)

</comment></comment><comment><USER2> BTW, full demo vid is here showing the drag-and-drop software in action as well as several use cases.

[https://www.youtube.com/watch?v=OIkcKXIPrLY](https://www.youtube.com/watch?v=OIkcKXIPrLY)

</comment><comment><USER35> what it's missing is a display on each key.

<comment><USER2> I actually looked into this but it gets hideously expensive! Such a cool idea though

</comment></comment><comment><USER39> or, y'know

AHK</comment>


List of Elixir books - <AUTHOR> https://github.com/sger/ElixirBooks <comment><USER2> This is a good 'start' to an elixir list, but i'm surprised it's missing 'Programming Elixir' by Dave Thomas, which is probably the de-facto pick- axe/K&R/whatever of elixir.

The title is a little misleading as it contains other resources than just books (unfortunately missing [http://www.redfour.io/](http://www.redfour.io/) too)

<comment><AUTHOR> Thanks for the comments i will add the book to the list

</comment></comment><comment><USER3> I've got a small list of Elixir links, including editor support:

[https://github.com/melling/ComputerLanguages/blob/master/eli...](https://github.com/melling/ComputerLanguages/blob/master/elixir.org)

</comment><comment><USER4> I've just discovered this repo that teaches you Elixir in a very original fashion – in case anyone is interested: [https://github.com/elixirkoans/elixir- koans](https://github.com/elixirkoans/elixir-koans)

</comment><comment><USER5> Might be worth it to mention some Erlang books. I've heard many have benefited from Programming Erlang.

Also, stronger curation—Introducing Elixir is kinda old right? I'd put Programming Elixir instead of it.

</comment><comment><USER6> Also check out the awesome-elixir list: [https://github.com/h4cc/awesome- elixir](https://github.com/h4cc/awesome-elixir)

<comment><AUTHOR> nice list</comment></comment>


MuseScore: Create, play and print beautiful sheet music - <AUTHOR> https://musescore.org/en <comment><USER2> I've been using MuseScore for several years to arrange vocal and piano scores. It's really good!

The best thing about it being free is not so much that it is free for me, as the arranger (I've bought score editing software before). It is the fact that I can actually send the digital scores to the singers, and tell them they can use the same software for free to rehearse on their own (e.g., setting the volume of their voice louder, etc.).

<comment><USER3> A cappella?

</comment></comment><comment><USER4> MuseScore is great. Watch this recent episode of FLOSS weekly for interview with the developers: [https://www.youtube.com/watch?v=iyrRvF1iO4I](https://www.youtube.com/watch?v=iyrRvF1iO4I)

</comment><comment><USER5> One of the nice (tangential) things about MuseScore is that they provide and curate a really good MIT-licensed GM soundfont called Fluid[1]. (A soundfont is a collection of samples that usually gets mapped to MIDI instruments. Most built-in soundfonts are on the order of a few megabytes; this one comes in at a whopping 140MB!) The latest version is offered as an SF3 file, a modified version of the SF2 format where samples can be stored as OGG instead of WAV. The tool used to convert SF2 to SF3 can be found on Github[2] and is maintained by one of the lead MuseScore developers.

(I used the SF2 version of this soundfont in my new iPad music app[3], <shill> a kind of doodle-y, multi-instrument sequencer where you draw your notes directly on a pannable and zoomable canvas rather than plotting them out one- by-one like in most DAWs. You can draw notes at any point in time and bend them to any pitch, allowing you to easily play around with guitar solos and complex rhythms. It's sort of my modern take on sheet music. But I digress... </shill> Since the Fluid SF2 is so big compared to the SF3, I'm going to try to modify sftools to re-convert SF3 back to SF2 in order to keep my bundle size down.)

[1]: [https://musescore.org/en/handbook/soundfonts](https://musescore.org/en/handbook/soundfonts)

[2]: [https://github.com/wschweer/sftools](https://github.com/wschweer/sftools)

[3]: [http://composerssketchpad.com](http://composerssketchpad.com)

<comment><USER6> And to piggyback on your shill with my own shill... I'm also using the Fluid soundfont in Soundslice. :-)

Example: [https://www.soundslice.com/scores/auld-lang- syne/](https://www.soundslice.com/scores/auld-lang-syne/)

You can test it out by switching the play mode to "Synthetic" (click "Full mix" at bottom). Change instruments by clicking "Guitar" along the left margin.

<comment><USER5> Slick! Love the design. How did you compress it to run on the web?

<comment><USER6> I converted it to MP3 and did lots of hacks. :-)

</comment></comment></comment></comment><comment><USER7> I used LilyPond for quite a while, but I've found MuseScore just as powerful and much easier to use. Data entry is very simple once you get into the 4-C 5-D-# rhythm. I haven't contributed to the project--haven't found any bugs I needed to fix yet--but I am immensely reassured by the availability of the source code.

<comment><USER8> The output in their screenshots look nice, but it looks like there are some cases that aren't handled as cleanly as I suspect LilyPond would render them. In the "Praeludium 10" screenshot on their website, look at the first sixteenth note in bar 21, for example. It's rendered really close to the left margin (and obscures the tempo marking); most printed scores would include a tad more padding for readability. Would be interesting to read their layout algorithm and compare it to Lily's (I guess I can!).

<comment><USER9> Wow, that's weird. I downloaded the score in question ([https://musescore.com/opengoldberg/scores/719586](https://musescore.com/opengoldberg/scores/719586)) and opened it in MuseScore, and found that for some reason that's the way the score's style controls were set. The "Barline to note distance" (under the Style menu in MuseScore, choose "General…", and then click "Measure" on the left) is by default 1.2 times the space between two lines of the staff. But in this score, it's 0.6! I have no idea why—changing that parameter back to the default seems to yield a much better layout.

There's also something else going on with that screenshot, though. The person who took it put page breaks in different places than in the actual score, which is why that tempo marking is overlapping. If you open that same score in MuseScore, the tempo marking is positioned appropriately.

</comment></comment></comment><comment><USER10> Also Denemo might be worth a look: [http://www.denemo.org/](http://www.denemo.org/)

</comment><comment><USER11> If you're interested in score layout, Steinberg are working on a new score layout application with (from what I gather) a lot of emphasis on layout flexibility, and there are a series of blog posts about some of the more interesting and subtle score layout issues, including how the other major notation applications handle edge cases.

The most recent post was [http://blog.steinberg.net/2015/12/development-diary- part-12/](http://blog.steinberg.net/2015/12/development-diary-part-12/)

No disclaimers; I'm not affiliated with the product. Just a keen reader of the development diary.

</comment><comment><USER12> I don't know if it's just my browser (Windows Firefox) but the playback of songs seem a bit off. For example this one: [https://musescore.com/user/3967646/scores/1673111](https://musescore.com/user/3967646/scores/1673111) the red overlay is late by a few hundred milliseconds. Not much but it's quite noticeable.

<comment><USER13> It happens to me as well (Windows, Chrome) but inconsistently (sometimes, its on time). Looking at the JS, it might be since it schedules to check for updates every 100ms (`timerId = setInterval(update, 100);`) instead of scheduling a callback for the time of the next bar.

Edit: Also, the JS `setInterval` callback can be delayed.

Edit: After debugging their code some more, the above isn't why (though is still inefficient). The audio player (SoundManager) they are using only updates the audio playback time at a rough granularity. If I log the time values, I get the following (all in milliseconds):

        0
        182.404
        681.59
        1180.778
        1680.963
        2179.152
        ...

The song is 120 BPM which means that the first bar changes is at 2000ms causing the first bar change to be 179ms late.

</comment></comment><comment><USER14> Anybody know if/how well this can export scores to MIDI? I've recently been learning to use Ableton and found that exporting my compositions created in Finale to work excellently, which has given me a whole new level of control over it.

<comment><USER15> The MIDI export in MuseScore is very solid. All import/export formats are listed at [https://musescore.org/en/handbook/file- formats](https://musescore.org/en/handbook/file-formats)

</comment></comment><comment><USER16> Going through several such editors (including Musescore), I ended up using Rosegarden.

</comment><comment><USER17> I love MuseScore.</comment>


Five lists of six things about Rust - <AUTHOR> https://graydon2.dreamwidth.org/214016.html

<comment><USER2> To me, the biggest improvement Rust brings to the table is its sane defaults. This, coupled with its type system, makes handling outcomes something you opt out of.

As I continue to use of Rust, I keep finding myself avoiding `if` statements in favor of the `match` statement for this reason alone.

<comment><USER3> And then you start pipelining all the match statements... Rust almost starts to look functional.

</comment></comment><comment><USER4> I know this doesn't add much, but I love everything Graydon Hoare writes, especially about programming languages.

</comment><comment><USER5> > Six ways Rust is fundamentally different from how it started > ... > 3\. > LLVM: strengths (amazing optimization) and weaknesses (narrow semantics)

Did Rust originally use a custom code generator instead of LLVM?

<comment><USER6> Sure did. I think it's still in the git history, boot/back/ or something.</comment></comment>


Bitcoin Is in Wild Upheaval After the Cancellation of the Segwit2x Fork - <AUTHOR> http://fortune.com/2017/11/12/bitcoin-upheavel-segwit2x-fork/ <comment><USER2> > _More profoundly, Bitcoin Cash's hashrate, or network-wide cryptographic > processing power, has surpassed Bitcoin's._

This is not correct. BCH difficulty adjustment algorithm kicked in last night (difficulty +400%) [1] and BCH mining profitability tanked.

BTC is now ~3.5x more profitable to mine [2], and as a result most of the hashpower has returned to BTC [3].

It would seem that at least a large part of the movements this weekend were the result of miners gaming the BCH difficulty adjustment algorithm, combined with a dash of FOMO and pump / dump dynamics.

BCH hardforks today to make an emergency fix to the difficulty adjustment algorithm [4], so longer term it will be interesting to see what happens to the price, once the incentives for miners to game the difficulty algorithm disappear.

Hopefully the new algorithm allows the BCH difficulty to stabilise and the two chains can coexist.

It increasingly seems that forks will be commonplace, and as such the bitcoin protocol could probably benefit from built in replay protection and a more responsive difficulty adjustment algorithm.

[1]: [https://fork.lol/pow/difficulty](https://fork.lol/pow/difficulty)

[2]: [https://fork.lol/](https://fork.lol/)

[3]: [https://fork.lol/pow/hashrate](https://fork.lol/pow/hashrate)

[4]: [https://www.bitcoinabc.org/november](https://www.bitcoinabc.org/november)

</comment><comment><USER3> Given that the bitcoin community normally seems so enamoured with trustless systems, I did think it was extremely odd that people went along with Segwit2x when it was implemented in such a way that the Segwit camp got a trustless guarantee while the 2x camp got no such guarantee.

After all, if Segwit have already got their payoff, what incentive do they have to support 2x?

<comment><USER4> As far as I'm aware the Bitcoin developers never signed the New York Agreement. It was a group of people and businesses that came together to "fix" Bitcoin into something they saw an improvement. They just lacked developers and community support.

<comment><USER5> As far as I am aware the Bitcoin Core developers are just a group of people that called their client "reference client" and are themselves very entangled with Business interests of a particular company. They are not "official" and have no real authority to call their client "reference client" but somehow every time someone speaks about the NY Agreement it gets pointed out that Bitcoin Core has not signed.

Who cares what they signed or didn't sign? They did sign the HK Agreement and then broke it shortly after. They have proven that they don't give a shit about such agreements.

NY Agreement didn't lack developers (just not the Bitcoin Core Developers) and they didn't lack community support. Bitcoin Core is just very good at controlling communication channels through Censorship and Propaganda.

</comment></comment></comment><comment><USER6> >> Bitcoin Cash is now heavily backed by Chinese traders and miners

I thought cryptocurrencies are fobidden in China now

<comment><USER7> VPNs and a lot of things are forbidden, it doesn't mean that there aren't a lot of people in China, and that they let themselves be stopped by minor roadblocks.</comment></comment>


Ask HN: What's something I can do right now to increase my productivity? - <AUTHOR>

I saw the equivalent quora post (http://www.quora.com/Whats-something-I-can-do-right-now-to-increase-my-productivity) and really liked some of the answers. I'm wondering if you guys have any advice on how to get more productive! <comment><USER2> Stop reading HackerNews? :)

</comment><comment><USER3> I deactivated my Facebook account.

</comment><comment><USER4> Stop procrastinating right now!

</comment><comment><USER4> Stop procrastinating</comment>


Ask HN: Tips for a minimalistic style blog? Please - <AUTHOR> Hi,<p>I am looking to create a blog (mostly essays, sometimes with illustrations) but I'd like a very minimalistic design, easy to read and something that looks really clean. Do you have tips in order to build that ? (i am a total beginner) Thanks very much !!! <comment><AUTHOR> to clarify this is what i mean by minimalistic and clean : [https://hey.com/](https://hey.com/)</comment>


The Lurking Smalltalk in Unix and Plan 9 [pdf] - <AUTHOR> http://plosworkshop.org/2013/preprint/kell.pdf <comment><USER3> Great paper. We need more discussions about such fundamental topics.

Remember the "Information at your fingertips" speeches of Bill Gates (Comtex '90 and '94) and the Cairo operating system, its ObjectFS filesystem and later WinFS?

* _Information at your fingertips_ Bill Gates Comdex Keynote 1995: [http://www.youtube.com/watch?v=o0O0Xjpjvfc](http://www.youtube.com/watch?v=o0O0Xjpjvfc)

* _Information at your fingertips_ Bill Gates Comdex Keynote 1990: [http://www.youtube.com/watch?v=jxUPSF2K7Cs](http://www.youtube.com/watch?v=jxUPSF2K7Cs)

* Microsoft's _Cairo_ operating system: [http://en.wikipedia.org/wiki/Cairo_(operating_system)](http://en.wikipedia.org/wiki/Cairo_\(operating_system\))

* Bill Gates' _The Road Ahead_ book: [http://en.wikipedia.org/wiki/The_Road_Ahead_(Bill_Gates_book...](http://en.wikipedia.org/wiki/The_Road_Ahead_\(Bill_Gates_book\))

* WinFS and its history: [http://en.wikipedia.org/wiki/WinFS](http://en.wikipedia.org/wiki/WinFS)

The current operating systems haven't really advanced since Windows 95 - <USER2> user interface and the development APIs (not the kernel mode part). Some mobile OS are even a regression. The idea of compound documents format was not bad, just OLE2 was cumbersome (and a vendor lock-in). With HTML, its IFRAME and HTML-based desktop GUI we could achieve the paradigm shift that Bill envisioned.

<comment><USER4> I'd be interested to know about best current environments for usable computers.

I suspect it's going to be a BSD or Linux kernel with a tweaked OpenBox (or similar) environment with a variety of web browsers and plugins.

It is a great shame that almost everyone has a powerful computer in their pocket, but that they are unable to use the power of those computers because they are locked into a variety of closed systems.

<comment><USER5> > I suspect it's going to be a BSD or Linux kernel with a tweaked OpenBox (or > similar) environment with a variety of web browsers and plugins.

That sounds sort-of-but-not-quite like ChromiumOS. Actually, it puts me in mind of how CoreOS would work if it were installed on a PC and each Docker container was a desktop environment: one container for Chromium in OS mode, one for Firefox, one for GNOME, one for XMBC, one for the SteamOS shell, one for QEMU-KVM running Windows Embedded...

</comment></comment></comment><comment><USER6> Reposting an earlier comment of mine [https://news.ycombinator.com/item?id=6530180](https://news.ycombinator.com/item?id=6530180) with context [https://news.ycombinator.com/item?id=6526412](https://news.ycombinator.com/item?id=6526412) :

> pjmlp 211 days ago | link | parent | flag

> Nice article, but it fails to explain the experience using Smalltalk > environment really is. Smalltalk, like Lisp Machines, was originally a blend > of GUI operating system, development environment and the first real IDE.

> agumonkey 211 days ago | link

> It's funny. Unix was also meant as an IDE (persistency, logic, machine and > user interfaces). It seems they all were trying to reach the same goal in > their own way. \-----

> 2 points by leoc 210 days ago | link

> The fact that dc was originally intended as basically the Unix system's > bignums library > [http://www.catb.org/esr/writings/taoup/html/ch08s02.html#id2...](http://www.catb.org/esr/writings/taoup/html/ch08s02.html#id2..). > helped to open my eyes to this. I think you could talk about this idea of > Unix as "big Unix" and the narrower understanding of Unix programming, > dominated by the C APIs, as "little Unix". Little Unix took over the world, > while big Unix collapsed under its own weight due to things like > portability/versioning hell, robustness problems due to faulty tools and > text-parsing errors, performance issues and so on. (Partly this was a > success catastrophe, of course, for example in how the popularity of Unix > resulted in a profusion of different Unix userlands with varying interfaces > and bugs.) Also little Unix was more comprehensible from, and more portable > to and from, the world of PC (MS-DOS/Windows/Mac) application development, > where the environment is more or less the kernel's/OS vendor's APIs. The > fact that clearly many more people have bought or read K&R > [http://www.amazon.com/dp/0131103628/](http://www.amazon.com/dp/0131103628/) > (with its very little-Unix perspective) than /The Unix Programming > Environment/ > [http://www.amazon.com/dp/013937681X](http://www.amazon.com/dp/013937681X) > reflects this divergence, and also surely helped to create it.

<comment><USER3> Unix was Multics little brother: [http://en.wikipedia.org/wiki/Multics](http://en.wikipedia.org/wiki/Multics)

</comment></comment><comment><USER7> Did anyone here ever get a chance to play around with the Squeak VM?

[http://www.squeak.org/](http://www.squeak.org/)

It's basically "Smalltalk OS", running on any modern machine. Has some really interesting ideas, such as every visible thing (and many invisible things) being inspectable to see the code driving them, which can be changed live.

<comment><USER3> We used Squeak in a computer science university course. It's a pretty interesting Smalltalk environment.

Users have to learn to be careful, as one can destroy the whole environment by modifying environment related Objects. So do regular backups of the whole image, at least for the first few hours!

It could be a great playground for kids to get into computer science. The playful colors may help too. Its GUI capabilities are more like Win95. [http://en.wikipedia.org/wiki/Squeak](http://en.wikipedia.org/wiki/Squeak)

I would argue, JavaScript is like a modern successor. A modern browser with its developer console (F12 shortcut) offers a comparable environment to Squeak-light. A more feature-full release of the FirefoxOS/ChromeOS HTML5 shell release for desktop operating systems is probably the _next big thing_.

<comment><USER8> I kind of agree.

The problem is the Frankenstein model the HTML/CSS/JavaScript interaction still offer.

HTML5 and the upcoming web components seem to be a step in the right direction, but it is still not quite there.

</comment></comment></comment><comment><USER9> Well, the MIT Lisp Machine was also a fully object-oriented system. Just using Flavors (and later CLOS) instead of Smalltalk.

<comment><USER10> While you could meaningfully use dedicated smalltalk workstations without ever coming across the concept of filesystem and use images for persistence, Lisp machines were heavily file based.

In context of software development environments this distinction holds still, in Smalltalk implementations getting some kind of source code that can be versioned by normal VCS like subversion or git is generally an hackish afterthought and source code is mostly stored in heap or one large binary memory image, while in Common Lisp implementations the whole concept of images is more or less equivalent to "artifact you get by building the project".

<comment><USER9> All Lisp Machines booted and saved images. For the Symbolics Lisp machine it was not unusual to boot into remote image and save/load incremental images. In Genera one typically loads a software into an image and then dump a new incremental image and use that later. Source code was typically stored in files (with versions) and maintained by a tool called 'system construction kit'. There were some higher-level tools like KEE, which developed knowledge- based systems mostly inside the image using GUI interfaces under program control.

The first thing you do when setting up a personal Lisp Machine, is loading a bunch of software. This is typically done by typing the name of the software and the machine finds it in the software repository and loads it. 'Load System 'FOO''. Once the software is loaded one writes a new image, often an incremental (delta) image. 'Save World :incremental ...'. After that the Lisp machines asks whether to modify the boot sequence to use the new image... The systems itself, were usually stored on a central file server and registered by name. Often also a bunch of preconfigured images were provided.

Working with images AND files was already available in the 60s for example in BBN Lisp. BBN Lisp could dump images, which one later loads for further use.

But what you think of Smalltalk as image based development was available in Xerox Interlisp and Interlisp-D.

See: [http://larry.masinter.net/interlisp- ieee.pdf](http://larry.masinter.net/interlisp-ieee.pdf)

> The file package removes from the user the burden of keeping track of where > things are and what things have changed. For example, the file package keeps > track of which file contains a particular datum, e.g., a function definition > or record declaration. In many cases, it automatically retrieves the > necessary lisp system during the interactive session. During this process, > the primary copy of the program (the copy that is changed during editing > operations) resides in the programming system as a data structure; editing > is performed by modifying this data structure. For this reason, Imerlisp is > called a residential system.'

> In a residential system, it is important to be able to take procedures > represented by data structures and print them on text files in an input- > compatible format for use as backup, for transporting programs from one > environment to another, and to provide hardcopy listings.

...

> By this point, the Interlisp user did not have to worry about maintaining > his source files, save for occasionally calling cleanup.

> The file package supports the abstraction that the user is truly > manipulating his program as data and that the file is merely one particular > external representation of a collection of program pieces. During a session, > the user manipulates the pieces with a variety of tools, occasionally saving > what he has done by calling the eleanup function.

> The user can also operate in a mode where programs are treated as residing > in a data base, i.e., the external file system, with a variety of > sophisticated retrieval tools at his disposal.

Btw., there are also current Common Lisp systems which make more use of images.

[http://www.lispworks.com/documentation/lw61/IDE-M/html/ide-m...](http://www.lispworks.com/documentation/lw61/IDE-M/html/ide-m-101.htm#pgfId-865672)

</comment></comment></comment><comment><USER11> I love all these 'other' architectures and platforms. What I can't seem to find an answer to is how these would play nice with team development efforts and revision control systems. Especially image based development is giving me real headaches here.

Is there a generalized way to deal with this?

<comment><USER12> Modern Smalltalks (Squeak, Pharo) have Monticello for code management, and Metacello for dependency management. These work 'in-image', easily and efficiently.

The older enterprisey Smalltalks had (have?) ENVY/Developer - reputedly an excellent and comprehensive version control system.

<comment><USER13> _Modern Smalltalks (Squeak, Pharo) have Monticello for code management, and Metacello for dependency management. These work 'in-image', easily and efficiently._

See, this is what gets me about Smalltalk and other "cocooned" systems, such as original Lisps. The languages have awesomely powerful features that are only now being picked up by other languages, but the environments feel constricting. Don't get me wrong, they are probably awesome for developing, _in those languages_. But sometimes it's good to have competition, or even just choice to suit programmer need/style, and saying that Smalltalk has <some vc I've never heard of> is a big turn off. Why can't I use the vc of my choice, as I can with nearly ever other language out there? Why can't I use the editor/IDE of my choice, as I can with nearly every other language out there? Having tools so tightly coupled just feels like bad design decisions.

<comment><USER12> You're probably thinking of Smalltalk as just another 'application' or 'language'.

Smalltalk is its own operating system, with an intrinsic (object-oriented) language, and Smalltalk-specific applications. It's an alternative computing _universe_ , and only runs in a VM because there's no native hardware, unlike with Unix/C.

There's so little competition with software because there are relatively few coders developing for Smalltalk. There's been some effort to develop a Git client; with more developers on board, who knows what else might be possible?

At the same time, it would be wrong to shoehorn software on this system into paradigms that work well in mainstream OSs. For instance, there's no real need for an editor with the comprehensive feature-set of Vim or Emacs, because ST code is not developed in that way!

</comment></comment></comment></comment><comment><USER14> The message-passing in Plan 9 seems basically different from Smalltalk's in that a message is a sequence of bytes, not references to objects. This comes up in the example in the paper where they pass the name of a file, which the receiver then looks up in its own namespace (hoping to find the intended file both there and accessible). I've used Smalltalk and not Plan 9, so I don't know, but I'd expect that difference in the foundations to make a big difference in what it's like to work in the system.

[http://en.wikipedia.org/wiki/Confused_deputy_problem](http://en.wikipedia.org/wiki/Confused_deputy_problem) for one angle on this.

</comment><comment><USER15> Rob Pike seems like the last person who would design a Smalltalky system.

<comment><USER16> The strong design influence is Niklaus Wirth, mostly Oberon and Tony Hoare.

Rob is also a Squeak fan, implementing Newsqueak and adding Channels for CSP

[http://en.wikipedia.org/wiki/Newsqueak](http://en.wikipedia.org/wiki/Newsqueak)

This inspired Phil Winterbottom to create Alef for Plan9

[http://en.wikipedia.org/wiki/Alef_(programming_language)](http://en.wikipedia.org/wiki/Alef_\(programming_language\))

They then combined along with Sean Dorward and created Limbo

[http://en.wikipedia.org/wiki/Limbo_(programming_language)](http://en.wikipedia.org/wiki/Limbo_\(programming_language\))

This was sold off to Charles Forsyth & Co. at Vita Nuova where Roger Peppe was employed.

Lucent lost loads of money in the telecomms crash and Bell Labs was decimated

Rob & Russ created Go at Google with similar ideas. Roger joined the Go community and now works at Canonical doing Go development.

<comment><USER17> Newsqueak has nothing to do with the Squeak Smalltalk system, it was an extension of an entirely unrelated Bell Labs language with the same name.

<comment><USER16> Oops, didn't read the paragraph far enough

Newsqueak was developed from an earlier, smaller, language, called Squeak __(not to be confused with the Smalltalk implementation Squeak) __. silly me

</comment></comment></comment></comment><comment><USER18> [OT, sorry]

Is this done with the standard *TeX font ("Computer Modern"?), or some other? I'm not sure why, but it looks somewhat not typical-LaTeX to me; if that's because of font, could somebody possibly shed some light how I could get similar effect? TIA

<comment><USER19> Indeed, it's Nimbus Roman. I did nothing special -- the SIGPLAN template did it for me. I had been assuming it just did \usepackage{times} internally, though on inspection it does seem to be doing \renewcommand{\rmdefault}{ptm}. Either way, it's fairly standard, but indeed not the default Computer Modern.

<comment><USER18> thanks for info!

</comment></comment></comment><comment><USER8> Interesting read, although it misses the whole developer experience that is part of Smalltalk.

EDIT: typo

<comment><USER20> The Smalltalk developer experience may in some ways be one of the better parts of Smalltalk, but at the same time it's also one of the worst.

Getting tied into a particular environment often made it awkward, if not practically impossible, to integrate with other editors, code manipulation tools, version control systems, and so forth.

This might have been okay in academia, but it was far less acceptable in industry.</comment></comment>


I am lonely will anyone speak to me - <AUTHOR> https://en.wikipedia.org/wiki/I_am_lonely_will_anyone_speak_to_me <comment><USER2> Can't talk, only WhatsApp</comment>


A Hackday in Paradise - <AUTHOR> http://www.hackerparadise.org/blog/2014/10/02/hackday-in-paradise/

<comment><USER2> With lines like:

 _Casey leans over. "What about the hammocks?" he asks. We had purchased hammocks to give to the winning hackers. No judges, though, so no winners._

I legitimately can't tell if this is supposed to be satire.</comment>


XSM: State management for Angular, React, and Vue - <AUTHOR> https://github.com/peterluhub/xsm <comment><USER2> Every new OSS repo's README should convince me to try it instead of the current standard tools, or at least compare it to them. In my case, I'd want to know what makes it better than Vuex.

<comment><USER3> It does have the key points listed in the readme. It probably is so obvious. Let me summarize them here. 1\. Simplicity - The concepts of XSM are straightforward and easy to grasp. Whereas, the concepts of Vuex are not as easy to understand. 2\. Vuex is for Vue only. On the other hand, XSM works Angular, React, and Vue. Learn once and be good with the 3 frameworks. Chance of code reuse with XSM.

</comment></comment><comment><USER4> When I see things like this:

        setcfg({'framework': 'React'})

I immediately think to myself that the designer of the API either (a) values tiny function names over understandable ones, or (b) hasn't given naming enough thought to be consistent. Either way, it's not a good sign and turns me off from investigating further.

<comment><USER5> [https://github.com/peterluhub/xsm/blob/master/xsm.js](https://github.com/peterluhub/xsm/blob/master/xsm.js)

The package only exposes 9 functions, and the naming is mostly consistent. There's no benefit to publicly nitpicking function names in something with such a small API.

<comment><USER6> Honestly, no need to put much thought in gp's comment. He just wants to show off that he is an experienced engineer that values good code and readability.

Edit: for those who disagree and downvote. Not only gp's comment doesn't adress the core issue and is a direct attack to the developer, but it cannot even be accepted as valid and helpful criticism. His point b says that it is possible that the developer doesn't value consistency, while his point a says he might be consistent with short naming. These remarks make it look more like random possible remark than ones that are really specific about this project.

</comment></comment></comment><comment><USER7> You could implement this in a dozen lines of code using React.Context. What's the benefit for React specifically?

</comment><comment><USER3> I have published a github repo that contains the real apps to show how to use XSM to manage app state and handle the API logic to the backend.

[https://github.com/peterluhub/realworld- example](https://github.com/peterluhub/realworld-example)

It implements the Realworld Example App specs. The state and API logic are factored out into an NPM package(rw-xsm-handlers). The intention is to use the same code(state management and API) for all the XSM supported frameworks to implement the Realworld Example App specs.

The React example is finished. Angular and Vue will be added later.

</comment><comment><USER8> Is there an actual scenario for this? People either picks Angular/React/Vue and live within their respective ecosystem, why would they accommodate themselves with a solution that compatible to all of those but not as good as other state management store that tailored for one of them?

I kinda missed the big picture here.

<comment><USER9> How about if you want to maintain your website in angular, but want to reuse your state management code with a mobile app written in react-native/weex?

<comment><USER10> You'd honestly be better off rewriting it. And if that's a huge ask, you need to seriously reconsider what is 'global state' in your app.

You state management shouldn't really have all your api calls in it. Especially if you're worried about cross platform, put your api interface code into a library, call that from components or your state management. If you find your state management code seems to exist only to call out to your api, it's probably not global state in the first place.

Approximately 90% of the time, when people are posting questions about VueX, my first thought, is 'that really doesn't seem like global state'

<comment><USER11> I don't think I get it, what do you use global state for? And what do you use to query your API and store responses then?

Most of the time yeah I do use Redux (sagas) to query my API and store the result. Many of my components need access to the same data (who's the current user, what's their list of items, what's the current item being looked at...), so it's at least shared state if not global

<comment><USER10> It's super dependant on the app. however, abstracting your api calls to a single library is helpful for any app beyond the most simple todo app.

Things like the current user are 100% global state.

A list of user settings, or valid values for a dropdown that doesn't change often (like a list of timezones, or countries), totally global state.

A list of objects only shown on one page or in one component? That component can call an api library for the data itself.

State of a component? Definitely not global scope. Specific example; virtual scroll for a table. storing the offset as global scope. As soon as a second instance of the component was loaded on the same page there would be major issues.

Data that gets paginated should probably not be in global state, or cached heavily, depending on the app. A couple dozen entries is fine, but the idea of pulling every record in a list from say, an erp app, and then paginating in memory, would wreak havoc on a user's browser. And you're keeping that in the browsers session memory. Not to mention ramifications on the backend, even if it is cached. and then you need to deal with cache invalidation, and then...

</comment></comment></comment></comment></comment><comment><USER12> From React developer perspective this looks ugly (at least for now). It is dependant on class-based components, it will do nasty modifications to your class instances.

You can do much cleaner job using React hooks.

</comment><comment><USER13> The fact that it only works with Angular, React, or Vue is a little discouraging (or at least, that's the impression I get by the `frameworkValue` config). Was initially excited to check out a new general-purpose state management solution.

</comment><comment><USER14> Would that work with lazy modules in Angular?

</comment><comment><USER15> Not affiliated, I just want to throw in Akita [https://github.com/datorama/akita](https://github.com/datorama/akita) from datorama, in the conversation, I have successfully used it in an Angular project, but it's framework agnostic, built on top of rxjs.

</comment><comment><USER16> This project is a month old and maintained by a single contributor. Tread carefully.

</comment><comment><USER17> I already have this merged into a feature branch.

</comment><comment><USER18> Request for mods: Title of post currently lacks "for Angular, React, and Vue" which makes it confusing.

<comment><USER19> Ok, we added those.

</comment></comment><comment><USER20> Looks better than Redux, but then again what doesn't?

<comment><USER21> I still don't quite understand the reasons for the amount of shit Redux gets these days–I find the code (especially when using Redux Starter Kit w/ Typescript) to be easy to debug, easy to read, and easy to maintain. To me, the boilerplate is evidence of a degree of abstraction that may not always be appropriate for every SPA, but in my experience, is still often a really useful and practical choice.

<comment><USER22> Redux adds more complexity and is simply unnecessarily. You just don't need it. If your back-end is something like a wire protocol over ws where you've already structured everything as "actions" or "messages" it's a decent fit, but even then React hooks are a better choice (e.g. reducer hook). For everything else there's just no reason to use it. I would go so far as to say that use of redux is an anti-pattern.

Of course, if your app is already built on redux, that doesn't mean refactoring away from it should be a business priority, but new projects should avoid it.

<comment><USER7> > You just don't need it

I have a lots data that needs to be globally available between multiple pages and is largely interdependent (i.e. one update might affect multiple slices of the data). The data needs to be updated optimistically (i.e. we show updates to the user before the fetch succeeds and unwind if it fails) and the updates are triggered through a mix of web socket polling and user actions.

You're right that I don't _need_ Redux for this project, but oh boy I really like using it.

<comment><USER22> > _lots data that needs to be globally available between multiple pages and is > largely interdependent_

This is the ideal use case for react context. It's not as if redux is doing something magical to achieve that result, it uses context under the hood anyway, but it adds on the complex and usually unnecessary action/reducer abstractions. I have mentored about two dozen developers on react and redux projects over the past three or so years, I've learned this lesson the hard way.

> _the data needs to be updated optimistically (i.e. we show updates to the > user before the fetch succeeds and unwind if it fails) and the updates are > triggered through a mix of web socket polling and user actions._

Redux doesn't address these problems specifically, but I'd be curious to understand why you think redux is of particular value for them.

> _You 're right that I don't need Redux for this project, but oh boy I really > like using it._

Well that's fine, I'm not arguing that you shouldn't use what you like.

<comment><USER7> > This is the ideal use case for react context.

Not really. React.Context solves the global availability bit but it does not scale with the size and complexity of your data. You'll end up building a custom Redux store inside your Context anyways, except now with an uglier API and no devtools.

Alternatively, you could just use a bunch of independent React Contexts, but that becomes unmanageable quickly especially if the Contexts are interdependent.

> Redux doesn't address these problems specifically, but I'd be curious to > understand why you think redux is of particular value for them.

The action/reducer model is a very natural way of modeling it. The business logic and data fetching layer is completely disjoint from the actual data store. We can simply describe what happened -- hey, we tried to post this data, this request succeeded, but this one failed and here's the error message -- and then let the reducers decide how that updates their state, if at all. It makes it much easier to refactor code and add new features, especially when they can just hook into existing actions.

Even if I didn't use Redux -- and to be honest I don't _love_ the API sometimes -- I would follow the Redux patterns. When done well it's a really seamless way of managing data that would otherwise be a lot of ugly business logic spaghetti.

> have mentored about two dozen developers on react and redux projects over > the past three or so years, I've learned this lesson the hard way.

If you're mentoring novice developers I don't doubt the apps they were working on didn't necessitate Redux. It's a powerful tool but it comes as a price, which is why as much as I like it I avoid recommending it to people (especially junior developers) unless they have a really good case for it.</comment></comment></comment></comment></comment></comment>


Google Brain Residency Program – 7 months in and looking ahead - <AUTHOR> https://research.googleblog.com/2017/01/google-brain-residency-program-7-months_5.html <comment><USER2> One of the things I like about the residency program, and google brain in general, is the openness of the research environment.

For example, it is easy for us to release open source code related our research, and in fact we are even encouraged to do so.

Some of us even continue to write personal blogs about machine learning research work done in the program.

In addition to open source projects such as tensorflow, people on the team also contribute and develop other open source libraries such as pybullet, rather than using proprietary, closed-source physics libraries.

<comment><USER3> Hey long time lurker and first time commenter here. May I ask if you could ping you for a few tips on my application. Right now I am finishing up a master's in robotics (mix of computer science and electrical engineering) at an Ivy league university (also did my undergrad here). I have previous research experience implementing (from scratch) and training convolutional neural nets. Right now I'm doing researching in natural language processing but not with RNNs.

This program sounds very competitive and I would love to get in, so any help is greatly appreciated!

</comment></comment><comment><USER4> Summary: Google Brain team hired a bunch of 1-year residents to do research with them. They've published 21 papers already and are loving it. Apply for next year here: g.co/brainresidency

<comment><USER5> A resident sounds very much like a post doc in the academic world.

<comment><USER6> This made me wonder how well they pay, but there is no mention of money anywhere, which maybe makes it _more_ academic than a post-doc :o.

application page:

[https://www.google.com/about/careers/jobs#!t=jo&jid=/google/...](https://www.google.com/about/careers/jobs#!t=jo&jid=/google/the- google-brain-residency-2017-program-1600-amphitheatre-pkwy-mountain-view- ca-159360005&)

<comment><USER7> They came to do a recruitment talk at my university. Per the spokesperson, they pay exactly the same as any other introductory job at google (so a hell of a lot more than academia).

</comment></comment></comment></comment><comment><USER8> Hi there! I'm Cinjon, a current resident in the Google Brain Residency. Feel free to ask any Qs and I'll answer them.

<comment><USER9> What does Google look for in applicants for this program? I have an undergraduate pure math degree and an undergraduate publication in mathematics.

My aim is to complete a PhD in CS. I'm currently taking CS coursework before I apply to programs (making up the difference from my math degree). My goal is to do research in machine learning and this program piques my interest. Wonder if someone like myself would qualify... looks potentially tailored/or preferred for those already in PhD programs.

<comment><USER8> I think that's a great background for the program and matches a bunch of the current residents. You should definitely apply. I suspect it will only make your later PhD experience better.

<comment><USER8> You should just apply. The people you're trying to impress are researchers and engineers, and they have a long history evaluating folks who have proven their merit outside of academia.

</comment></comment></comment></comment><comment><USER10> For the residents that quit jobs in industry to do this program, what's next for them? How many residents are converting to permanent employees?

<comment><USER8> The current group doesn't end until at least June and so, except for those who just applied to grad schools, we're all continuing to do more awesome research here rather than starting to solidify what comes next.

That being said, this is an unparalleled experience in the field and a phenomenal road to travel regardless of what we decide to do afterward.

<comment><USER10> But as someone who has industry experience, what are the advantages of applying for the residency program over a normal perm position within Google Brain? The Residency program allows you to focus more on research than engineering I suppose?

</comment></comment></comment><comment><USER11> This really makes me think Google is in some aspects the Xerox PARC labs of our generation... is any other company doing this kind of research investment?

<comment><USER12> Volkswagen, Samsung, Intel and Microsoft[1] all spend more on R&D than Google does[2] and put that funding into a wide variety of areas just as Google does.

There's also non-profit research think tanks like Battelle[3]

[1] [https://www.microsoft.com/en-us/research](https://www.microsoft.com/en- us/research)

[2] [http://web.archive.org/web/20160329190202/http://www.strateg...](http://web.archive.org/web/20160329190202/http://www.strategyand.pwc.com/global/home/what- we-think/innovation1000/top-innovators-spenders)

[3] [http://www.battelle.org/](http://www.battelle.org/)

<comment><USER13> Yeah, but if they have results like google they really manage to keep them secret.

<comment><USER14> MS research has historically been fantastic in computer vision.

</comment></comment></comment></comment><comment><USER15> _The wide array of topics studied by residents reflects the diversity of the residents themselves — some come to the program as new graduates with degrees ranging from BAs to Ph.Ds in computer science to physics and mathematics to biology and neuroscience, while other residents come with years of industry experience under their belts_

</comment><comment><USER16> "Brain residents will spend the first two weeks of the program going through the Google Orientation sessions interlaced with introductory deep learning classes"

It would be great if, Google can make these two week introductory courses available for everyone.

<comment><USER8> The wonderful Chris Olah teaches this, and in some ways he is by making them available through distill.pub. Check it out!

</comment></comment><comment><USER17> Why aren't any of these geniuses working on AGI? Such as applying some of these NN advancements to agents in diverse 3d virtual environments attempting varied/gradually increasingly complex tasks and learning based on low-level (grounded) sensory inputs?

<comment><USER8> They are. The pace of research is not limited to six months.

<comment><USER18> I really want to work on this!

</comment></comment></comment><comment><USER19> Thanks for taking time to answer questions. Can you please elaborate a little about the interviewing process?

</comment><comment><USER20> Wonder how research this is, what if people are looking for more engineering oriented experience?

<comment><USER21> If you are looking for an engineering oriented experience you should apply for a full time Software Engineer or Intern position.

<comment><USER20> Already a fulltime Engineer myself, I guess what I am looking at can be more phrased as applied machine learning, to solve production related problems. This is somewhat different than a regular engineering role though.

<comment><USER22> We have a few programs for this. As I mentioned above, the ML ninjas program is like an internal engineering nfocused residency for existing SWEs. There's also a huge amount of internal training courses to get up to speed on machine learning. There are, however, options for existing employees. (step 1: apply for job.)</comment></comment></comment></comment>