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.
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. :-(
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?
- 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.
Amongst the two, which would you say interests you more?
Deduction systems: see https://www.youtube.com/watch?v=R2Aa4PivG0g for instance.
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 kinda think that the rise of MOOCs and "on demand education" is the best thing since sliced bread. :-)
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.
[1] https://www.owasp.org/index.php/OWASP_Vulnerable_Web_Applica...
Is there anything I could write that would make it _easier_ for you to learn? Taking up project/quizzes/follow-ups...?
I went through the javascript program at codeavengers last summer and now I'm looking to build on that.
Haben Sie schon daran gedacht einen Kurs zu machen? Gibt es z.B. ein Goethe-Institut wo Sie wohnen?
Die Kurse, die sie anbieten, sind etwas teuer, aber nützlich.
(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.)
function getPrefixer(prefix) {
return str => `${prefix}: ${str}`;
}
Now use it! const infoLogger = getPrefixer('info');
infoLogger('Starting up!'); // returns 'info: Starting up!'
infoLogger('Not being used!'); // 'info: Not being used!'
Oh no, We're throwing the string away, let's use it and have it add a date and use a default argument value! function getLogger(log, prefix='info') {
return str => log(`${prefix} - ${new Date()}: ${str}`);
}
Now use it! const infoLogger = getLogger(msg => console.log(msg));
infoLogger('Starting up!'); //Logs 'info - Sat May 28 2016 08:51:12 GMT-0700 (PDT): Starting up!' to console!
const errorLogger = getLogger(msg => { throw msg }, 'error');
errorLogger('Oh no!'); // throws an error with 'error' prefix!
See it in action here with babel:
https://jsfiddle.net/xgwe121v/What part here is Currying?
"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...
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.
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, ...
Edit: And yes, it's an awesome book.
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)
That said I don't believe you need to understand the Lambda Calculus to grok Haskell.
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.
Also, Tensor Flow. How do I set that up myself?
- How to prevent more bad code from being written in a team setting.
- How to architect applications at a higher level.
- How to mountain bike like a beast.
I feel your pain...
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.
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.
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.
Is there anything I could write that would make it _easier_ for you to learn? Taking up project/quizzes/follow-ups...?
- Wholemeal programmng, haskellers view on problem analysis, graph abstractions, topology.
- Geometry. Back to complex plane ?
- DT, Agda, Idris.
- Sub micrometer physics and engineering.
- Biology/Ecology Energy gathering
- Non invasive medicine
- Threads. Just joking; that's too hard.
Try keras + Tensorflow
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??
- Style Transfer (so CNNs, Regressions and a whole bunch of Statistics concepts)
- React, React Native and that whole ecosystem
- How to identify and validate startup niches
I would also like to improve my JavaScript chops but can't see myself diving into Node.js. Will probably try to familiarize myself with ES2015.
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/...??
That and French/US history.
- TensorFlow applied to NLP problems
I don't know how their marketing blog is - never tried it but you could check it out.