Ask HN: What are you learning in 2019? - <AUTHOR> Feeling a little too comfortable where I'm at now.  In the last couple years I had some side projects in distributed systems.
Those were fun, learned a new language, came to the conclusion that Go is overhyped and immature and helped me appreciate that Java ain't that bad after all.  Feel like the project did help me be a better developer, understand load balancing, databases, storage systems etc better.
What new tech have y'all learned in the past 6 months - 1yr that you found to have made you a better developer? <comment><USER3> 1\. TypeScript - I have had remarkable experience TS on frontend. Along with react hooks. Turns ES into a powerhouse.

2\. GraphQL - Typed, structured API.

3\. [https://en.wikipedia.org/wiki/Attachment_theory](https://en.wikipedia.org/wiki/Attachment_theory): A very powerful tool to explain human behavior. It can explain individual personal interactions, personal and professional relationships, family systems and many bigger picture things.

4\. How to build desktops: Build times are way way faster on desktop CPUs. More control over motherboard / getting faster IO, further improving buildtimes. More upgradeable, things can be switched out, whereas with laptops everything is soldered together.

5\. Language practice: Started tapes on Polish / Ukrainian. Restarting Chinese soon.

6\. Basic fitness things / more exercises

<comment> tom-jh Seconding TypeScript. If you are a js dev looking to pick up something new, just rename a .js file to .ts, open it in vscode, watch the magic. It will, I think, make you a better js dev.

<comment><USER4> Java dev you mean ;) I dont see how types make you a better dev, its like saying automated dictionary in input text fields make you a better speller. It just makes you a lazy speller.

<comment><USER5> it makes you think about your code in a more structural way where composability and low coupling start playing a fundamental role

<comment><USER4> Can you link to a reference where this is explained more? i am genuinely interested.

</comment></comment></comment></comment></comment><comment><USER6> I'm a software engineer who has until now mostly worked on web applications (backend and frontend). I have recently been learning Unity3D which has been immensely satisfying. The breadth and depth of skills needed to tackle projects in this field makes for some really interesting work.

I am currently awaiting approval to sell an editor plugin on the Unity store which I spent some free time working on as a side project. In game level design, most artists make use of 'modular' assets to some extent. These are small sections of a structure e.g. a corner wall section or a roof section, which can be combined together to make endless variations on a building style. The plugin I made allows you to specify 'sockets' on each modular asset, including a type and compatibility system, then it handles automatic snapping together of assets in the editor. This speeds up a assembly of modular assets significantly. The alternative, old fashioned way of doing this is 'vertex snapping' which is tedious and time consuming.

