Everything. That's the problem, I want it all, and I want it now (as they say). Basically, I need somebody to invent the interface from The Matrix so I can have Tank dump jiu-jitsu, kung-fu, and a pilot program for a b-212 helicopter straight into my brain.
That said, in terms of prioritizing, I'll be spending a lot of time this year on topics related to data science, big data, machine learning and AI. Taking some stats classes online, and particularly interested in finally getting a handle on Bayesian statistics and then exploring things like Bayesian Belief Networks, etc.
Also, I've been doing a lot of stuff with R and Octave the past few months, so more of that for sure. May try to pick up some Julia at some point, and I bought a Swift book intending to at least dip my toes in the water with that. I still want to learn to use some things like Prolog, Mercury, CLIPS, OPS5, etc. as well.
Access to the collective knowledge of humanity equates with uncountable paths not taken!
I know someone with 4TB of textbooks and course lectures.
Probably the most important habit learned during my (first year of) PhD:
1. Make a list of books you want to read
2. Break up each into reasonable blocks (#_pages/#_chapters is a good unit) and write as checkboxes to cross off to keep you motivated
3. After filling up two pages or more, reconsider step 1
Another observation, for those not bored yet: Planning each minute will give you anxiety, planning every decade will not be as effective. Multiple timescales can help.
I know someone with 4TB of textbooks and course lectures.
Heh, is your friend me? :-) OK, not sure if I have 4TB of stuff or not, but if I totalled up all the books, videos, etc. I have downloaded and stored here and there, I'm pretty sure it's in the TB range. The most frustrating part, to me, is the lack of time to read/study everything I want to study. I think that's one reason the Coursera classes work so well for me - they force me to pick something and focus on it to (near) exclusion for a defined period of time. Otherwise, I tend to wander around a bit too much. :-(
Ha! I know how you feel! Check out "Learning how to learn?" (https://www.coursera.org/learn/learning-how-to-learn) - it's an excellent course that may help you out. (Though not with jiu-jitsu, kung-fu, and b-212 helicopter piloting I'm afraid :-)).
I'd really like to learn more about radios and RF electronics. I have a pretty good understanding of the system level concepts behind radio, and I have enough EE concepts down to understand things like amplifiers and filters, but chaining all of that together into a working system is above my level of understanding.
I think I have a small problem in that I don't know where to start. I don't know how to bridge the gap between block diagram understanding and detailed circuit schematics and diagrams.
Long shot, as this is a mostly programming based thread, but hey, I've gotten lucky before. Maybe I will again?
I'd recommend trying to build something relatively simple (e.g. an AM transmitter) from scratch and just enumerating all the questions you ask in the process. Then finding the real answers to those questions and the whys.
I've thought of trying that, but part of my stumbling block is that I'd need an oscilloscope to debug the thing when it wasn't working, and those are sort of expensive. (At least, the decent ones are. About $1k or so to start.)
Digital ones are expensive but you can get an old used analog scope pretty inexpensively, and often they'll do the job. At least for relatively low frequency projects. Call your local universities surplus department and see if they have any or expect any to come in soon.
- Deduction system, in particular as relating to logic programming such as Datalog. This is more or less in link with my research interest in programming languages - I feel like these techniques could have a lot of implication in compilers.
- Front-end programming using javascript. I'm always intrigued by all the conversations surrounding React, Angular, etc... There is a background I lack to see why such convoluted solutions are need, what problems they fix.
- Fundamentals of machine learning, esp. neural network (I have some clues about things like Bayesian filters). It just seem like something that could be used in practice if one knows how to roll with it.
I'd be more interested by pointers for Javascript front-end principles, because I feel like I'm lacking some background to understand much of what I'm encountering, whereas there's quite a bit about machine learning (which I haven't checked, still I have good hope it covers the fundamentals).
I've already completed the Coursera Machine Learning course and now I'm starting to get my head around Deep Learning using the nVidia course - mostly because I bought a Jetson TK1. This is all to complete a project that will also involve RabbitMQ, Nodejs, and Docker.
Other than that I'm determined to gain a certificate in French Language (although I have been slowly learning for several years now) and get my driving licence :)
It helps that I have stuck with each technical topic rather than trying to do them all at once or skip ahead. Getting to use some of the technologies I need for my project in my day job helps too.
I also just finished the Coursera ML course, now I'm doing some stats and data science classes on there, and the Google deep learning class at Udacity.
I kinda think that the rise of MOOCs and "on demand education" is the best thing since sliced bread. :-)
The Stanford / Andrew Ng one. I thought it was pretty solid.
It's apparently not quite as rigorous as the actual cs229 course, but those lectures, problem sets, etc. are also online if you want to supplement the Coursera stuff with something more math heavy and intense.
I'm focusing on cybersecurity. Right now I'm doing the microcorruption.com CTF, just finished the stockfighter CTF. I read The Web Application Hacker's Handbook and am practicing pentesting the sample apps compiled by OWASP. [1] I want to learn to reverse engineer malware, and write cryptographically secure software like Tor.
Having gone the traditional engineering/cs route through university, I was trained to be a systems engineer. So C, C++, and Java were my first languages. Web has taken me away from that in recent years so I'd like to reexplore what systems programming looks like in 2016. Rust and Go are on the top of my list.
Go feels like a "friendly" C, kinda. Rust is different. Vaguely like the ML family. They both have some neat ideas. Rust is probably more of a stretch, given your background.
As jfoutz says - Go is almost like a "better" C. I really enjoyed learning Go last month (I wrote a go server for a mobile app of mine). The "Tour of Golang"(https://tour.golang.org/welcome/1) is a really good place to start.
Is there anything I could write that would make it _easier_ for you to learn? Taking up project/quizzes/follow-ups...?
I want to learn more German and more javascript.
I took german in high school 20+ years ago but sucked at it and struggled through it for my language requirement in my phd. A decent amount of literature in my field is in German so I want to get better at translating it. I'm doing duolingo.
I went through the javascript program at codeavengers last summer and now I'm looking to build on that.
The currying part is the variable that you give to the first function. In the first function the prefix variable is stored in the local scope of the big arrow function that is returned. This ability of functions to remember variables from the scope in which they were created is called closures, and storing a variable like this is a closure. Using closures to generate functions with preset variables is currying.
thanks. I understood about half of that! :-)
I don't really want to be better at speaking it just reading it (of course I know one would help the other)
The Goethe Institut definitely believes in "whole language" and they consciously practice reading, writing, speaking, listening, and grammar and vocabulary study during every single class. If you don't want that, it's indeed probably not your best best.
(Also, there's kind of this subtext about language skills for living in Germany, because a lot of the class activities are about roleplaying stuff like trying to rent an apartment, visit a doctor, order food in a restaurant, or go clothing shopping in Germany.)
Electronics: "Object in Space" baited me into thinking "Huh, I could do that" - bought an Arduino, assembled some basic circuits, and plan to make at least one USB controller.
"Proper" Woodcrafting: All the better to mount said electronics. Might branch out into making my own arcade cabinet, pinball machine, computer desk, etc. - I've only done basic assembly with boards, saws, nails, screws, etc.
Commercial Failure: I intend to write the gold standard for unit testing tools (at least within game development), and try to make a buck off of it.
Killing Procrastination: I should hit [add comment] and get back to coding...
I've had this feeling for a while that unit testing tools are ripe for 'disruption'. The main problem I see is relating the test cases "back" to features and broken/flaky tests.
For procrastination, the thing that works for me is timeboxing (setting a timer for as little as 10/20 minutes and just getting started). See if that works for you.
> I've had this feeling for a while that unit testing tools are ripe for 'disruption'. The main problem I see is relating the test cases "back" to features and broken/flaky tests.
This is part of my interest. For one of the nastiest debugging sessions in recent memory, I eventually resorted to performing a manual perforce bisect of history (no p4 bisect), and manual testing to invoke system UI. This revealed that spamming some call to check internet connectivity would cause a "crash" (via exit(3) with no useful debug spam and an equally useless callstack) if you opened the windows 8 charm bar for more than 10 seconds in a certain way.
I spent a good week or two trying to track that down before resorting to brute force. So there's two tools right there that would've saved me a ton of time:
1) p4 bisect. git bisect exists - writing tools to iterate over arbitrary VCSes shouldn't be that hard.
2) System level input capture and replay. This already exists in the form of tools like AutoHotKey, and there's similar tools for e.g. Xbox 360 gamepad input - but these are scattered tools, each which must be separately learned, configured, and integrated, and usually not focused on creating 'unit' tests.
.
There's also a lot of low hanging fruit for basic test types. Most unit test frameworks offer little more than a fancy assert(). Some build systems will have some basic correlation of test failures to VCS versions. Meanwhile, I want to test things like...:
1) Did change X impact this performance-critical bit of software? What about on other machines than mine? I shouldn't have to manually profile every change to see performance impacts, good or bad. I have a very basic prototype of this displaying the results of my latest checkin @ http://test.maulingmonkey.com/
2) I have a GLSL shader that works on my device (tm). I want automatic test failures when it turns out this shader crashes the driver when linking the shader on phones with a specific GPU vendor. This boils down to little more than having better tools to manage the running of unit tests against multiple machines/devices, and correlating the results in a sane fashion. Running database unit tests against every phone is usually a waste of time, but running graphics unit tests against only the phones connected to the build machines isn't enough - it should test against every phone connected to a workstation in the studio overnight. It should also test against the AWS Device Farm.
3) I have a cross-platform renderer that works on PS4, XB1, Windows, OS X, iOS, and Android. If I render this scene, do I get approximately the same result? Or is XB1 rendering a black screen instead? Do certain Android phones have major precision issues? Which GPU Driver versions misrender?
4) I want to fuzz-test user profile parsing. "Forever" - by which I mean, whenever a build machine or workstation is idle. So just script your CI server to run SDL MiniFuzz! But I also want to fuzz things which don't have a file based interface - such as network protocols, containers, user control input, ...
Haskell. I am currently reading haskellbook.com but I am kind of stuck with the first chapter about Lambda Calculus. If anyone knows a good advice/link/tutorial about it, that would be great!
Lambda calculus was tough, but working through the problems helped a lot. That book is great for most explanations, but if at any point you are stuck, just google alternate explanations. I think getting multiple explanations helps with grokking any concept.
It's paid, but I personally think Haskell Book[0] is much better. I can say its better in both helping form a deep intuition and teaching how to use Haskell in the real world.
A lot of my imperatively biased coworkers have bought this book and have no complaints. Some go as far as claiming it's the Haskell K&R and I'm inclined to agree.
0: http://haskellbook.com (for those struggling financially, the authors request you contact them to work something fair out)
The book Types and Programming Languages has a nice treatment of the lambda calculus. It looks intimidating, but it's really pretty simple conceptually.
as a productive intermediate+ haskeller, I found the first chapter very confusing. Try your best but just move on to the second and see if it gets any better
Anything specific that you found confusing? I actually thought the first chapter was a great start. I'm sure the authors would appreciate the feedback.
After 8 years of being frustrated with HTML/CSS...
How to take a sketch of a webpage I've made on a piece of paper and write the HTML/CSS for it while feeling like I can predict how things will be laid out rather than feeling like I'm playing whack-a-mole. I think I've learned that I just cannot do achieve this with block/inline/inline-block and I need to stick with flexbox. I'd like to either learn a CSS framework or learn sass and write my own.
How to stop mumbling. I've tried before and always given up because I sound like a robot when enunciating. But I'm tired of people asking "what?" I'm going to fix it this time.
Oh man! I _so_ identify with this problem. I've been struggling with it for ages. Lately I've been trying some voice exercises and they have helped a bit but I still slip back when I'm not thinking about it.
The top two are on my list as well. The tricky part is that my "good code" is someone else's "bad code" and vice versa. Slowly trying to introduce functional concepts into a team of developers who are used to working with what can only very loosely be described as MVC.
While you're at it a style guide may be in order. Try to convert your team's current patterns into the set of new patterns that you think are better. This would help to give others a sort of rosetta stone while they're making the switch. I always try to add a why after each good vs bad code comparison.
Having a document external of your brain helps others to feel like they have a tangible set of goals instead of some arbitrary set of goals that nevon wants to have happen. I made my team's style guides repos on github so it's super easy to edit since it's straight markdown. Keep the pedantic discussions to a minimum. Sometimes it's just best to choose something because it's a single way of doing it.
I have been thinking about problem (1) off and on for the last year. The best strategy I've come up with so far is to set up a ritual that I will end the day with 10-30 minutes of code cleanup. Being systematic about it helps me get acquainted with a lot of the code while clearing technical debt.
This is exactly what I've been doing. I'm trying to make it an every day ritual, time permitting of course.
My main approach for this is to create a long term goal for a relatively small unit of untracked work. For example I've identified that our common folder for our front end code is not broken up into logical units. So every day I try to hop in there and simply reorg the folder structure. While I reorg I'm exposed to the files, what they do and whether or not they are actually being used as well as how they're being used.
This is enough to learn about what other people are doing/have done and helps me to identify other refactor goals as well as architectural goals.
Another idea that I've found if you're on a longer release cycle is a post release mental hook. Once the team has deployed the latest bits, I try to hop into main and rip out or refactor code that may be more sensitive. This gives your more risky changes a much longer time to get eyes on them before the next deploy.
German, Swift, Blender, Unreal Engine, C++, how to fly helicopters, improving fixed-wing aircraft night landings, Jiu Jitsu, deep sea diving, breast stroke.
I learnt C from scratch. I'll be using C++ heavily in Unreal Engine, but I'd like to make a standalone project to demonstrate my proficiency in the language.
I'm currently working through the book Programming Phoenix and it's going well.
I would love more video tutorials because I personally prefer them to books. There was one where Chris went through building a chat app, but it's very outdated now.
I hope it's not too late to start, but I'd like to learn Go, the language. I've been working with PHP and Node for far too long and need something not interpreted.
I _really_ enjoy Go. As jfoutz said above, Go is like a "better C". The "Tour of Golang"(https://tour.golang.org/welcome/1) is a really good place to start.
Is there anything I could write that would make it _easier_ for you to learn? Taking up project/quizzes/follow-ups...?
Shameless plug: I am also doing something similar https://github.com/shekhargulati/52-technologies-in-2016. I am learning a new technology every week or writing some small open source project mainly in Scala, Python, and Java. I am documenting my learning on Github.
- Cryptanalysis, and globally large scale, calm, problem analysis (groups, fields, vector spaces). I had a recent itch about prolog, constraint programming.
- Wholemeal programmng, haskellers view on problem analysis, graph abstractions, topology.
I just graduated 2 weeks ago. There is so much to learn of what is useful, and feels like very little time to do it. Getting proficient with a language that is up and coming (Golang has been my choice lately), and then follow it up with an idea super hot today (machine learning, big data?).
1. LLVM - enough that I can write my own optimisation passes and plug them in along with the regular -O3 ones
2. The ability to understand when and where to use meta programming efficiently. Currently I only have C++ experience, but I've heard things are better with Dlang??
To really "get" meta-programming, try using Lisp/Scheme. I've found that really helps to "grok" the concepts and makes it much easier to understand in C++.
Neural Networks. I actually read a lot of introductory stuff but never really went down to detail and also never had the opportunity to implement one. For me and I guess a lot of people reading tutorials is not enough to learn unless we work on a project.
ML/AI and actually proficient in a functional programming language like Elm or Haskell so I can write more functional JavaScript. Got my Coursera for ML! Just need more FP experience!
Nodejs is actually pretty easy to pick up. Any reason you don't want to get into it?
Elixir and Clojure are also fascinating to me. Is there anything in particular you feel would help you more than the existing tutorials? Projects/quizzes/follow-ups/...??
Too many things! Write a compiler, master Angular 2 and TypeScript, learn much more about systems design and scalability. Maybe even some machine learning.
I wanna learn Go. After a lot of thought went into what new language to pick (Rust, Nim, Go, etc.), I settled on Go because like Go I'm a minimalist and the feature set and grammar of every other language is just exhausting.
The question was about a tutorial for programmers. What would French brings in this context? There were some variants of basic in French, but nowadays I'm not convinced French is useful but for reading comments.
I think the original question lent itself naturally to the interpretation "what are you hoping to learn about this year?" rather than what might have been intended "what topics would you like me to put into my programming tutorial?". (You could read the original question as something like "I'm going to learn about programming by teaching people about it; what are you going to learn about, and how?".)
I'm French myself and would like to improve my frontend/design skills and my marketing/salesmanship skills, or just trying to get rid of my French accent when I speak, so maybe we can help each other... My email is in my profile if you're interested.
I haven't started learning it yet so I don't know what is current state of tutorials. I'm coming from web development and mostly dynamic languages (js, python, php, ruby) with most recent experience of elaborate type systems from typescript and C#. I have some past experience with C++ (modern looks awesome) and Java. What excites me most are clever useful constructs I haven't seen anywhere else, evolvability of the code and terse syntax and naming.
That said, in terms of prioritizing, I'll be spending a lot of time this year on topics related to data science, big data, machine learning and AI. Taking some stats classes online, and particularly interested in finally getting a handle on Bayesian statistics and then exploring things like Bayesian Belief Networks, etc.
Also, I've been doing a lot of stuff with R and Octave the past few months, so more of that for sure. May try to pick up some Julia at some point, and I bought a Swift book intending to at least dip my toes in the water with that. I still want to learn to use some things like Prolog, Mercury, CLIPS, OPS5, etc. as well.