The majority of information out there, including tutorials and blog articles about others' successful deployments, comes in the form of very high-level overviews. Everything I've found is an introduction to getting a basic docker instance running. There is very little useful information out there as to how to run a proper multi-host cluster.
There is core Docker. Tack on docker-machine, docker-compose, Swarm, and the dozens of 3rd-party cluster management abstractions such as Rancher - and the intensity of the headache never stops growing.
It sounds wonderful, but there is so much to learn to be able to tackle a full production stack. It's one thing to successfully launch a working cluster after hours of manual tinkering. It's a separate beast altogether to fully automate setting up a new cluster by issuing a single command, taking into account consistent configuration of: secure networking, persistent volumes with backups, deployment of container configuration and VCS codebases (ex: nginx vhosts and your code itself), etc.
My goal is to set up an entire project in such a way that there is a single suite of automation that can deploy all environments: development VM, staging, and production.
Start slow, and work your way up. I started with docker early, so I can see how its ecosystem can seem intimidating now, with all the different "tools" and "workflows" to know about. So my recommendation would be to go bottom up. Start with just plain old docker - learn what containers are, what makes them work, then see how to manage containers in a single host with compose. Then move on to clustering with swarm, and then move on to other cluster-mgmnt projects like k8s. Try to make your containers more space-efficient by basing your images on Alpine. Make your host more robust by using CoreOS/Rancher, and so on. You won't need all the steps (or even in the order) I've listed here. But once you've started with a base, you'll have some idea as to where you want to proceed next.
If you need any help, you are free to ping me with any queries at the email in my profile. My authority on the subject: having written a book [1] and a Udemy course [2]
My advice for container orchestration: pick Kubernetes and don't look back (or at least give it a solid try). It falls at the right layer of abstraction and gets so much right. You get automatic container scaling (by CPU usage for now), container composability, service discovery, configuration and (kind of) secret management, portability, it's open source, and really a whole lot more. It's spearheaded by Google, RedHat, CoreOS, and other organizations, so it's fairly safe to say that it won't completely disappear a la Google reader if it's abandoned.
I recently migrated a whole microservice stack of a half dozen services to OpenID connect and Kubernetes in two weeks. This is with about a year of casual familiarity and playing with Kubernetes, and the same migration to OpenID connect would have easily taken me 5 or 6 weeks to do in Amazon ECS, which is what we currently use in production.
Not to mention I can run a cluster on my three computers at home at no extra charge beyond electricity and play around for free. (See, dear, I'm not a hoarder!)
Setting up a cluster is even simpler now with tools like kops and kubeadm. Or just get one provisioned for you by Google or Red Hat with GKE or OpenShift.
I would highly recommend at the very least making it one of the solutions you try.
As a self-taught programmer without much in the way of "official" pro experience (I have another job and program just to increase capabilities in that role), Docker was a revelation to me. I've programmed lots of tools at home, but getting anywhere in production is a nightmare of trying to wrangle managers and sysadmins into helping me translate my vision into a full-blown, deployed app within the business's stack. This year was the first time I was able to throw something together, Dockerize it, and have it deployed by a sysadmin with one or two minor code changes to work through our proxies. There are a lot of things that make me nervous about containers (persistence for example), but that was a game-changing experience for me and opened a whole new window of possibility.
This is also one of my goals for 2017. I've been using Docker on my project at work for about 8 months, but only in development and CI. I really want to start a push to begin testing usage in production, but have no idea where to begin. It's hard to find information that strings everything together. I feel comfortable with using it in development, but production seems to be an entire different beast.
Are you looking to automate infrastructure-as-code in there, as well? I've lost many a night to trying to get Rancher to play nice with Terraform, especially in high-availability mode. Luckily, it appears that the process has been vastly simplified in recent rancher-manager releases.
Oh great, you've just added Terraform[1] to my list of possible tie-in softwares. Thanks for that, you monster. /s
Yes, at least for development, setting up the entire environment must be a one-command execution. Every new developer to a team will obviously need to progressively learn the entire stack, but they should be up and running after a single VCS checkout and installation command.
I expect staging and production to be a perfect replica of the same environment developers use. As to how realistic it is to "launch the entire production cluster with a single command", with remote server provisioning, IP allocations, multiple hosts for various load-balanced pools, etc... I'll have to see when that time comes.
Are there good ways to use Terraform internally / without online providers like AWS? I've just started using it with DigitalOcean, but I'd like to use it at home to do IAC with my whole setup. As far as I can tell the only good route for this is to throw OpenStack on bare metal, but I'm a newbie so I wonder if there's a better way.
Absolutely same, I really want to get into it. I already tried to do so, but for some reason I was out of luck finding good resources for learning.
Can someone recommend some great resources for beginners?
TBH, would like a free resource. :D
Beside that I want to get around HashiCorp tools, especially Vault for storing and Consul for service discovery.
I'm going to learn it as well, a fair few jobs seems to note Docker as a requirement, or suggestion. I've never used containers before, so it should be fun.
A bit meta, and will probably get lost, but I would strongly encourage anyone answering this question to also include: "and this is how I plan to do it"
Firstly, because if you don't have some kind of plan, there's no hope, so try and work out what that is now; second, you'll give people who already know that skill a way to advise you.
I want to be more socially active in 2017. I graduated in 2013 , got a dev job and since then been living in a virtual world w/o any interaction whatsoever with people outside of professional environment.
In 2017, I want to break this trance, get to know the real world and probably get a girlfriend. :)
One of the better ways to do this is to to take the lead. Be a leader, not a follower. That can be interpreted multiple ways: organizing events, inviting people to things, asking what you would like, not what you "want", even taking dance lessons (something like Salsa), not caring about the outcome so much...
Some wisdom from a book from the Ask HN Books thread [1]
> - choose carefully what you give a f*ck about, but when you do, do it right
> - there will always be problems, deal with them and move on, it's your own responsibility.
> - the constant pursuit of a positive experience is in itself a negative experience, acceptance of a negative experience is a positive experience
No need to be a leader. Just to be comfortable with yourself, being able to enjoy things that can be enjoyed socially is enough to attract other people. Salsa lessons are good advice. Also a wine tasting course! There you can follow others and be happy too.
I spend thousands of hours learning Japanese. If you not live in Japan, it is a totally waste of time. My wife is from Japan, why I learned the language. But because of still living in Germany, I regret learning it. I could learn so many other things.
I'd like to learn Japanese. I'm hoping to travel there in June after I graduate from college, and I figure it would help if I could talk to people (or try, at least).
I'd also like to get better at Rust. I've written a few small projects in it at hackathons, but I've yet to get to the point where I'm comfortable writing in it. I'd like to get close to that.
I'm taking a class prior to graduation in abstract algebra, which I'm excited for. I'm hoping to be able to continue to learn in this after graduating, I've thought about continuing to take math classes at a college by Seattle after I start working.
I'm hoping to lean more about machine learning and how it can be applied to problems, a project that I'm hoping to do in advancement of this is to learn to predict cloud cover in some future interval based on the history of some things (maybe pressure and current cloud cover?)
Couple of quick pointers wrt Japanese. First, human languages take a long time to get good at. If we think that children learn faster than adults (which I think is not actually true, but it's a widely held belief), then it will take you 5 years to talk like a 5 year old, 10 years to talk like a 10 year old and 15-20 years to talk like an adult -- minimum. If you study very effectively, I think you can double this speed, but no more than that. Adult level proficiency is 15-20,000 word families. Ignore anything that tells you that you can be proficient with 2,000 words of vocabulary (even a 4 year old has more than that!)
Specific advice about Japanese: forget polite form and learn plain form from the beginning. If you are in dire need of sounding polite, just put "desu" at the end of every sentence. It will be grammatically incorrect, but nobody will fault you for it (it's what children often do). The mapping from plain form to polite form makes total sense. The opposite is not true and complex sentences require that you master plain form, so this will reduce your effort considerably.
Also, learn to read. This is especially true if you are coming to Japan. Hiragana and katakana will take you a few weeks. Try to learn at least 100-200 of the most common kanji as well. This will take you only a month or so and it will make your life dramatically easier.
Learn full sentences and ignore grammar for the most part. I got to reasonable conversational level simply by memorising the example sentences in Tae Kim's grammar guide: http://www.guidetojapanese.org/learn/grammar. Use spaced repetition to help speed it up.
Get the JLPT N5 and N4 vocabulary lists and memorise them. Even N3 is useful. These are words that map pretty much directly with English without a lot of nuance, so memorising them is efficient. Otherwise learn vocabulary in context by reading. I recommend manga because it will give you conversational Japanese. There is no description in comic books -- only conversation. They are perfect.
Finally, get a phrase book and memorise some set phrases -- just to help you a long. Keep in mind, though, that a lot of phrases are regional and wherever you are going, they might say things a bit differently. Generally speaking you should be fine if you stick with common phrases, though.
> If we think that children learn faster than adults (which I think is not actually true, but it's a widely held belief),
Anecdotally, I saw my two children learn a foreign language in exactly the same place and over the same time as me. They learnt it to fluency in the same time I could barely communicate.
Actually google 'scholarly articles on how children learn languages'. It's probably not just anecdotal.
> Otherwise learn vocabulary in context by reading.
I really enjoyed -- and benefited from -- "The Japanese Reader Collection". There's about 5 thin volumes available from Amazon. They're basically Japanese children's stories, written in Kanji with Furigana and lots of annotations. Every word and sentence is explained and translated to English.
I started off by simply reading the Furigana at normal reading speed, without caring about reading comprehension. This greatly helped with my kana reading. It especially helped me learn to cope with the lack of spaces in Japanese. Then I started to focus on the meaning. And now that I've memorized most the JLPT Level 5 Kanji, I'm starting to focus on recognizing them in the context of these stories.
I agree that plain form is important. Also your thinking on how children is learning. But, grammar is important. Memorising phrases only get me to be able to use phrases in a very specific situation. Once I am able to dissect a sentence and analyse how it's constructed, I am able to make similar form of sentences for a different purpose.
You wouldn't happen to live in Atlanta, would you? (I know that's a long shot...)
Outside of work I program in Rust almost exclusively, and would love to hack on something with others.
I studied Japanese in high school, and I taught English in Hokkaido for a year, but I've since gotten rusty with my Japanese. I would love a study/accountability partner to pick it back up again.
4chan's /int/ has a daily thread with many ressources for learning Japanese. The basic recommendation is to get Anki and the Core 6k deck and the deck for the Dictionary of Japanese grammar. Grind those decks until you can read simple texts, then read as much as you can. The NHK for example provides news in simple Japanese http://www3.nhk.or.jp/news/easy/.
The Yamasa school there is a great little find. The prices are very reasonable and they do everything they can to make it foreigner friendly, ie providing housing with thick walls, simple leases and things.
Would recommend SILAC program which is mostly talking, even though I did the more formal class route, SILAC is probably more effective I think after learning more about how learning works
I live in Tokyo. Will treat you to beer and yakitori if you make it.
Good luck with Japanese. People often describe it as one of the hardest languages in the world, and you can understand why: three written systems and grammar and vocabulary that changes based on whom you're speaking to and what it's about. But once you learn the rules (and there are many), there are few exceptions compared to English. So it's a lot of work on the front-end. Don't let that discourage you.
Fluent Forever [0] and its corresponding book is also a great resource. Tons of overlap with Benny's stuff with the main addition of an upfront study of the phonetics of a language to get that barrier to learning out of the way.
wrt Japanese, get comfortable with the difference between transitive and intransitive verbs. Verbs in English are often both (ambitransitive) and that makes you (or maybe it's just me) unaware of the difference. It took me more time than I care to specify to sort that out in my head!
And be confident! Japanese people are generally supportive and will appreciate your effort to use the language, no matter how successful it is.
I want to write a real, hand-holding example for using GenStage and Elixir for a real tangible feature.
The official documentation sucks and does nothing to illustrate how to use it in a real setting. I've tried to understand what it does and how it works about once a month for the past four months but I still don't get it.
Hopefully I can understand it soon, and further cement my understanding by writing a real example for people to learn from. It sounds very powerful and useful but damned if I know how to use it lol.
Confidence - never thought it would be an issue when you're leading your own company. I quit a great job on the east coast in 2012, went to grad school and moved to Silicon Valley after graduation (2014) to work on my startup. I've been learning and building constantly for the past 4 years. I would rather my work speak for me, so I don't draw any attention to what I'm doing or to myself until I have great results to report. I don't have a co-founder because the people I would ask are not financially independent enough to take the risk without a salary. I'd rather make some money and hire them with as much equity as they can handle.
My first project stalled because of poor architectural decisions that overlapped with not-yet-profitable product-market fit (and too much networking instead of product work) and a baby. I learned that lesson and turned into a hermit to rewrite it completely - the market is there, but not immediately lucrative. I'm also writing something that makes money first. I'm hammering day and night with nothing else in my life but my family and the product. My second project is written in GO, wonderfully cheap to run, and about to be ready for launch. Not sure how to turn on that swagger button yet.
Selling to customers is one thing, but how/when do I start selling to investors and employees when few people know me in SV because I've been hammering instead of networking for almost 2 years straight.
I was in the mindset of letting my work speak for me. Then I quickly learned why technologically-inferior products can often get more sales than other superior products in my field(b2b).
Without accurate product presentation or inspiring sales effort, I can watch companies with clueless devs outbid my product with their all-powerful sales people.
My tip for selling a product you are perhaps too close to is to explain it to ordinary people.
I mean any random person, your Dad or Grandmother. Work out in layman's terms what problems your products solves, and how it is going to be a business.
Investors and even customers may not be at all interested in how GO is very quick at garbage collection...They want to know how your product will make them richer. Practice on laymen, practice a lot
Lol - welcome to the club! (the confidence) find yourself a good business coach. You may burn through a few but that's all part of it.
I can relate to your comments, I was there about 18 months ago. You would be surprised just how many people talk about confidence (or lack thereof). Also, look for a good mentoring group. Find people that are on the same path (family / business / financial).
I'm in a similar position. We should create a group for the subset of solo founders who are inclined toward product and not sales. It is a tough position to be in for sure (though I imagine the inverse has its own problems).
I'm a solo founder (of a slow growing 'lifestyle' business, not a fast growing startup) who is inclined towards product. The trick is to build a product that requires minimal sales effort.
My app costs 40€, and is geared towards individual users. You don't need a sales team to sell a 40€ app -- just a few emails to announce your product on the right mailing list, and a few cold emails to key influencers.
And a lot of patience, because unless you are very lucky, noone will buy version 1.0.
I have that planned for a long time. I've been making progress in recursive thinking and thus compilation and interpretation last year (thanks to a prolog book). I may attempt the LLVM thing in 2017. This or a bootstrapped forth, x86 64 or maybe AARCH64.
I'm in that path, but instead of python I want a ML/Python/Relational language.
I know alot now, yet I'm struggling in some areas. For example, how effective surface a FFI for the language 9I'm with F# so is kind of easy, but how do that in swift/rust where reflection/dynamic calls are not easy?)
The more you practice, the more you can, the more you want to, the more you enjoy it, the less it tires you.”
― Robert A. Heinlein, The Cat Who Walks Through Walls
> Digital Electronics using [1] Operating Systems using ...
also, in case you are not aware of it, there is always the nand2tetris [http://www.nand2tetris.org/] thingy (currently running on coursera btw). the book is also pretty good imho.
thanks signa11 for the nand2tetris reminder. I have worked through that book and it is really awesome. Worth the time and effort for anyone inclined. I had posted my review on Amazon as well. [1]
I think I should enroll for the Coursera thingy and have at least 1 certificate in my kitty ;-)
Thanks for posting the link. I just signed up for the course. Always wanted to learn how simple logic gates end up become all purpose CPU's. I've always thought that someday we'll have same concepts in a cell which becomes a full turing machine and anyone can grow it.
Thanks, this on a first skim, looks a very detailed course. And while we are at it, there is also this post on HN on the front page, which contains more resources for learning about OS. https://news.ycombinator.com/item?id=13258063
The majority of information out there, including tutorials and blog articles about others' successful deployments, comes in the form of very high-level overviews. Everything I've found is an introduction to getting a basic docker instance running. There is very little useful information out there as to how to run a proper multi-host cluster.
There is core Docker. Tack on docker-machine, docker-compose, Swarm, and the dozens of 3rd-party cluster management abstractions such as Rancher - and the intensity of the headache never stops growing.
It sounds wonderful, but there is so much to learn to be able to tackle a full production stack. It's one thing to successfully launch a working cluster after hours of manual tinkering. It's a separate beast altogether to fully automate setting up a new cluster by issuing a single command, taking into account consistent configuration of: secure networking, persistent volumes with backups, deployment of container configuration and VCS codebases (ex: nginx vhosts and your code itself), etc.
My goal is to set up an entire project in such a way that there is a single suite of automation that can deploy all environments: development VM, staging, and production.
If you need any help, you are free to ping me with any queries at the email in my profile. My authority on the subject: having written a book [1] and a Udemy course [2]
[1]: https://www.packtpub.com/virtualization-and-cloud/orchestrat... [2]: https://www.udemy.com/mastering-docker/
I recently migrated a whole microservice stack of a half dozen services to OpenID connect and Kubernetes in two weeks. This is with about a year of casual familiarity and playing with Kubernetes, and the same migration to OpenID connect would have easily taken me 5 or 6 weeks to do in Amazon ECS, which is what we currently use in production.
Not to mention I can run a cluster on my three computers at home at no extra charge beyond electricity and play around for free. (See, dear, I'm not a hoarder!)
Setting up a cluster is even simpler now with tools like kops and kubeadm. Or just get one provisioned for you by Google or Red Hat with GKE or OpenShift.
I would highly recommend at the very least making it one of the solutions you try.
Yes, at least for development, setting up the entire environment must be a one-command execution. Every new developer to a team will obviously need to progressively learn the entire stack, but they should be up and running after a single VCS checkout and installation command.
I expect staging and production to be a perfect replica of the same environment developers use. As to how realistic it is to "launch the entire production cluster with a single command", with remote server provisioning, IP allocations, multiple hosts for various load-balanced pools, etc... I'll have to see when that time comes.
[1] https://www.terraform.io/
Beside that I want to get around HashiCorp tools, especially Vault for storing and Consul for service discovery.
Firstly, because if you don't have some kind of plan, there's no hope, so try and work out what that is now; second, you'll give people who already know that skill a way to advise you.
One of the better ways to do this is to to take the lead. Be a leader, not a follower. That can be interpreted multiple ways: organizing events, inviting people to things, asking what you would like, not what you "want", even taking dance lessons (something like Salsa), not caring about the outcome so much...
Some wisdom from a book from the Ask HN Books thread [1]
> - choose carefully what you give a f*ck about, but when you do, do it right
> - there will always be problems, deal with them and move on, it's your own responsibility.
> - the constant pursuit of a positive experience is in itself a negative experience, acceptance of a negative experience is a positive experience
Also, Systems Not Goals
http://jamesclear.com/goals-systems
[1] https://news.ycombinator.com/item?id=13243705
I'd also like to get better at Rust. I've written a few small projects in it at hackathons, but I've yet to get to the point where I'm comfortable writing in it. I'd like to get close to that.
I'm taking a class prior to graduation in abstract algebra, which I'm excited for. I'm hoping to be able to continue to learn in this after graduating, I've thought about continuing to take math classes at a college by Seattle after I start working.
I'm hoping to lean more about machine learning and how it can be applied to problems, a project that I'm hoping to do in advancement of this is to learn to predict cloud cover in some future interval based on the history of some things (maybe pressure and current cloud cover?)
Specific advice about Japanese: forget polite form and learn plain form from the beginning. If you are in dire need of sounding polite, just put "desu" at the end of every sentence. It will be grammatically incorrect, but nobody will fault you for it (it's what children often do). The mapping from plain form to polite form makes total sense. The opposite is not true and complex sentences require that you master plain form, so this will reduce your effort considerably.
Also, learn to read. This is especially true if you are coming to Japan. Hiragana and katakana will take you a few weeks. Try to learn at least 100-200 of the most common kanji as well. This will take you only a month or so and it will make your life dramatically easier.
Learn full sentences and ignore grammar for the most part. I got to reasonable conversational level simply by memorising the example sentences in Tae Kim's grammar guide: http://www.guidetojapanese.org/learn/grammar. Use spaced repetition to help speed it up.
Get the JLPT N5 and N4 vocabulary lists and memorise them. Even N3 is useful. These are words that map pretty much directly with English without a lot of nuance, so memorising them is efficient. Otherwise learn vocabulary in context by reading. I recommend manga because it will give you conversational Japanese. There is no description in comic books -- only conversation. They are perfect.
Finally, get a phrase book and memorise some set phrases -- just to help you a long. Keep in mind, though, that a lot of phrases are regional and wherever you are going, they might say things a bit differently. Generally speaking you should be fine if you stick with common phrases, though.
I really enjoyed -- and benefited from -- "The Japanese Reader Collection". There's about 5 thin volumes available from Amazon. They're basically Japanese children's stories, written in Kanji with Furigana and lots of annotations. Every word and sentence is explained and translated to English.
I started off by simply reading the Furigana at normal reading speed, without caring about reading comprehension. This greatly helped with my kana reading. It especially helped me learn to cope with the lack of spaces in Japanese. Then I started to focus on the meaning. And now that I've memorized most the JLPT Level 5 Kanji, I'm starting to focus on recognizing them in the context of these stories.
Outside of work I program in Rust almost exclusively, and would love to hack on something with others.
I studied Japanese in high school, and I taught English in Hokkaido for a year, but I've since gotten rusty with my Japanese. I would love a study/accountability partner to pick it back up again.
Would recommend SILAC program which is mostly talking, even though I did the more formal class route, SILAC is probably more effective I think after learning more about how learning works
Good luck with Japanese. People often describe it as one of the hardest languages in the world, and you can understand why: three written systems and grammar and vocabulary that changes based on whom you're speaking to and what it's about. But once you learn the rules (and there are many), there are few exceptions compared to English. So it's a lot of work on the front-end. Don't let that discourage you.
http://www.fluentin3months.com/
He's learned Japanese (and like ten other languages), but his main value-add is general language learning advice.
[0] https://fluent-forever.com/
And be confident! Japanese people are generally supportive and will appreciate your effort to use the language, no matter how successful it is.
The official documentation sucks and does nothing to illustrate how to use it in a real setting. I've tried to understand what it does and how it works about once a month for the past four months but I still don't get it.
http://elixir-lang.org/blog/2016/07/14/announcing-genstage/
Hopefully I can understand it soon, and further cement my understanding by writing a real example for people to learn from. It sounds very powerful and useful but damned if I know how to use it lol.
[1] http://teamon.eu/2016/tuning-elixir-genstage-flow-pipeline-p...
My first project stalled because of poor architectural decisions that overlapped with not-yet-profitable product-market fit (and too much networking instead of product work) and a baby. I learned that lesson and turned into a hermit to rewrite it completely - the market is there, but not immediately lucrative. I'm also writing something that makes money first. I'm hammering day and night with nothing else in my life but my family and the product. My second project is written in GO, wonderfully cheap to run, and about to be ready for launch. Not sure how to turn on that swagger button yet.
Selling to customers is one thing, but how/when do I start selling to investors and employees when few people know me in SV because I've been hammering instead of networking for almost 2 years straight.
I mean any random person, your Dad or Grandmother. Work out in layman's terms what problems your products solves, and how it is going to be a business.
Investors and even customers may not be at all interested in how GO is very quick at garbage collection...They want to know how your product will make them richer. Practice on laymen, practice a lot
I can relate to your comments, I was there about 18 months ago. You would be surprised just how many people talk about confidence (or lack thereof). Also, look for a good mentoring group. Find people that are on the same path (family / business / financial).
If I can help, my email is in my profile.
My app costs 40€, and is geared towards individual users. You don't need a sales team to sell a 40€ app -- just a few emails to announce your product on the right mailing list, and a few cold emails to key influencers.
And a lot of patience, because unless you are very lucky, noone will buy version 1.0.
I'd like to:
-Build a lisp that targets LLVM IR
-Build an HDL out of lisp that can be compiled into a simulation, as well as be compiled to a netlist for synthesis.
-Build a testbench toolkit out of that same lisp.
Do you have a blog ?
I know alot now, yet I'm struggling in some areas. For example, how effective surface a FFI for the language 9I'm with F# so is kind of easy, but how do that in swift/rust where reflection/dynamic calls are not easy?)
Deleted Comment
Digital Electronics using [1] Operating Systems using [2] Functional Data Structures using [3] Graphics Algorithms [4]
Any recommendations for these subjects sincerely appreciated. Thanks.
[1] https://www.amazon.com/Digital-Design-Computer-Architecture-... [2] https://www.amazon.com/Modern-Operating-Systems-Andrew-Tanen... [3] https://www.amazon.com/Purely-Functional-Structures-Chris-Ok... [4] https://www.amazon.com/Graphics-Visualization-Principles-Alg...
The more you practice, the more you can, the more you want to, the more you enjoy it, the less it tires you.” ― Robert A. Heinlein, The Cat Who Walks Through Walls
also, in case you are not aware of it, there is always the nand2tetris [http://www.nand2tetris.org/] thingy (currently running on coursera btw). the book is also pretty good imho.
I think I should enroll for the Coursera thingy and have at least 1 certificate in my kitty ;-)
[1] https://www.amazon.com/gp/customer-reviews/RZ4ME4QH22JML/ref...