Video here: [https://youtu.be/MvYTbIU1d-c](https://youtu.be/MvYTbIU1d-c)

<comment><USER7> Is there a gradual path on learning Unity ? I mean, what is it ? A visual editor of 3D worlds, but not Blender / 3D Max, together with code editor and C# ?

It looks more like Adobe/Macromedia Flash as IDE, used to like that very much back in the days, till flash died due to plugin need / proprietary / security.

Would still prefer to ship an app in a single file, that progressively streams, just as SWF used to do. Now, in the web area, all is utter crap, one billion files to download, CDNs, fallbacks, signatures.... argh!

Heck, would choose VB or Delphi as IDE for building apps in no time against all this React / Angular / WebComponents tech salad with no substance and ephemeral lifespan.

I am still able to compile pascal code from 1997 in Lazarus / FPC.

<comment><USER8> The closest analogy would be the Flash IDE. Art (3D, 2D, images) is made outside. So is any coding. It integrates nicely with visual studio and Blender (and Maya and Photoshop and the like) so the process is fairly seamless. For example, debugging works.

Yet it produces native apps as well as WebGL.

An infinity of tutorials exist in as many qualities so learning resources of every level are hyper abundant from gradual to accelerated. A passable 2D app is probably possible in a few days starting from zero knowledge. But a impressive 3D game will take mastery of quite a range of its abilities and probably require a team.

Since it is not dependent on a proprietary player, it probably has more staying power than Macromedia/Flash but it does have competition from Unreal which I imagine is a viable alternative.

<comment><USER9> I built and published this 2D app in Unity with only prior web experience in a weekend: [https://youtu.be/NTc6pf6OrI4](https://youtu.be/NTc6pf6OrI4)

Haven't touched Unity since... even though I'd love to make games. I'm partly afraid of future maintainability of my projects, but there is a potential future where 3D engines converge on a standard... maybe never.

</comment></comment></comment></comment><comment><USER10> Outside of Tech, Japanese.

Really love watching Anime in my down time. In the past I have watched well over 100+ series in Dub. Recently I was frustrated waiting for Dub for some later series and newer ones.

Which lead me to watch Subs and I really dislike reading the text, especially when two characters are talking you have text on the top and bottom of the screen! Too much to read at once.

Finally many times there is hiragana, katakana and kanji written for effects or spec sheets and many times it's not translated. I felt like I was missing out on something.

So decided to learn the language. I'm having a blast learning it.

With tech, absolutely nothing. Too busy making stuff. That said, waiting for Vue 3 to launch and then get into learning all the new things with that and seeing what benefits can be brought to existing codebases. Can't wait really.

<comment><USER11> Very cool. I've been wanting to learn a bit more Japanese for a long time now, too. What resources are you using to learn?

<comment><USER10> Take a look at my comments, 3rd post down will tell you what I have.

Also since I can't edit my original post. There's also:

[7]: [https://www.reddit.com/r/LearnJapanese/comments/5x6twj/tae_k...](https://www.reddit.com/r/LearnJapanese/comments/5x6twj/tae_kims_guide_to_japanese_grammar_video_series/)

</comment></comment></comment><comment><USER12> Right now I'm working on Z80 assembly language, in support of my ambition to build a simple 8-bit computer from the CPU up.

Other than that, I've spent a lot of time on Abductive Inference this year, since I'm on the hook to do a talk on the subject at All Things Open in October.

I've also been messing with OpenCV a bit lately.

Finally, a lot of low level electronics stuff. Revisiting my hobby of building and experimenting with simple circuits and what-not. As part of that, I want to learn KiCAD eventually, so I can design PCB's. This also supports the 8-bit retro-computing interest. A weekend or two ago I built a simple little circuit on a piece of protoboard with a 555 timer and a couple of potentiometers, which implements an adjustable clock generator which will serve as the clock input for the z80 project (at least the early stages when I very explicitly want things going slow so I can see LED's blink with the naked eye, etc.)

</comment><comment><USER13> Emotional Intelligence

Tips from Emotional Intelligence 2.0 [http://redgreenrepeat.com/2019/07/12/tips-i-got-from- emotion...](http://redgreenrepeat.com/2019/07/12/tips-i-got-from-emotional- intelligence-2-0/)

Lessons from company's internal Emotional Intelligence training (from EIExperience.com) [http://redgreenrepeat.com/2019/07/19/debrief-emotional- intel...](http://redgreenrepeat.com/2019/07/19/debrief-emotional- intelligence/)

Biggest win so far: hearing my wife say to me "Sorry I got emotional."

<comment><USER14> Wouldn't your wife apologising for being emotional be a sign that she feels a need to apologise for them? Wouldn't good emotional intelligence be towards making someone feel valid, and expressing themselves (even if they're "emotional"). After they are heard, then you can do whatever rational decisions you want.

Maybe I'm misunderstanding, but having someone else apologise for their emotions doesn't sound like an EQ win to me.

<comment><USER13> Yes - I missed a lot of context with my wife's comment.

Usually, in any heated situation, I would get tense and cause the situation to escalate out of control. After cooling off, I would be apologizing to her for my behavior in the situation.

In our time together (over a decade now) - she never apologized to me for her behavior.

The fact she did twice recently feels like a shock to me because it's so unusual for me.

It's an EQ win in the sense that I didn't lose my cool as usual.

Hope that adds context.

</comment></comment></comment><comment><USER15> I'm surprised there was no mention (yet!) to fast.ai here. I've decided to learn deep learning this year, after many failed tries with other approaches. Their framework (built over PyTorch), their course, and their community around it are simply the best I've found so far. Very much recommend to anyone who knows a bit of coding and wants to learn Deep Learning quickly and pragmatically.

<comment><USER16> Can you describe a bit more on why you've found this more helpful? Any cool hobby projects you've been able to build from this or other applications?

</comment></comment><comment><USER17> Probably an isolated point of view, but I stopped learning "new tech" a long time ago. I have a systems programming job and C/C++ is my bread and butter. The only new thing that I might spend some time on this year is C++14, because our build tools will enable it some time soon.

On the non-tech side, I started learning Tabla (a musical instrument) this year. This is far enough out of my daily activities that I am getting a kick out of the new skills I need to master, especially the dexterity required to play different strokes with each hand while keeping time!

[https://en.wikipedia.org/wiki/Tabla](https://en.wikipedia.org/wiki/Tabla)

<comment><USER18> I wish I was doing systems stuff. The churn involved in web applications is mostly a waste of time and effort.

</comment></comment><comment><USER19> I started to learn machine learning relatively seriously. But I've always had issues with frameworks where the team goes out of their way to be clever rather than straightforward. ML frameworks to me are plagued with that. And I hate python. A lot. Mostly because of white space formatting.

So, I decided to make my own neural net in C#. For fun, it'll never be released. I spent a solid month learning anything and everything I could about how brains work in the animal kingdom. Then I built out a neural net according to what I learned. My cells aren't really similar to most of the conventional types out there. But it does work fairly well with numerical data. If I spent more time, like a solid year instead of spare time over 2 months, I think it could be respectable.

What I really learned from this project was optimization to the extreme. I spent a hell of a lot of time testing different ways to accomplish the same math and pull out as much performance as possible. I'd guess for every hour of code, I spent 4 or 5 hours research, testing and optimizing. Mostly because it's all CPU instead of GPU. I never got into cuda and I never will. It's not like I've never optimized before. The difference now, I spent time finding out if conventional wisdom was correct. Also, I discovered a bunch of methods in C# that I never knew about.

I dont do development anymore for work (and God willing, never will), so this was just a distraction/curiosity project for me. In reality, I wish I took the time early on in my career to do a project like this. Anyone fresh in dev needs to do a 3 to 6 month pure optimization project learning, for themselves, what works and what doesn't. Conventional wisdom really is only the tip of the iceberg.

<comment><USER20> Is this on GitHub? I'd love to take a look since I'm thinking of making my own ml library to learn more about how frameworks like pytorch and tensorflow work

<comment><USER19> Nah. Like I said, it was a distraction project and I don't do dev for work anymore. Honestly, making a basic ML framework is not hard. I'm not the greatest programmer. Hell, I'd barely say I'm even decent. So if I could get something working, just about anyone can.

My recommendation though, it must be kept neat and tidy. 100%. Plus, keep paper notes. It gets complex real fast. Spend your time on good naming conventions and being VERY well organized. Obviously all projects should be that way. But this is one where it's not really a recommendation. It's a flat out must. Don't fall into the trap of "hacking" in something to make it work. Not even once. If something is wrong, fix it completely the moment you notice it. My experience, neural net hacks compound really fast into trouble.

Plus, I had fun with my naming conventions. My hidden layer cell class is called a "centralized understanding neural tracker" with the input cells called "data input command kontroller". As you can tell, I'm not a very mature adult. Pretty sure it wouldn't be appreciated in github.

</comment></comment></comment><comment><USER21> Recently learned a lot about software, theory, process and management in the design, iteration and manufacturing of custom printed circuit boards.

Having climbed that mountain, I'm currently diving in to industrial automation: not software automation, but both off the shelf and custom robotics and factory equipment providing manufacturing 'unit operations' for working with metals and polymers. It's quite impressive how little integration currently exists between products from different vendors. There is a huge opportunity here for a software-world startup. Competing concerns include safety, reliability, problem detection, automated issue resolution, machine servicing, tool longevity, vendor desire for lock-in, supplier desire for lock-in, noise, dust, finish, speed, logistics, HR, scalability, cost, etc.

<comment><USER6> I delved into this exact area in the last startup I was at. I worked pretty extensively with Kuka 6 axis industrial robots and spent a lot of time programming them as well as integrating them with our custom hardware. Totally agree that there is a big opportunity for a unified software layer on top of all this hardware.

The system I ended up building allowed users to monitor the robot from the cloud, including telemetry such as end effector sensors and axis positions, as well as uptime. It also allowed steaming tool paths from the web platform to the robots directly with appropriate safety measures such as manual intervention required to start it. Would love to generalise this sort of thing and create a turnkey solution that allowed people to focus on solving their actual robotics problems, not spend all their time glueing together disparate components.

<comment><USER21> Sounds interesting, although single vendor is much easier than multi-vendor, especially when you throw in parallel purchasing decisions on short timelines and both execute and receive sales and tech support in Chinese...

A generalized solution necessarily has a strong spatial component. Most vendor motion planning applications seem to be either custom and cell/unit-operation specific or are expensive specialist general applications with high complexity that often exist as plugins to CAM tools like SolidWorks.

I don't have the time and resources to acquire and delve in to those, so my approach has been to accept the fact and go ghetto with cheap local hardware that comes without motion planning or integration support, observe existing industry processes, and attempt to self-build iteratively. Luckily I've already built a team to produce custom robotics cheaply and quickly and recently added an experienced production manager from the automotive sector, so we have an advantage in this space.

</comment></comment></comment><comment><USER7> Using OSX on a laptop, Linux at work and Windows while playing. Tempted switching back to Windows now because of WSL.

Using gstreamer, creating gstreamer custom filters, performing graph changes on the fly. Awesome and a joy.

WebAssembly as target(compiling C stuff with emscripten and then enjoying it in the browser).

Playing Stracraft II, high impact of rapid decisions, dealing with complexity as some kind of reflex. Started one year ago, never waste more than 15-20 minutes. I am more focused at work, keeping myself in the zone for longer periods.

Not necessary tech, but being more tolerant towards people in industry not driven by passion, but by salary and day to day life chores.

<comment><USER22> What would you say are your biggest takeaways from or pieces of advice to learning gstreamer? I just started building dynamic pipelines and it's been quite the new experience.

</comment></comment><comment><USER23> I'm kind of cheating with this answer because it's not a specific piece of tech, but the thing that I'm really focused on learning right now is how to build out my business by hiring developers & learning how to properly manage them as they help contribute to some of my company's projects.

Most of my development work has been solo, with occasional one-off help from contractors. But the number and scope of my projects has been growing and I've been struggling to keep up, so I'm now going through my first round of finding people to hire, designing a fair & useful interview process, and figuring out the best way to break down my current projects so that it's minimally painful for a new developer to ramp up on them.

This process has also forced me to actually start looking for a legitimate source of funding for my business, besides my own savings. I've been trying to learn this side of things, but it's been a real struggle -- I've definitely been living in the bubble of focusing on my product without thinking about the business side of things for too long, and I'm finally making the leap in terms of taking the business side of things seriously.

Any words of encouragement or advice are greatly appreciated :)

<comment><USER24> A few things: Make sure you hire developers that fit the business culture you are trying to establish and understand the "why" of your company. This is worth a read: [https://blog.samaltman.com/how-to- hire](https://blog.samaltman.com/how-to-hire)

You don't have to have overly strict rule about hours, leave, documentation, etc. but make sure it is very clear to your developers what they are expected to do, and have them evaluate their own performance (obviously with your input) every few months.

Criticise in private, complement in public.

Choose your customers wisely. You make a lot more profit when you start saying no to the wrong customers. (An easy way to say no is just to charge a lot, like 10 times more, than you would normally charge for a certain job)

Don't be afraid to make mistakes, well rather: try not to make mistakes, but expect them to happen occasionally and when they do, don't beat yourself up about it - recognise the mistake, try learn from it, and move on. It might also be an opportunity to impress your customers, by turning a bad outcome into something positive.

Make sure you set things up in such a way that can get some downtime without your company falling apart.

Good luck!

<comment><USER23> Thank you for the thoughtful reply -- I really enjoyed the article, and several of the points you mention are already resonating with me, even at this early stage in the process!

</comment></comment></comment><comment><USER25> Music producing with LMMS, mostly wanting to make jungle dnb sounding stuff

I've installed FL studio a few times in the past but didn't get really far. This time I've decided, let's actually gain some understanding of theory and tools (like synths: [https://youtu.be/atvtBE6t48M](https://youtu.be/atvtBE6t48M)) and make a little something just for fun.

I'm using LMMS because now I'm on linux and don't want to deal with wine and FL studio. LMMS is actually pretty good, and has a good selection of tutorials on youtube

<comment><USER26> This is something I've been doing a bit, but I'm more interested in music composition, for piano or symphony or similar. Musescore[1] is an amazing FOSS tool for interactively creating sheet music. It's like a WYSIWYG sheet music editor, with a virtual keyboard, playback support, and very basic mixing. I have a little background with piano (childhood) and trombone (high school), so it's been much easier for me personally to create new music by manipulating a traditional staff in Musescore than with the grid view in FL Studio or LMMS.

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

</comment></comment><comment><USER27> Clojure. Started with "Getting Clojure" book and can't recommend it enough. Written in a clear and practical style.

</comment><comment><USER28> I have had the joy of learning Clojure this year! I am by no means an expert, but I love the mental paradigm shift I've had as a developer.

I am about to quit my current Full Stack job and spend a few months exploring the wild and see if I can strike out on my own with consulting/SaaS stuff. I only have a year of professional experience under my belt, but I'm hoping to use the next couple of work-free months as a retreat to learn a lot of things and pivot my development career. If anyone has advice on how to move into consulting, I'm all ears!

</comment><comment><USER29> In the last few months, one really fun and educational side project has been creating/designing my own programming language.

It started by accident, by taking apart an existing mathematical expression evaluator, to learn how it works. This led to a deeper understanding of lexer/parser/interpreter, (pre/in/post)fix notations, stack machines..

Once I realized that what I was looking at was a kind of "virtual machine", I was hooked and continued by adding language features like variables, arrays, objects/dictionaries, functions.

The basics are now fairly complete, but the language doesn't "do anything" yet - it's in its own small isolated universe. Next I'm imagining how it will safely interface with the outside world - networking, file system, database, vector graphics, sounds.. What I want is something like a cross between BASIC, Lisp, and Hypercard.

Anyway, still not sure how practical it's going to be, but it's been a wonderful learning experience. It led me down through the history of computer science to re/learn the basics, making numerous discoveries of things I didn't know, getting a better overview of what languages exist(ed), what I like (or not) about their syntax or approaches to various aspects of programming. Creating this little hobby language has definitely helped me grow as a programmer.

\---

As for a non-tech related subject, studying music theory is endlessly fun and thought-provoking. It also comes down to creating one's own system/language.

<comment><USER30> Can you please recommend any resources for studying music theory ?

<comment><USER29> This might depend on your personal preference and approach, but I like books with high information density, with pieces that I can chew on for a long time - even if much of it is beyond my understanding at the beginning (or even at the end). Here are some of my favorites:

The Jazz Theory Book (Mark Levine)

Huge series of play-along books by Jamey Aebersold

The Geometry of Musical Rhythm (Godfried Toussaint)

Harmony (Walter Piston)

A Geometry of Music - Harmony and Counterpoint in the Extended Common Practice (Dmitri Tymoczko)

Lydian Chromatic Concept of Tonal Organization (George Russell)

Augmented Scale Theory (Javier Arau)

</comment></comment></comment><comment><USER31> Tech-related I've been learning Postgres recently. Postgres had some features that MySQL lacked that I wanted to use in some projects. I didn't initially expect it, but in addition to now knowing basic Postgres, it has improved my generic SQL knowledge and even my skill with MySQL. Always helpful to increase the ability to look at a problem from different perspectives.

Non-Tech related I've been (trying) to learn the guitar. I think music is a great counterpoint to coding. I've been enjoying Coursera/Berklee's Guitar for Beginners [0].

Which is a great segue to a shameless plug. I mine HN for comments that mention online courses and rank them over various timeframes, including the last year [1]. Oddly, it's how I found the Guitar course, though obviously most recommended courses are tech related. It's a good resource for finding interesting courses if that is your style of learning.

[0]: [https://yahnd.com/academy/r/coursera.org/learn/guitar/](https://yahnd.com/academy/r/coursera.org/learn/guitar/) [1]: [https://yahnd.com/academy/?t=year](https://yahnd.com/academy/?t=year)

</comment><comment><USER32> After a decade of wanting to learn to code while life got in the way, I'm actually doing more coding (mostly CSS styling for websites I run) and laying the groundwork for eventually learning _a real programming language._

In the spring, a developer from HN talked to me and recommended a free course and I also applied to an online coding school offering free tuition for the summer. In the process of applying, I learned my computer doesn't really have enough RAM.

I haven't been able to spare the $40 or so it would take to upgrade it. I've been working more and moved to a larger apartment to improve my working conditions. (I'm still in an SRO, but now I have a private bath and a George Foreman grill.) I hope to eventually get a laptop to further improve my productivity.

Between my medical condition and extreme poverty, getting anything done takes forever. But I'm actually cautiously optimistic and excited to be working towards goals instead of spending all my time putting out the endless fires of my shitastic life.

I also set up a blog to help me gather learning resources in one place so I can find them again when I can get all my ducks in a row and have the physical arrangements and ability to set time aside to actually learn to program.

<comment><USER33> You mentioned you were working in css. Here are some fun resources [https://flexboxfroggy.com/](https://flexboxfroggy.com/) [https://flukeout.github.io/](https://flukeout.github.io/)

<comment><USER32> Thanks.

I've found sample code from Code Pen useful. I like this CSS blockquote, though I haven't found a use for it per se:

[https://codepen.io/JacobLett/pen/jZYENy?page=6](https://codepen.io/JacobLett/pen/jZYENy?page=6)

I actually did a couple of home study courses in HTML and CSS years ago. One was a set of CDs, a Christmas gift from a Canadian friend, the other a book I purchased. I used to hand code my websites, but I never got any content up. Maintaining the back end took too much time. Then I migrated to Word Press. Then I migrated to BlogSpot. I produce a lot more content these days.

</comment></comment></comment><comment><USER34> I've picked up Kubernetes as a topic of learning this year. Now that I've had a few months of deeply focusing on it, including migrating Apache Spark jobs from YARN to K8s, I'm changing my focus. My focus from now until the end of the year is going to be focused on Site Reliability Engineering. From incident management to logging and monitoring. I think those skills will really help me in the future, regardless of the current technology hype.

</comment><comment><USER35> Woodworking, I have completed a few projects so far including a work bench. I found it as fulfilling as writing software, a good hobby to develop without burning myself out with my software day job.

<comment><USER36> That sounds fascinating, how did you get started?

</comment></comment><comment><USER37> I've spent this year mostly on Go. I think I'm in a maybe good enough spot to be employable with it? Which was probably my goal all along.

Through Go, though, I've been feeling like picking up a language with a more advanced type system. Usually when I have that feeling I get trapped in analysis paralysis and just never pick anything up. I've been considering just hard-committing to Java/the JVM and taking it as it is. My experience with Java was from college/my first job after graduating (horrible J2EE fintech mess), but it sounds like more modern Java is pretty neat? Who knows.

<comment> tom-jh Take a look at Kotlin. We are building our enterprise products with it. You get all the benefits of Java (stability, maturity) without the bad parts (boilerplate, boredom).

We just hired a Kotlin person (really a Java guy who refreshed his Kotlin over the weekend) for this, and we may be hiring more.

I suspect more companies will start looking at Kotlin in the next 2-3 years, especially for green field projects.

<comment><USER37> The concern I have with JVM languages is that employers will have a constant temptation to just fall back into Java instead of actually committing to the language they've chosen. From what I understand, Kontlin/Scala/Clojure all have relatively easy Java-interop, so it smells like after a while non-Java projects could just become Java projects?

I have heard lots about Kotlin though, and it sounds like most devs that've touched it are huge fans.

<comment> tom-jh Scala and Clojure are a bit of a leap for a Java dev, which may come with some cost. I don't get that feeling with Kotlin - you can kind of slip into it, it's a very easy transition, and then you don't want to go back.

Sure, Java interop will make some code parts look a lot more like Java then like Kotlin, but I can't personally imagine that a team would decide to switch back to Java-only after using Kotlin for a while. Interested to be proven wrong if someone has seen that happen.

</comment></comment></comment></comment><comment><USER38> Haskell. A couple very solid books for Haskell came out in 2019 -- Get Programming with Haskell by Will Kurt, and Practical Haskell by Alejandro Serrano Mena -- and I was lucky enough to find a Functional Programming Meetup group in my area with some guys who write Haskell code every day.

Currently falling, albeit very slowly, down the rabbit hole of FP -> category theory -> HoTT.

<comment><USER39> Mind sharing books that got you started? I've been looking into getting started with Haskell myself.

<comment><USER40> Can you help me understand which kind of projects use Haskell language?

Do we have many long term jobs for Haskell developers?

<comment> a-saleh So, I have recently been at Zurihac, attended by ~500 people.

From what I have seen, there have been roughly 4 groups:

* people running their verified-contracts on blockchain strartups with haskell stack

* people interested in GHC as a compiler (i.e. developing new extensions for their phd theses)

* people doing consulting projects

* people running their company on haskell because they like the stack

Some projects were really interesting, like a a haskell-inspired language that is compiled to VHDL, or various use-cases for Dhall (typesafe alternative to i.e. yaml, that supports functions, but isn't turing complete)

I still have on my todo-list "Do at least one PR for Pandoc!" as that is a haskell project that seems to have nice entry-level issues :)

And I know there are teams in FAANG that use haskell, but I don't think they hire too many people :-)

</comment></comment></comment></comment><comment><USER41> Postgresql. I had learned to rely too much on ORMs and diving into SQL proper was like getting hit by gamma rays and turning into the hulk.

Looker. I get asked for reports frequently and with this tool I intend to cut that number down to zero, company wide.

Kubernetes on AWS. Bought a book, learning about it in my spare time.

Graphql with React Apollo for data access. It's pretty sick. First Redux came out, but it's verbosity was too much, I never liked it. Then Mobx came out and it works fine for me, really fun to use. Now Apollo exists and you don't even need a store. Plus it caches stuff. Plus a bunch of other sexy stuff. Very interesting tech.

I read bad feedback/stories for companies and identify trends on what went wrong, and what engineers hated so I can prevent that at Papa as head of engineering.

Drawing. It's the complete opposite of programming and very soothing after a rough day. There is no right or wrong, it just `is`. I look up pictures of manga I like, from Baki or JJBA and draw stuff, then upload it on Tiktok to share in the fandom.

<comment><USER42> > diving into SQL proper was like getting hit by gamma rays and turning into > the hulk.

lol. wait til you start using COPY.

source: DBA.

</comment></comment><comment><USER43> After a 40 year gap, I've started to re-learn assembly language programming via via [https://embedded.fm/blog/ese101](https://embedded.fm/blog/ese101).

Also, last spring I took the basic Electronics 101 class at our local community college ([http://www.ccsf.edu/en/educational-programs/school-and- depar...](http://www.ccsf.edu/en/educational-programs/school-and- departments/school-of-science-and-mathematics/engineering-and- technology/electronics_program.html)) -- Ohms law, intro to RC time constants, transformers, etc. It was just one night a week, so not a huge time commitment (2.5 credit units). This semester: active analog circuits!

Not sure it's made me any better at my Python/SQL day job, but perhaps more methodical.

</comment><comment><USER44> AWS and how to deploy a complete web app with the service bundles (EC2, Elastic storage S3, etc.) It is an amazingly fulfilling experience as a product manager.

<comment><USER45> What resources did you find more useful? Aws's own documentation?

<comment><USER46> not op, but the labs on [https://www.qwiklabs.com/](https://www.qwiklabs.com/) are pretty good and hands on (i am in no way affiliated with them - <USER2> out a good resource you may want to look at)

</comment></comment></comment><comment><USER47> Past 6 months- 1 year for me was a lot about reading about leadership and how to be a better lead. Also played a bit with Rust.

I've started learning clojure a week ago and want to continue in this path of learning / build something cool with it.

</comment><comment><USER48> In tech: Diving deeper into Elixir and Rust.

Outside of tech: Korean! I find it absolutely _fascinating_ to learn.

<comment><USER49> I recall that the origin of Korean is somewhat mysterious, have you come across that?

<comment><USER50> Linguistically it's grammatically about 80% the same as Japanese and if you replace Hangul with Hanja where possible you'll see a tonne of it's vocabulary is from Chinese.

I guess what's mysterious is which of Korean / Japanese influenced which??

Korean has a slightly more complex grammar than Japanese. Not by much but there are some forms in Korean that don't exist in Japanese. But it's remarkable how they are almost identical.

</comment></comment></comment><comment><USER51> I've been slowly working through the exercises in Christian Robert's book The Bayesian Choice. I'm a statistician and my job to help people make educated decisions, so I ought to know a thing or two about decision theory

<comment><USER52> That's a classic. If you want something to follow that up with, take a look at Berger's "Statistical Decision Theory and Bayesian Analysis".

</comment></comment><comment><USER53> I've already done some akka/scala work professionally, and separately, some api development with play/scala, so for a side project of mine I've been working on an idea that requires api endpoints served by an akka cluster backend. Now that I have a few of the required endpoints and a working cluster, I've been working on learning React on the frontend, which is new to me. The next few months will be crazy because I'll be learning how to bring in some async communications between frontend and backend. Not really sure how to start with that on the frontend, but I imagine it'll be sockets or SSE from the backend.

Separately I dabble with Ng's coursera ML course but aside from writing jupyter notebooks with the octave kernel, which I enjoy - latex math equations are so pretty - I find the subject material a little boring. I like graphical structures though so maybe interest will pick up when they get into neural nets.

</comment><comment><USER54> I've started Rust a few months ago, because it sounded interesting and distinct enough so I decided to add it to my tool belt. So far, I've completed a few chapters from the official book.

<comment><USER55> Oof, same, coming from python/Go and having some knowledge of C, I can say I love it.

But I work with C++ developers who are adamantly opposed to taking a jump because rust is harder for them to grok (as they suggest that they have to unlearn patterns).

<comment><USER56> Rust is unstable, so there is no reason to learn it right now. Many revesions, version incompatibility, dependencies from unstable branch in main repository branch. It's absolutely useless for production right now if you don't want to write the whole thing from scratch.

<comment><USER57> Rust the language has been backwards compatible since 2015. We add stuff, but don't remove it.

Many, many companies, including big ones, are using Rust in production. They don't need to re-write things.

</comment></comment></comment></comment><comment><USER18> Learning React and the ecosystem at work and improving my CSS knowledge as I am mainly a backend guy.

On a more interesting note , learning Meditation via "The Mind Illuminated" book. Plus I plan to do a Goenka retreat later in the year (probably after reading a post on here "Vispasanna for Hackers" I think it was titled).

On a side note, I know we are encouraged to keep learning as developers, but being an old schooler (been writing software since 2000) I notice that people often keep learning new stuff instead of getting really good with the tools they already know. Usually the first attempt with a new framework / language isn't really the best code as it is a learning experience. As a result we have a lot of applications written in a less than perfect way. Curious what other peoples opinions are on this.

</comment><comment><USER58> Every time I re-approach or begin a new web application I try to pick up a new tool from the toolbox. Last week was Web Workers. Holy cow they're amazing.

I do a lot of GIS so there's many very cpu intense tasks for analysis.

Instead of trying to break up a problem into lots of small promises as not to block user input, I can just call away to a separate thread to do a ton of blocking work and return the output.

The beauty is wrapping the interface in a promise so I can perceive web workers as being just like Ajax calls: an async data source/sink.

The more broad answer to what I'm learning in 2019: how to use every new project as a playground to learn new technology while not putting the project deliverables or time-line at risk. This is basically about learning how to de- risk and prepare/conceptualize fallback plans. And how not to bite too much off.

</comment><comment><USER59> I picked up python in 2018, and really enjoyed that, so I think I'll be sinking some time into getting my python skills on par with my C# skills.

There aren't many Python jobs around here, but there are some. Not that I'm currently looking, but the next time I am, it would be nice to work with a language I actually like.

</comment><comment><USER60> 1\. Deep Learning. No immediate use for it, but I feel it's an important skill to know.

2\. Powershell (on Linux.) I'm already proficient with the traditional shells, but I want to see if this is overall a better CLI and/or scripting environment than, say, Fish. (This was prompted by the recent post about a similar thing newly implemented in Rust.)

3\. APL, getting back on it after a long time and potentially writing my own compiler and dialect, if I feel inspired.

4\. Consolidating Japanese, mostly the spoken language, because I don't have the time nor will to memorize 1000s of characters. I'm already intermediate level, so at this point I mainly watch movies / shows every day, hoping some of the vocab will stick to my mind.

<comment><USER50> Binge watch Terrace House. Best source of natural, spoken Japanese.

</comment></comment><comment><USER61> Trying to learn 'Everything'. And that's a problem. So learning how to manage learning (Not from the famous course)

..Any resources to help me?

<comment><USER62> I've had this problem off and on. The thing that's helped me lately is looking back at the times I focused and learned one thing. Example: I read a (MS)SQL book nearly 8 years ago, it was well written but not excessively long. I took my time with it. And you know what? It's been relevant ever since, and I've been surprised how frequently I know more off-hand sql knowledge than other devs. I"ve had this experience a few times now, and it always boils down to thinking you need to choose the most relevant, most important thing to learn. You don't. Just choose _a_ thing that is relatively interesting and relatively important, and spend a little time with it. It will last longer and take you further than you realize, and also help you contextualize other things you want to learn. Its not a simple additive -- its exponential. Things in general are more related than people realize, and this is especially true in tech. Most skills you learn will translate better and last longer than people give them credit.

</comment></comment><comment><USER63> Svelte has been my new thing, and I'm trying to be better at writing js tests even though I hate writing them because hubris

<comment><USER64> I picked this up as well after seeing it here a few days ago. I rewrote part of my site to use it from React, and I really like what they've done with the component authoring experience.

</comment></comment><comment><USER65> Finishing up the Introduction to Algorithms course on MIT OpenCourseWare. Interested in many of the WWDC 2019 releases too, but given that there's over 100 videos I've focused on SwiftUI.

</comment><comment><USER66> Most of my time this year has been with browser streaming, async Rust, and vanilla JS. I think the last has been the most useful. I highly recommend really learning the DOM. Implement your own client-side routing. Make a view framework. See if you can make an app without a bundler/build step. Or even without npm at all. It's fun.

In general, I think it's very valuable to have a deep understanding of your platform, even if you don't need all that information on the daily.

</comment><comment><USER67> 1\. Elixir/Erlang 2\. Binary exploitation/Reverse engineering 3\. Danish 4\. Miniature painting (brush and airbrush)

Things that haven't made me a better developer: Kubernetes, GCP.

</comment><comment><USER68> Physics — always wanted to understand how quantum mechanics works. I have a masters degree in CS, but it included almost no modern physics. After a year of fiddling with the Griffiths book and spending about $500 on other textbooks (less useful, though entertaining), I am definitely no expert, but I am starting to learn some things.

Erlang — because I love the actor model, but I only tried it with Scala/Akka. Time to try the original.

</comment><comment><USER20> Machine learning, kaggle competitions, trying out GPT2 and BERT, learnt c++, thinking of learning Julia and rust, started a community for teens interested in coding and machine learning (reddit.com/r/teensintech)

Trying to start your own ml research project. It's pretty hard especially when you don't have any formal credentials or training.

Is there anyone else here who's been doing ml research without a degree in ml?

</comment><comment><USER69> I'm not sure this relates entirely to tech but (to me at-least) it's a way of thinking better:

Algorithms to live by [0] - I am an engineer by training and product manager. I am always on the lookout to improve my knowledge of computer science. This book helps tremendously by showing a way to _look_ at problems. Certainly helps to have a better mental toolkit.

Inner Engineering - A Yogi's guide to joy [1] . Has really helped me get perspective on the issues that matter and how to lead a happier life.

I have been reading up on Physics (Richard Feynmann's books, obviously) and intend to continue this in the quest for better thinking. I do wish I had done this earlier in my life :-( but never too late!

[0][https://www.amazon.in/Algorithms-Live-Computer-Science- Decis...](https://www.amazon.in/Algorithms-Live-Computer-Science-Decisions- ebook/dp/B015DLA0LE/)

[1] [https://www.amazon.in/dp/B06XXN19Y9/](https://www.amazon.in/dp/B06XXN19Y9/)

</comment><comment><USER70> Started a newsletter on data science and machine learning, which basically curates stuff I think are HN worthy, sifts through all the "how to be a data scientist without understanding math" and "this manga does not exist" posts for the things that are really insightful. [https://altdeep.substack.com/](https://altdeep.substack.com/)

Japanese. Learned Chinese in early twenties then started with Japanese until life happened. Picked it up again, and trying to learn it as a third language with my wife. Making progress.

Reinforcement learning, but not the deep RL stuff as much as the fundamentals and theory. Really enjoying working through [https://agentmodels.org/](https://agentmodels.org/)

Rust, with a colleague, but mostly because I like my colleague.

Will soon take a class on Racket with my wife.

</comment><comment><USER71> microservices,kafka and Clojure/FP. I just went over the microservices part and it's already boring. but Clojure as a language interests me but I never really developed on JVM. so I am skeptic about that. JVM out of the way I think clojure could be a good replacement for node/php/golang for server-side.

<comment><USER49> So I've been looking into microservices communicating with a persistent message broker like Kafka and what I'm still not sure about is the frotnend - that is, I know that the FE will communicate over https with an API gateway service (so REST or GraphQL) but if the FE needs a resource, how should the API gateway handle the request back to the browser? The only pattern I've seen so far is to issue a 201 CREATED for e.g. creating a user. Have you come across any other patterns for this?

<comment><USER71> I am not sure if I understood you correctly answer your question. are you asking for resource management (file uploads, etc...) in MS?

</comment></comment></comment><comment> non-entity I've started doing linux / BSD kernel development very lightly. It all started because my supposedly supported network card wasn't working in FreeBSD. I still dont know shit, and it seems impossible to keep up, but its the most fun I've had programming in years.

</comment><comment><USER72> 1\. Rust (again) to a high level of proficiency this time

2\. Bringing my modern web stack skills up from indifference to high proficiency

3\. Math

4\. Houdini + Redshift

5\. Compositing software (ideally Nuke but it's looking like AE or Fusion)

6\. UE4, basic proficiency

7\. Managing things like screenplays and design docs on a continuous basis, rather than just having these things exist in my head for years on end.

8\. Any interesting medical/biology material I can get my hands on. I'm seemingly way more passionate about biomedical stuff than I am software these days.

9\. Cooking things that aren't just nutritious but actually taste good to other people.

10\. Effective time management for all of this.

The gist of it is pretty much find a bunch of things I enjoy and bounce between them to maximize efficiency, while maintaining some sort of ongoing goal system/structure to manage or otherwise guide myself through it all.

</comment><comment><USER73> All the topics I want to learn are in my Trello board.

[https://trello.com/b/cu32qF3q](https://trello.com/b/cu32qF3q)

The cards that I assigned to myself I am learning now.

Trello is great as by pressing Q I can only see the cards I have assigned to myself and focus in on learning them.

<comment><USER74> How do you consider a card 'done'?

I've experimented with Trello in the past for this, but I always just ended up with a massive list on the board and spent an unreasonable amount of time antagonising over when cards should be considered finished.

Might be easy for "learn how to do X", but more difficult for broad topics like "learn rust"

<comment><USER73> Once I build out [https://github.com/learn-anything/learn- anything](https://github.com/learn-anything/learn-anything)

I will move this list there as it will have much better integration as LA will have a knowledge graph in which I can simply mark topics as learned to learn and mark my proficiency in them.

For now, I just mark topics as learned when I feel comfortable in the topic.

</comment></comment></comment><comment><USER75> Data Science with a MicroMasters (EdX) by UCSD. I've completed two of four courses: Python for Data Science and Probability and Statistics. The Python course was good and doable while working full time. I've had quite some experience with Python to get into it pretty easy, but learned a lot.

The Probability and Statistics course was hard for me and a big step outside my comfort zone. I cursed it a lot but I'm glad I completed it. I don't think I would have gone through with it if I hadn't payed for the certificate.

Next are Machine Learning Fundamentals, last but not least Big Data Analytics Using Spark.

I'm not really sure it made me a better (web) developer, but the process of learning keeps my brain fresh. Plus, it opens up a whole new and exciting world for me.

</comment><comment><USER76> Business and marketing. I'm basically running my own business anyway. It's about time I got better at it.

OS's. I'd like to build my own, but I've been a web developer for 15 years. It's going to be an uphill battle. I'm halfway through _Learn C the Hard Way_.

<comment><USER77> Eh. That's where I stopped on Learn C the Hard Way too. Hopefully I can find some diligence in myself to finish it -- the webserver less looks the most interesting to me.

<comment><USER76> I'm into the data structures chapters now. Pointers aren't nearly as difficult as I remember them being in college.

I'm looking forward to the webserver too.

</comment></comment></comment><comment><USER78> Tech-related: 1\. TypeScript 2\. GraphQL 3\. Rust 4\. AWS (serverless-related) 5\. Functional programming in general

Less-tech: 1\. Lean Startup 2\. Reading "Cultivating communities of practice" by Etienne Wenger 3\. Trying to understand the rentability of real estate investments

</comment><comment><USER79> Learning Piano, 3d design & printing. Improving my inline skating.

And a bunch of computer stuff too, but hell, for the past 33 years of working in this game, I've learned a bunch of new computer stuff each year. Sooner or later it all tastes like chicken.

</comment><comment><USER80> Learning deep dive into linux networking [[https://sysplay.in/index.php?pagefile=lnd_weekend_workshop](https://sysplay.in/index.php?pagefile=lnd_weekend_workshop)] /system programming[[https://sysplay.in/index.php?pagefile=lsp_online_training](https://sysplay.in/index.php?pagefile=lsp_online_training)] / algo-DS etc. Mostly through online courses in second half of 2019. Wasn't that enthused about them previously, but having attended one, those are not bad and have lot of flexibility in terms of schedule and not having to travel.

<comment><USER81> Hey there, a guy on the same path here. Care to be connected through twitter / fb ?

</comment></comment><comment> the-alchemist Clojure(Script)!

I've been learning a little Clojure and using it for work, and it's been kind of an eye-opener. (I've been mostly a Java developer for 15 years.)

And the idea of using the same clean code for the frontend is super attractive.

</comment><comment><USER82> Trying to learn more mathematics, as that seems to enrich so many things, including but not limited to programming. Currently reading "Introduction to Graph Theory" by Richard J. Trudeau.

Also learning a bit of Phaser.js, since I'd like to make an HTML5 game sometime soonish.

At some point I need to sit down and go through the gauntlet of refreshing all the skills for job interviews, (especially since I've been mostly developing/maintaining software for phone systems the past year and a half and I don't think I want to stick with it). Been putting that off, though.

<comment><USER83> Just refreshed my interview skills with interviewcake.com, Not 100% the only resource to use but it got me over the hurdle of starting.

</comment></comment><comment><USER74> I've been diving into this operating systems course [https://classroom.udacity.com/courses/ud923/](https://classroom.udacity.com/courses/ud923/) in my free time,

It's about 9 years old I think, but it's been very enjoyable

Earlier this year I embarked on a project to help me learn how CPUs work, I ended up implementing simulator for a simple CPU from the "But how do it know?" book - I have a blog post about it if anyone is interested.

Since then I've been dabbling with learning about RISCV, but it's been slow progress.

<comment><USER84> I'm interested in that simulator, it sounds fun!

I started reading 'But How Do It Know' a while back; I never finished it but I can say that it was a very fun read.

I've heard that 'From Nand to Tetris' [0] is also quite a worthwhile read. A quick look shows that it not only has a link to a book [1] but also some freely available notes/lectures as well as some exercises.

[0] - [https://www.nand2tetris.org](https://www.nand2tetris.org)

[1] - [https://mitpress.mit.edu/books/elements-computing- systems](https://mitpress.mit.edu/books/elements-computing-systems)

<comment><USER74> Yeah From NAND to Tetris is probably a better more structured approach, I kind of just went off and did my own thing but I'd imagine it's more fun to get something playing Tetris!

Blog post is here:

[https://medium.com/swlh/i-dont-know-how-cpus-work-so-i- simul...](https://medium.com/swlh/i-dont-know-how-cpus-work-so-i-simulated- one-in-code-bd85f216b49)

non medium link: [https://djhworld.github.io/post/2019/05/21/i-dont-know- how-c...](https://djhworld.github.io/post/2019/05/21/i-dont-know-how-cpus- work-so-i-simulated-one-in-code/)

</comment></comment></comment><comment><USER85> As a software developer that mainly builds internal web applications (frontend and backend) with ReactJS, I've just started looking into improving my code with Typescript. I've seen it being praised far too much to not give it a try myself.

Lately I've also been working on an embedded BLE Mesh project at work writing C, which I found surprisingly fun. Coming from literally zero experience in embedded systems programming, I found it a fun and rewarding challenge.

I've also been very interested in Rust lately, just need to find a project to play with.

</comment><comment><USER86> Arma 3 modding (C++ and their scripting language SQF). I want to remake the original Ghost Recon game (tactical realism) in the game engine. Seeing as it has a lot of the core combat, I just need to tweak it a bit.

<comment><USER87> That sounds insanely cool! Is the Arma 3 modding support better than Arma 2? I bought Arma 2 exclusively for the mods.

<comment><USER86> Yea, the community has progressed a lot more and the documentation (wiki, example files) is quite well done.

</comment></comment></comment><comment><USER88> How to better my mental health while simultaneously figure out how to share some of the knowledge I've obtained over the past few years with others (conferences? blogs? teaching? I don't know. Help!)

<comment><USER32> Blogging is a terrific way to freely share what you know (if money is not a goal here) and hone your ability to effectively communicate it. Keep in mind it doesn't at all have to be limited to writing. "A picture's worth a thousand words." Adding graphics or short videos can tremendously enhance the material.

</comment></comment><comment><USER89> I want to learn to be a better presenter. I want to learn to both do better PowerPoint slides and Visio architectural diagrams especially involving cloud infrastructure and to learn how to communicate with non technical business people.

In the past eight months, I studied React and ElasticSearch but never did any projects at work or on my own so neither went anywhere. However, I did put my first two Node projects in production and did a Fargate (AWS Serverless Docker) proof of concept that I'm trying to find time to put into production. I want to get deeper into Docker.

</comment><comment><USER90> Mostly machine learning. Did the coursera course. Some cognitiveclass.ai related to data analysis and python. Did a couple small projects with ML.Net. My learning has been pretty scattered, and not as focused as it probably could have been, but I think I've gotten a lot out of it. I've also been reading some programmer/development books. This is the first year I've actively pursued learning outside of a structured environment, and it's been a great year for this type of personal growth.

</comment><comment><USER91> "A lot of the best programmers and the most productive programmers I know are writing everything in Clojure and swearing by it, and then just producing ridiculously sophisticated things in a very short time." \- Adrian Cockcroft

[http://blog.cleancoder.com/uncle- bob/2019/08/22/WhyClojure.h...](http://blog.cleancoder.com/uncle- bob/2019/08/22/WhyClojure.html)

I want to learn some Clojure!

</comment><comment><USER92> Blender 2.8. It's been fun so far.

</comment><comment><USER93> I come from a very strong JAVA background, working most of my 20+ years of professional life with various flavours of *NIXes; earlier this year got a job with a company mostly node+dotnet, and an imac desktop. So i have been learning dotnet.core/roslyn stuff, and it works fine so far. Besides, i learnt cannot live without a 4k display anymore...

on the "non tech" side, i decided to learn online as much as i can about digital video filmmaking, as a hobby.

</comment><comment><USER94> As a long-time 3/4-stack developer, learning CSS better.

</comment><comment><USER95> Japanese. After several failed tries, I got the Genki I book and improved a lot. Also pimsleur audios we good. Also have a teacher I Skype to when I need help.

<comment><USER96> If you want few interesting youtube channels (they are not language learning but interesting normal channels):

[https://www.youtube.com/channel/UCvnmumaXaxiPvBDq90YxByQ](https://www.youtube.com/channel/UCvnmumaXaxiPvBDq90YxByQ) \- Really nice metal detector guy

[https://www.youtube.com/channel/UC7RQMyUPzbQerM6rKRGqhvA](https://www.youtube.com/channel/UC7RQMyUPzbQerM6rKRGqhvA) \- Review of toys, mostly beyblade and collectors toy

[https://www.youtube.com/channel/UC4HCI_GJ2ZsueOlqgjApnFw](https://www.youtube.com/channel/UC4HCI_GJ2ZsueOlqgjApnFw) \- weird student

</comment></comment><comment><USER16> Lots of things in the data space - automation, orchestration, testing, quality, completeness, and building a data architecture with the proper kinds of monitors and alarms. Diving into business metrics, separating useful, actionable data from fluff.

As a hobby project, I stopped using Sublime and other text editors. I have been using Vim all of this year and have become more competent with various shortcuts and general navigation.

</comment><comment><USER97> tl;dr: Clojure, Spacemacs, and gardening.

I had similar thoughts about Go. I got excited about it but didn't find that learning it was really that difficult. That's good if you're learning it to quickly use it but I'm looking to expand my mind.

Now I'm learning Clojure. I don't know if I'll ever use it, but learning it (like people always say with Lisp) has been an experience. I'm still working through learning it and I won't lie, it's been challenging. Been having to remap a lot of mental models and re-thinking loops and objects.

I'm also learning Spacemacs. I've been a hardcore Vim user for nearly a decade now. I've tried also learning Emacs but just couldn't get past the C-x and M-x for everything. I know it's a tired punchline, but it's like it was created to be anti-ergonomic. I've been using Spacemacs for just a couple of days and coming from Vim, it's amazing. I'd highly recommend it to anyone that's already very familiar with Vim. It's got a learning curve, but after using for just a couple of days I feel I'm already coming out on the other side of that curve.

In non-tech, I just bought a house and have been learning gardening. Nothing serious and in fact intentionally NOT taking it too seriously and not over- planning. I've already grown my own carrots, peas, radishes, and even some pretty flowers for my wife. It's been incredibly satisfying to make dinner and look at half my plate and say, I grew that.

I've even had some failures but you just stir it into the dirt and keep on.

I know it's not tech, but having a hobby that isn't in front of a screen nor sitting down has been great. I used to just play video games and my body was just not having it anymore.

</comment><comment><USER98> Clickhouse - the speed and cost savings I'm able to get out of it for expensive database queries is some next-level wizardry.

</comment><comment><USER99> I'm half way through my MS via OMSCS. Last class I took was on high performance computer architecture where you intimately learn about Tomosulo's algorithm. I highly recommend the program for lifelong learners.

Otherwise I've been trying to re learn Emacs with the rise of LSP - such that I can do most of my work now in Emacs. I've been using doom-emacs to great success.

<comment><USER100> Are you planning on getting a new job after?

<comment><USER99> No plans. I didn't do it to get a new job, just to learn new stuff.

</comment></comment></comment><comment><USER101> Zero Knowledge Proofs and related cryptography. These will probably be impactful as they mature in the coming years and decades.

<comment><USER102> Do you mind sharing how you got started with ZK Proofs? And in what way do you apply your knowledge?

I tried getting deeper into it using ZoKrates[1] (zkSNARKs) but back then the docker image was broken. [1] [https://github.com/Zokrates/ZoKrates](https://github.com/Zokrates/ZoKrates)

<comment><USER101> I can't think of anything I'd strongly recommend yet, I'm just reading anything and everything at this point. There's tons of info about it, I'm just trying to sort through it all.

</comment></comment></comment><comment><USER103> Learning to play a guitar, and some basic music theory. I wish I had started it earlier, but I guess it is never too late :)

</comment><comment><USER104> Not a dev but I have been learning python more. I did a lot of things in the past with 2.7,now learning 3.x.

That aside,malware analysis. I've tried using Ghidra a bit but I've mostly been learning how to use procmon for dynamic analysis in windows and IDA to unpack and figure out your run of the mill windows malware.

</comment><comment><USER105> Clojure, Hoplon web framework and Datomic.

</comment><comment><USER106> I'm reading a Rachel or Joel post only to realize I've already read it before. And realizing that entrepreneurship is mostly about luck and timing. And that you do not earn money by making a good product, you earn money by buying something then selling it at a higher prize. eg. hustling.

</comment><comment><USER107> Coq proof assistant, and started working through the book Certified Programming with Dependent Types.

</comment><comment><USER108> Not a specific tech, but infosec and CTF competitions, often learning from YouTube videos e.g. [https://old.liveoverflow.com/binary_hacking/index.html](https://old.liveoverflow.com/binary_hacking/index.html)

<comment><USER109> I've been doing a similar thing. It's amazing what you can learn from CTFs. IppSec on YouTube is also a great resource for walkthroughs of HackTheBox VMs.

</comment></comment><comment><USER110> Product design using Human-Centered Design principles and public speaking, obviously learning by practice—I've spent too much time staring at the keyboard in the past two years and this feels both somewhat intimidating and fun.

</comment><comment><USER111> I've been waking up early (6AM) to learn Golang and Clojure. I't has been refreshing and I even fell more productive at work. (I work with Python most of the time).

</comment><comment><USER112> Flutter/Dart, ML with python, general software architecture.

Coming from a career in Android/Java/Kotlin. The new planned skills are to enable completion of projects I have in mind.

</comment><comment><USER113> Angular/Spring simple app .Net Core simple app Kmett's Xuangi. Small Rust/Postgres app for benchmarking against my Django (likely swap over at some point).

</comment><comment><USER114> Analog electronics, working to get past the "wire things together and hope they work" stage and learn how to design circuits from scratch.

Edit: Oh, and Rust as well :)

</comment><comment><USER115> Mathematics. Specifically, best ways to learn and teach the fundamentals of math that helps to rediscover math rather than rely on rote repetition.

</comment><comment><USER116> Quantum machine learning. I completed my phd in quantum information last year, have an assistant prof job, but looking to jump into the quantum computing industry.

<comment><USER117> I'm a novice in both topics, but it has always seemed to me that quantum mechanics and machine learning have a lot of natural alignment, as they both deal in probabilities. Is there anything you recommend for reading up on the subject?

<comment><USER116> You can always start from some online courses. This Coursera course is no longer available I think, but the video lectures are available [https://www.youtube.com/watch?v=Z1uoz_8dLH0&list=PL74Rel4IAs...](https://www.youtube.com/watch?v=Z1uoz_8dLH0&list=PL74Rel4IAsETUwZS_Se_P- fSEyEVQwni7) Great introduction to quantum mechanics and quantum computing.

I am taking this quantum machine learning course these days. [https://courses.edx.org/courses/course-v1:University_of_Toro...](https://courses.edx.org/courses/course-v1:University_of_TorontoX+UTQML101x+2T2019/course/)

</comment></comment></comment><comment><USER102> Tech:

\- how to write a dashboard with React & Redux and a Python backend

\- fast.ai

\- solving various (beginner level) CTF challenges

Non-tech:

\- Sounds lame but it's rather interesting: Risk Assessments and Risk Management

\- nutrition

\- improving my guitar skills

\- meditation

</comment><comment><USER118> Out of curiosity, how did you get started with distributed systems side projects? Do you use e.g. a bunch of Docker containers or cloud VMs?

<comment><AUTHOR> docker-compose is fantastic for playing around with to spin up a bunch of servers with one "docker-compose up" command on my local laptop.

<comment> o-__-o Would you find value in a lab that allowed you to spin up servers like this but at scale (500-1000)

</comment></comment></comment><comment><USER119> This year our project is supposed to go into series. So I'm learning a lot about ISO26262 and safety and what that means in practice.

</comment><comment> o-__-o Business management software, trying to start a startup yet again.

Also, [http://comma.ai](http://comma.ai)

</comment><comment><USER120> Golang and security. Golang is super weird to me compared with Ruby and/or Python. However, I can buy into its benefits.

</comment><comment><USER121> Russian

<comment> duncan-donuts I spent about 9 months 2 years ago learning Swedish. It was really fun and I enjoyed watching Swedish tv shows. I think learning languages just because is pretty rad

<comment><USER99> How did you learn? Immersion?

<comment><USER49> My daughter speaks super well from watching Swedish shows with the app Barnkanalen SVT - just use a VPN with an address in Sweden to access it.

</comment></comment></comment></comment><comment><USER122> Electronics, lighting, sensors, display tech.

<comment><USER123> What are your favorite resources for learning about these things?

<comment><USER122> Having a gun to your head to deliver a working prototype is helpful. And working directly with experts. I'm doing most of this on a pro budget so I can buy all sorts of hardware as needed. Having resources and a defined finished product to strive for really helps you focus.

</comment></comment></comment><comment><USER124> Teaching. This will be my 1st semester as an adjunct at my local community college teaching Project Management 101.

</comment><comment><USER125> Non tech: Spanish

Tech: Python (I am not a programmer by trade today)

Generally just hooked on self development books, I blame Tim Ferriss.

</comment><comment><USER126> Elixir - Because it is awesome

Product Management - Because it is challenging

Security - App, Asset, Container. Because it is a must

<comment><USER127> Did we start to automate our HN comments with AI?

EDIT: OP just added line breaks. Imagine the same post without them.

</comment></comment><comment><USER128> Tech:

\- Computer Science: Having a designer background, I didn't have the opportunity for formal training.

\- React and its ecosystem

\- TypeScript

Non-Tech:

\- Music Theory

\- Synths

</comment><comment><USER129> Invested in learn Go and a little Kotlin. Trying to balance out my JS skills.

</comment><comment><USER130> Sketch comedy writing

</comment><comment><USER131> Rust & Kubernetes

</comment><comment><USER132> Rust, Mithril v2, business, Japanese.

</comment><comment><USER133> Golang for building microservices.

</comment><comment><USER134> Kubernetes, Kafka, Microservices

<comment><USER49> Hey, I've been learning Kafka too and posted this on another sibling comment:

> So I've been looking into microservices communicating with a persistent > message broker like Kafka and what I'm still not sure about is the frotnend > - that is, I know that the FE will communicate over https with an API > gateway service (so REST or GraphQL) but if the FE needs a resource, how > should the API gateway handle the request back to the browser? The only > pattern I've seen so far is to issue a 201 CREATED for e.g. creating a user. > Have you come across any other patterns for this?

<comment><USER135> Most likely the API Gateway speaks HTTP so it's no different than communicating with any other HTTP API. The API Gateway has a number of roles: routing requests to the right backend(s), checking the health of one or more backends, providing a single point of contact to the outside world (reduces the number of systems you have to lock down related to access from the public), holding api documentation, and others.

Think of the API gateway mostly as a router that allows you send requests to many different pieces of software behind it.

As far as patterns for HTTP Status Codes, you should take a look at the RFCs that define them: [https://tools.ietf.org/html/rfc2616#section-10](https://tools.ietf.org/html/rfc2616#section-10)

</comment></comment></comment><comment><USER136> RF engineering and Meditation

</comment><comment><USER137> nand2tetris

<comment><USER138> That's an _excellent_ course/book!

</comment></comment><comment><USER139> k</comment>


A List of Isaac Asimov's Books - <AUTHOR> http://www.asimovonline.com/oldsite/asimov_titles.html <comment><USER2> Ah, Asimov. I still consider him the most important SF writer in history, rivaled only by Phillip K. Dick. It's not that any single one of Asimov's stories stunned me or changed my mind in a profound way. It's more about the cumulative effect of many works combined. He shaped the science-related mindset of at least two generation. The echoes of his writing are still seen everywhere in science fiction, but many people no longer recognize them as such.

It really disturbs me that a lot of people in US consider Asimov "no longer relevant". One, his works aged really well - as long as you don't expect stories about smartphones and cat videos. Two, his works are huge outside of English-speaking countries. In that context they seem to be far more popular than most books that Americans consider "American classics". (Just look at all the references in Anime, for example.) That ought to tell you something.

<comment><USER3> He also wrote a huge amount of non-fiction in which he presented all sorts of science in an accessible fashion - "The Left Hand of the Electron" springs to mind as a favourite selection of his essays, covering everything from chirality in life to an exploration of polar solvents.

Re: relevance - I'd argue that both he and PKD are more relevant than ever - Asimov probed the forces that shape society, the impact of automation, the decadent decay of empire, and the all too human reactions to forces both inhuman and inhumane, and PKD probed how we each shape our individual and collective realities, and the myriad fashions in which this could go disastrously wrong with ever escalating and increasingly magical technologies.

Hell, I almost think it should be compulsory that policymakers are made to read their respective corpii!

<comment><USER4> "corpus" is a 3d declension neuter noun; its Latin plural is "corpora".

</comment></comment></comment><comment><USER5> [http://www.amazon.com/Understanding-Physics-Magnetism- Electr...](http://www.amazon.com/Understanding-Physics-Magnetism-Electricity- Electron/dp/0880292512) was a surprisingly good alternative to my high school physics text. He wrote more than stories and essays.

(And it really ought to be free: 50 years old, by a writer 25 years dead now.)

<comment><USER6> He died April 1992 - not quite 25 years ago.

</comment></comment><comment><USER7> Note that this is just the _books_ published, and doesn't include the stories that he had published earlier (and presumably later?). For example, on of Asimov's great short stories/novels, "Nightfall" \- was published in 1941 - about 9 years before this list begins.

<comment><USER8> Quite correct. But his stories are also published as anthology. Nightfall is there (1969). So that list might be complete.

<comment><USER9> Chances are the story is reprinted in several anthologies, to boot.

</comment></comment></comment><comment><USER10> Excellent list, I am currently on a reading streak with my new e-reader and this list will certainly keep me going. My favourite Asimov essay must be "The Relativity of Wrong" [1], possibly since it resonates so strongly with my views on the pitfalls of the teacher/student relationship when it comes to tests.

[1]: [http://hermiene.net/essays- trans/relativity_of_wrong.html](http://hermiene.net/essays- trans/relativity_of_wrong.html)

</comment><comment><USER11> Ah, the list brings back memories of being involved with Ed Seiler. I originally helped to convert the Asimov FAQ on his website into HTML (1.0?) format [1]. It was manually done, and I enjoyed doing it.

[1] [http://www.asimovonline.com/asimov_FAQ.html](http://www.asimovonline.com/asimov_FAQ.html)

</comment><comment><USER12> Asimov's method to being so productive is instructive. Basically, write everyday and use a straightforward style. See [https://www.nytimes.com/books/97/03/23/lifetimes/asi-v- profi...](https://www.nytimes.com/books/97/03/23/lifetimes/asi-v-profile.html)

<comment><USER13> I just finished re-reading an Asimov book after a hiatus of maybe a decade.

It is very refreshing to see how high the important-stuff/useless-details ratio is compared to some modern authors.

</comment></comment><comment><USER14> Cool list! I don't think I've ever seen them all in one place before.

I cannot stress enough what an incredible force for good Asimov had (and hopefully continues to have) on society. I remember reading "the World of Carbon" and not being able to put it down -- a non-fiction organic chemistry book! The high quality and sheer volume of work he output are each impressive on their own, but combined are astounding.

</comment><comment><USER15> I started to read Asimov relatively recently and I've found that I prefer his short stories over his novels. There is a very good and comprehensive collection that I've been reading for a while now, reading one or two stories every once in a while. I really recommend it: [http://www.amazon.com/Isaac- Asimov-Complete-Stories-Vol/dp/0...](http://www.amazon.com/Isaac-Asimov- Complete-Stories-Vol/dp/038541627X) [http://www.amazon.com/Complete-Stories- Vol-2/dp/0385420781](http://www.amazon.com/Complete-Stories- Vol-2/dp/0385420781)

</comment><comment><USER16> There's also tons of stuff on Internet Archive, including, just in time for Easter, Asimov's Guide to the Bible ;)

I love the opening sentence of "Lastborn" from Galaxy Magazine 1958:

 _Edith Fellowes smoothed her working smock as she always did before opening the elaborately locked door and stepping across the dividing line between the "is" and the "is not"_

</comment><comment><USER17> I knew the man was a prolific writer, but even death couldn't stop him from publishing books. He died in 1992 and the list shows new books up to 1996.

<comment><USER18> He once famously quipped that if he was diagnosed with something fatal the only thing he'd do is _write faster_.

<comment><USER19> And, in fact, he was: he acquired HIV from a blood transfusion in 1983. He then wrote/edited 180+ books in the next ten years.

</comment></comment></comment><comment><USER20> You might also enjoy his Robots/Foundation timeline:

[http://www.sikander.org/foundation.php](http://www.sikander.org/foundation.php) [http://kaedrin.com/fun/asimov/aguide.html](http://kaedrin.com/fun/asimov/aguide.html)

<comment> sikander-hn hey, thanks! I haven't updated that Foundation page since early 2000s.

</comment></comment><comment><USER21> My favorite book of his is actually his Memoir, one of the most memorable books I've ever read -- [http://www.amazon.com/I-Asimov-A-Memoir- Isaac/dp/055356997X](http://www.amazon.com/I-Asimov-A-Memoir- Isaac/dp/055356997X)

</comment><comment><USER22> Definitely my favorite author, and my bucket list is to read all of his books. So far: Foundation series Nightfall I, Robot Asimov on Chemistry Asimov on Physics Nemesis (almost finished)

</comment><comment><USER23> Another source: [http://www.isfdb.org/cgi- bin/ea.cgi?5](http://www.isfdb.org/cgi-bin/ea.cgi?5)

</comment><comment><USER24> you know that old saying, "Poor Asimov had writers block once; it was the worst 30 seconds of his life"

</comment><comment><USER25> That's really inspiring how much passion he has for his work... such talent and work ethic. Back to work! Umph!

</comment><comment><USER26> Is there any documentation of just _how_ he was able to be so prolific? That's an incredible list.</comment>


Taylor Series and Accelerometers - <AUTHOR> https://jeremykun.com/2020/07/26/taylor-series-and-accelerometers/ <comment><USER2> Using differences to avoid non-linearity is a pretty common technique used across EE, especially circuit design. Transistors are very non-linear and circuits like amplifiers have problematic squared terms. However, they're almost always built "differentially": there are both positive and negative input terminals, and positive and negative output terminals. The difference of the output voltages is an amplified version of the difference of the input voltages. Because the squared term at each terminal is the same polarity, subtracting them cancels it out very well. In practice, you're limited by how well the positive and negative paths match, and the mismatch allows some second order term to leak out. Unfortunately, this does not help with the third order terms.

See: [https://en.wikipedia.org/wiki/Differential_amplifier](https://en.wikipedia.org/wiki/Differential_amplifier) [https://en.wikipedia.org/wiki/Third- order_intercept_point](https://en.wikipedia.org/wiki/Third- order_intercept_point)

</comment><comment><USER3> Differential measurements cancelling out unwanted terms is a common "trick" in electronics, and explains why Ethernet cables come wired as 4 twisted pairs.

Along similar lines, the "Translinear Principle" [1] may be another fun mathematical-relationship-turned-practical-electronics-tool to explore: it takes advantage of the logarithmic relationship between voltage and current in a PN junction -- specifically a bipolar junction transistor (BJT).

Since log(X) + log(Y) = log(X*Y), you can make very simple analog circuits which compute, for example, a square [2] or a square root [3] using just 4 transistors. These can actually be quite high-performance, low-power- consumption circuits. (JavaScript simulations attached; just click the link and then "Run DC Sweep".)

[1] [https://en.wikipedia.org/wiki/Translinear_circuit](https://en.wikipedia.org/wiki/Translinear_circuit)

[2] [https://www.circuitlab.com/editor/33yksg85qf3s/?mode=simulat...](https://www.circuitlab.com/editor/33yksg85qf3s/?mode=simulate)

[3] [https://www.circuitlab.com/editor/rfc7h79pvgtb/?mode=simulat...](https://www.circuitlab.com/editor/rfc7h79pvgtb/?mode=simulate)

<comment><USER4> Why haven't analog circuits taken off yet in mobile computing and other spaces? They seem great for things like machine learning and possibly superior to traditional digital circuits. What are the trade-offs?

<comment><USER5> Huge power consumption, extraordinary costs for precision components.

<comment><USER6> Power is a big deal with analog. Power wasted in heating a device is (I^2)R where I is the current through and R is the effective resistance of the device. Power wasted is obviously 0 if R=0. Because I=V/R, power wasted is _also_ 0 if R is very high (because in that case I approaches 0).

Power wasted is highest if R is between 0 and "very high." This third case is where analog electronics like to live. The first two cases are where digital electronics lives. And that's why switching power supplies and Class D amplifiers are so efficient: Their effective R values spend most of the time near zero or "high" but not much time in between.

This is also why even in digital circuits higher clock speed means more power: More transistor transitions between "fully on" and "fully off" mean more time spent in between in the high power dissipation regime.

<comment><USER7> Back in the late 90s, a mechanical engineer on the MIT solar car team was explaining the latest high-efficiency motor controllers for brushless DC motors, and my degree is also in Mechanical Engineering, so this could be way off. However, as explained to me, the highest efficiency brushless DC motor controllers in the late 1990s used a phase-locked loop to get some of the off periods in the square wave in the power conversion stage to be in sync with the switches between coils in the motor. Transistors don't switch instantly, and a good deal of your power loss is during the transition between fully off and fully on. By synchronizing the two parts of the motor controller, you get the coil changes to happen when that part of the controller is seeing dips in its power input, so you get less loss.

</comment></comment></comment></comment></comment><comment><USER8> To answer the post's final question: Yes. It is quite common to design instrumentation to cancel systematic uncertainties or nonlinearities to leading order. Fancier arrangements go to higher orders.

In the particular case of the differential capacitor, that form of differential measurement is particularly common -- if one non-linear system can paired with a symmetric partner with equal and opposite nonlinearity, the leading-order non-linearities are suppressed (to the extent that the matched pair are actually matched).

An easy-to-understand example of the compensation of linear effects is the temperature-compensated pendulum clock: [https://en.wikipedia.org/wiki/Gridiron_pendulum](https://en.wikipedia.org/wiki/Gridiron_pendulum)

</comment><comment><USER9> A cleaner derivation would be 1/(1-d) - 1/(1+d) = 2d/(1-d^2)

followed by Taylor series, but the conclusion is obvious even without the Taylor series.</comment>


Time Delay Between Earth and Mars (2012) - <AUTHOR> http://blogs.esa.int/mex/2012/08/05/time-delay-between-mars-and-earth/ <comment><USER2> Anyone know much about the GUI for their control system? [http://blogs.esa.int/mex/2012/08/05/time-delay-between- mars-...](http://blogs.esa.int/mex/2012/08/05/time-delay-between-mars-and- earth/4401662362_c6054d43ec_o/)

<comment><USER3> It reminds me of FVWM, but I'm not sure. Last time I used that was 10 years ago in a (back then) 10 year old computer which barely had any RAM.

Edit: with a bit of research, I found it could be Mwm (or a derivative/predecessor?). In the Wikipedia article what struck me the most was the "Compliance" section: [https://en.wikipedia.org/wiki/Motif_Window_Manager#Complianc...](https://en.wikipedia.org/wiki/Motif_Window_Manager#Compliance)

<comment><USER4> Looks like Tcl/Tk to me .. running in a Motif-like WM perhaps?

</comment></comment></comment><comment><USER5> The Mars Express delay display has a small bug - the developer rounded the seconds but forgot or didn't care about the carry to the minutes in case fifty-nine and something seconds rounds up to sixty seconds.</comment>


As Oceans Alkalized, Life Developed Bones and Shells - <AUTHOR> http://www.astrobio.net/news-exclusive/oceans-alkalized-life-developed-bones-shells/ <comment><USER2> The last theory I heard was that fish developed calcium deposits in order to move up river deltas into fresh water. Calcium is important for muscle function and you would have to bring a stable supply with you to survive.

The fact that mammals still cycle calcium in and out of their bones to manage blood chemistry was as I recall used to support that theory.

</comment><comment><USER3> I was trying to read the article, but then I refreshed and it looks like the site is now suffering from the internet kiss of death. Resource limits reached.

<comment><USER4> It's also on Phys.org and that seems to be up ok [https://phys.org/news/2017-08-oceans-alkalized-life-bones- sh...](https://phys.org/news/2017-08-oceans-alkalized-life-bones-shells.html)

</comment></comment><comment><USER5> This is something that I think about, we have CO2 contributing to acidity, but what are nature's ways of providing alcalinity??

<comment><USER6> calcium carbonate

<comment><USER5> which is CaO + CO2, so that doesn't answer the question too much</comment></comment></comment>


The Brick Wall of C++ Source Code Transformation - <AUTHOR> http://scottmeyers.blogspot.com/2015/11/the-brick-wall-of-c-source-code.html <comment><USER2> I have been one of the primary authors of a commercial C++ static analysis tool.

In a nutshell: C++ is horribly complicated language, and preprocessor is just the first brick wall on the way. Even if you walk around it or manage to blow a hole through it, there are other things. The fact that C++ even as a preprocessed language is very complicated. Its grammar is context-sensitive. You have to scan C++ definitions at least twice to parse them properly. And then you bump into a mother of all brick walls: templates. Which are turing- complete. Meaning that you can specify arbitrary computation in them, that will be performed by the compiler.

</comment><comment><USER3> I've been thinking a lot about source code transformations as a possible key for maintenance in the "future" of programming. Its interesting to see that the preprocessor, which is a source code transformation itself, makes other source code transformations much more difficult, if not intractable. I'm wondering if this inherent to any macro system since they are not bijective.

Two possible directions I see away from macros which would play nicely with source code transformations are un-macros and layers of languages.

Un-macros would take source and display it in the condensed form only for human reading -- this takes away from human writing power of course, which may have to get pushed into the editor. This could also allow for automated pattern discovery.

Layers of languages would look similar to Racket's #lang concept and current macro systems, but without the ability to escape back into the parent language. This creates a new language on top of -- not mixed into -- the parent language.

<comment><USER4> I wonder if the right option is to push the macro-like functionality down into the language itself. Something like [http://okmij.org/ftp/Computation/free- monad.html](http://okmij.org/ftp/Computation/free-monad.html) starts to offer very macro-like functionality, but deferred to runtime, so you can still look at the original value and even imbue its effects with a different set of semantics.

<comment><USER5> Or something similar to Nim's metaprogramming features. Nim's templates and macros are wonderful.

<comment><USER3> Are Nim's metaprogramming features fundamentally different than C++?

</comment></comment></comment></comment><comment><USER6> In short, the problem is that you can't do:

readable code -> [preprocessor transform] -> transformed code -> [apply transformation tool] -> [reverse preprocessor transform] -> readable code

Because both the preprocessor (and potentially arbitrary transformation tool?) are not bijective.

Couldn't you add detection for when the reverse transformation isn't bijective, and then report an error in those cases.

Just because there are examples of abuse of header files and macros in C++, it doesn't mean all of it is like that -- especially modern C++. So these tools could still work for a lot of cases.

Please, don't give up!

<comment><USER7> I heard on CppCast with Dmitri Nesteruk, that CLion is macro aware when doing refactorings, but it was a very complicated process to make it work properly.

Since I spend most of my days in JVM/.NET land, I don't have experience how it really works.

They keep in memory the whole macro -> expanded C++ code transformation.

</comment></comment><comment><USER8> So, my after-work project these days is a language that transpiles to C++ and can do all that current C++ can do.

The grammar is completely regular, and the syntax maps 1:1 with the ast in memory, I can generate one from the other idempotently.

The main reason I am doing this is that I wanted a language that is easy to build tooling for (including of course code transformations) while being compatible with existing C++ libraries out there.

This kind of articles give me hope there might actually be demand for my crazy thing once it grows up.

<comment><USER9> Any relation to [http://www.csse.monash.edu.au/~damian/papers/HTML/ModestProp...](http://www.csse.monash.edu.au/~damian/papers/HTML/ModestProposal.html) ?

<comment><USER8> I read that paper a long time ago and it was certainly an inspiration :)

Originally, the language started out quite different but I can now see why SPECS looks the way it does, I do not agree with everything they did and my effort these days is towards making it simpler and smaller but there's some convergent evolution indeed.

</comment></comment></comment><comment><USER10> And that's why the modern alternatives have done away or greatly reduced what the preprocessor can do.

That and Include Files

I guess it was part of the evolution and experimentation, but it is one of the things that make C++ complicated

</comment><comment><USER11> Thankfully we will get modules in C++ soon. Hopefully the (Microsoft) version that deprecates the preprocessor.

</comment><comment><USER12> Don't mean to be rude or troll but the first thing that came to my mind when I saw the title was :

Stop trying to make C++ happen, it's not going to happen.

<comment><USER13>
       Stop trying to make C++ happen, it's not going to happen.

That isn't rude or trollish, but it _is_ inept.</comment></comment>


A friend of mine has been trying to hire a new employee for her department - <AUTHOR> https://twitter.com/TheWrongNoel/status/1194842728862892033 <comment><USER2> Use the HR department for finding you more candidates, but never for screening the applicants.

As a manager at any level hiring is probably the process with the most impact on your company/department. Of course it will take time out of your undoubtedly busy agenda, but if you are going to delegate or outsource something, this should be the last thing on the list.

</comment><comment><USER3> This is why as a hiring manager I ask my HR department to grant me access to their ATS (ex. RecruiterBox) so I can personally find resumes / cover letters that match my open job requisition. HR uses these kind of questionnaires b/c they get inundated with applicants and want a way to filter most of them out so they only have to read just a few resumes and then work on the next job role to fill for another department.

</comment><comment><USER4> Fun idea.

Test works as intended:

Anyone that passes the HR screening - is declined. Anyone that fails is pulled in for round two.

Just verify results w/ outliers - but if you're hiring for department, you match the department. If everyone in the department scores a "1" but still excels and does excellent work - who cares what the HR screening software says?

<comment><USER5> "you match the department"

Isn't this going to be a violation of civil rights laws? Isn't this the sort of thing people have been constantly attacking ML models for recently?

</comment></comment><comment><USER6> Personality tests were devised as an aid to psychologists to use in conjuction with therapy, never stand-alone. Using them for any purpose that they were not tested, standardized for is Astrology.

There is _no_ automation for hiring; it's a harder problem than self-driving cars.

</comment><comment><USER7> Only people with a LinkedIn score above 75 were presented for us to choose from for phone screens.

Like it or not, recruiting mostly revolves around employee referrals. Everything past that is just some startup selling recruiters a piece of software that will magically change their life and make their job easy.

Source: Had to reject numerous software requests from recruiting department for shady, shady services.

</comment><comment><USER8> Apropos DHH's recent high-impact complaint about Apple's new credit card basically shutting his wife out despite her higher credit rating than his.

Someone should do a running collection of all these "I'm sorry, that's the algorithm" experiences. Perhaps there is such a thing already?</comment>


Google OAuth API is down - <AUTHOR> Thanks to comments:
Down around 13:17 UTC - Back online at 14:20 UTC
Service have been available intermittently and throwing 500 errors.
Status page: https://status.cloud.google.com/
Other press links: http://mashable.com/2016/04/19/google-oauth-down/ <comment><USER2> What bothers me a lot is their fricking "Cloud Status" page.

None of their Google Cloud services are working for me, but the page says everything is operating normally.

This is not the first time this has happened either. Their status page has been truly useless. There is often degraded service or services going out for an hour or two with nary a blip on their status tracker.

This is not what I'd call "Normal", Google. You can do better with monitoring services, and you know it.

</comment><comment><USER3> From the status page:

[https://status.cloud.google.com/incident/appengine/16003](https://status.cloud.google.com/incident/appengine/16003)

"The issue with Authentication Services should have been resolved for all affected projects as of 07:24 US/Pacific. We will conduct an internal investigation of this issue and make appropriate improvements to our systems to prevent or minimize future recurrence. We will provide a more detailed analysis of this incident once we have completed our internal investigation."

</comment><comment><USER4> Anyone know if Google has a status page anywhere for this issue?

<comment><USER5> I only have been able to find this [http://www.google.com/appsstatus#hl=en&v=issue&sid=1&iid=153...](http://www.google.com/appsstatus#hl=en&v=issue&sid=1&iid=153852552d39bdeeafbde4bac5bc3dcc) which is Gmail, not the API.

I wonder why they don't have an API status page or, if they do, why it is so difficult to find.

</comment></comment><comment><USER6> Yeap. Google Cloud Project customer here, we have a team of devs unable to login to our infrastructure. I sure hope we don't have a dumpster fire in production :)

</comment><comment><USER7> The status page at [https://status.cloud.google.com/](https://status.cloud.google.com/) has now been updated to include "We are investigating an issue with Authentication services. We will provide more information by 07:30 US/Pacific."

</comment><comment><USER8> We started noticing errors at 13:17 UTC, and we continue to see errors as of 13:49 UTC.

<comment><USER8> It looks like the failures have stopped. Haven't seen a failure since 14:17 UTC (~15 minutes).

</comment></comment><comment><USER9> It's down again. Bad time for Google... and us.

</comment><comment><USER10> Same on the west coast, D'oh!

</comment><comment><USER3> yep, our application is also experiencing issues; still down here (EU-NL) as of 15:53 CET

</comment><comment><USER11> same here...

</comment><comment><USER12> it's back now</comment>