What are you learning right now? My last side project was recently derailed and I am curious to hear what other people are spending their time studying/learning about.
I read “Effective Go”[0], but what really helps me is browsing through the sources of various Go projects and libs in Github. I also keep a tab of Go’s packages docs open [1]. And of course there’s StackOverflow. In general I prefer learning from source code rather than books.
Although the question is not directed at me, I've found exercise websites to be extremely valuable. I value learning/gathering experience by reading code, but I find the hands-on approach more stimulating.
My favourite resource right now is exercism.io. Although some tracks have too much of a high students/mentors ratio to be effective/practical in mentored mode (or to activate the mode at all), going through all the exercises (and community solution) is still a very effective way to learn a language (along with a textbook, of course).
Codewars is another interesting idea, however, it's much more grounded on computer science, which is not very well suited to just learning a language.
Exploring Elixir & Phoenix. Solved some AOC & exercism problems with it, and wrote a BF compiler. So far, enjoying every bit of it. The language itself is beautiful! Codes are available on my Github[1] account :).
I thought it will be easy to implement and also a bit of nostalgia.
I was a 2nd/3rd semester CS student at that time when I saw BF code for the first time on a Competitive programming platform named SPOJ[0]. Later, I found it again on a code golfing website[1].
I thought it would be fun to learn as the language only had 8 commands! I learned it and wrote a tutorial[2] on my native language for my best friend so that we could have some fun together with it :D
I’ve been doing the same in fact. I’ve always had a soft spot for Erlang (and now Elixir). I wrote a pretty large Erlang app back in college for a distributed system in a Biology research project.
I’ve been enjoying working with it - taking a little break but definitely enjoying Phoenix as well. It’s been refreshing to work through a “big” web framework that feels straightforward to reason about.
Computer networking. I’m reading through TCP/IP illustrated.
Also learning about Linux. I used macOS for about a year and thought that I knew “Linux” but now I’m seeing how far the rabbit hole goes. I installed arch linux and am currently just customizing it and immersing myself in the community. Eventually I’ll pick up a systems or operating systems book.
I learnt programming mainly through various scripting languages, some of which had some relatively simple visual output available, which I personally found invaluable for learning and visualizing.
I realized that better visual output was the main thing holding me back from doing more in C since there are so many options, often complex, involving much boilerplate. So my mini project is essentially exploring the simplest, most minimal possible ways of drawing pixels on the screen in Linux.
So far tried fbdev (but doesn't work well with X), now playing with XCB.
Out of interest, why would people laugh at someone learning C? I know plenty of people using C in all manner of domains, choosing it over C++ or Rust for fair and sensible reasons - I'm not a C person myself, but it certainly seems extremely useful to have in the toolkit!
>choosing it over C++ or Rust for fair and sensible reasons
I don't think such reasons exist.
I don't think C/C++ should be used when superior alternatives exist (Rust). It's like smoking; you're just hurting yourself.
Unless you're being like the programming equivalent of a steam engine enthusiast or a historian. (In a world where most of the industry is still using steam engines cuz we're in too deep and must ride the inertial tide for at least a few decades.)
There are plenty of reasons to still learn C even if better alternatives exist for most new projects. There’s so much important software out there in C (and C++), for example the Linux kernel.
I've noticed this a lot on hackernews, there is an apprehesion to say certain things as though there is some sort of pedigree or gating when discussing topics, especially when it's personal...there isn't.
I want to learn C not (only) because I think it's useful, but because I think I might like it. I have a particular interpreted language that I like, enjoy and know inside out, now I want to know a compiled one in a similar way.
To answer your question: I get the impression from various tech news on "hot new languages" that C is the incumbent systems language that people put up with but don't really love, and yet I want to try and love it. I've developed a taste for minimalism, simplicity and a degree of brevity in programming, I have a feeling I might find C more suited to me than C++, Rust, Go, Java etc for this reason despite the lack of "modern" features.
I started coding 10 years ago (damn I just figured that...) learning C at my engineering school for 2 years. Never had to use it ever since (mostly working front-end and webAPIs) but I'm still glad I studied it to learn the programming foundations.
I would probably choose Rust or Go today though.
I suppose because of the perception that many programmers already know C. Which is true, but only some fraction know it well, which is far more important in C than in most modern languages.
> So far tried fbdev (but doesn't work well with X), now playing with XCB.
Another idea would be to use SDL which essentially provides functionality to make windows, draw pixels and handle input/output. If you do not want to use any library at all and do not mind low "resolution", you could use your terminal as window and regard characters as pixels. Sure, there is the curses library to abstract away different terminals, but if you do not care about platform independence you can just directly write escape sequences to the terminal.
I was indeed trying to avoid the big libraries, since this is just for personal use I don't care about cross platform which allows me to escape these potentially - I may well end up back at the SDL + OpenGL level later when features or performance are a concern.
My current goal is to find a balance of least dependencies and least boilerplate to draw a pixel buffer so i can play with C, nothing more. Once I can do that without lots of fluf then i may be attracted to more advanced or complex methods later on when performance is desirable.
I have done some visual things with the console and printf alone in the past which gave me a taste of C, but now I want some real pixels :)
You may want to try raylib. It's written by a teacher who uses it in the classroom and geared for this kind of "let me code games in C but with only one dependency" goal. It does more than you need but that's a common theme of useful libraries.
My goal is to attain a balance of least dependencies and boilerplate. From what I've read so far it seems that implementing xclient protocols directly would require considerably more boilerplate than using XCB, (and my understanding is that XCB is just that: a generic xclient implementation and nothing more).
Please do elaborate if I'm wrong though! I would be delighted if it's possible to implement a simple subset minimally purely for displaying a pixel buffer without XCB?
I'm not necessarily recommending you go this route in general, but this is a fantastically actionable article for going deep on various Linux graphics APIs including X11 right on the socket: http://betteros.org/tut/graphics1.php
Yes, I really like this article, I used it to get going with fbdev before I moved on to XCB, but only skimmed the remainder since it was avoiding libraries completely it was getting a little verbose (although on second thought DRM doesn't look too bad, and also I missed libdrm should probably see how much that can do).
Just realized now revisiting this that the author also showed how to directly implement xclient! the example is rather large confirming my suspicions RE parent comments.
I meant using Xlib, the client library for X11, which is going to always be available if you are using X! You can of course implement the library parts yourself, but that is more boilerplate.
XCB is actually lower level than xlib, in that sense it is more directly using X11 because unlike xlib it only really implements the client protocol and wraps it up into an interface.
I was however planning on trying out Xlib anyway on my path of exploration from simplest/lowest level to complex/higher level libraries: fbdev, DRM < DirectFB, libdrm < XCB < Xlib < SDL et al.
Have you tried A
allegro5? Any take on which is better? I've tried both, but I'm too much of a newbie to have a reasonable opinion. Thinking of getting back on to one of the two.
I've done a lot of C programming over the years and I still consider it one of the most elegant languages I've had the opportunity to work with. With the right skillset, you can be as productive as a programmer of any other language or system.
And it's great to see where some of the things we take for granted in programming, come from.
If you want to draw pixels, give Cairo a try. It's fun to use!
Nice to hear from people still enthusiastic about C :)
Thanks for the suggestion, I hadn't considered Cairo, for some reason I thought it was only for SVG, maybe from it's use in Firefox. I will try it out once I get out of XCB territory.
How much "better"/different is flutter compared to native Android development in your experience?
I am currently being forced to do learn native Android development with Java and hate every second of it.
This is more a matter of taste than anything else.
Compared to the Java I would say it's much cleaner (Personally I don't care for Java). Compared to Kotlin, it is more different. Flutter uses a declarative programming model so it is conceptually very different in terms of how you think about an application. There are a lot of nice things about this model for basic applications, but things get complicated for certain applications (AR/3d for instance).
Also it is also open sourced (BSD) so the fear of Google dropping it is not as grave as the company's proprietary 1p product offerings.
- The tooling is excellent -- you can get a basic app running without much fuss; use VScode and the right plugins are you're golden.
- It's "Widgets All The Way Down" -- just wrap your widgets (objects) to add functionality/positioning/etc (it might seem like you're in "nesting hell" but it's actually quite intuitive and you don't need to manage tons of separate Components across tons of files which is nice).
- The layout engine is actually well thought out -- it might take a while to get used to it (it's not like CSS there are no negative margins for example) but once you do it's intuitive and easy to get layouts built fast. Remember everything is a Widget and that's ok, from your app root object to your button.
- It has the best parts of React -- Flutter's "setState" works much in the same way and only updates Widgets which need to etc.
- It's a "game engine built for mobile dev"; you hear this statement a lot and it's really what makes it's powerful. It renders super fast and animations/tweens/etc are easy to implement allowing you to design UI elements the way you want (hence my Flash comparison lol).
- At some point you will need to manage state, save yourself the search and just settle w/ BLOC, again there's plugins to help with the boilerplate, i.e. code-generation (which is also a thing and actually helpful).
- The package/ecosystem (pub.dev) is pretty young but the core stuff you'll need is all there. The main packages I've settled on are: Moor (sqlite), Bloc (state), Chooper (Api client) and JsonSerializer. UI packages are pretty hit-miss but you'll probably just write your own anyway.
- The SDK has tons of prebuilt Widgets that are actually useful and cover most of what you need to make a modern UI, and yes you can make a "native" Android/iOS UI look and feel if you want. I recommend watching the Flutter's Youtube channel series "Widget of the Week".
- Dart is a fine language, I love the way it's implemented async/await for example, should be no problem picking up if you have Javascript/Java experience. The great benefit is that it's only being used by Flutter so there's a nice symbiosis between the two with a strong focus on making a language geared towards interactive/ui/frontend work.
I genuinely doubt they'll drop it in the foreseeable future. But every if they do, it's a mature project at this stage and I believe the community is strong enough to support it without Google back (even if that means a fork for licensing reasons).
I'm currently trying to get into game development and Rust so I'm trying out Amethyst: https://book.amethyst.rs/master/. I wanted to follow along with a roguelike game tutorial for Rust, but there was a problem. I would love to make some games that you can play co-op with some friends as I feel like there aren't enough games like it out there.
Nice! I just did a simple roguelike in Rust a few months ago. I somewhat regret not looking at what it would take to make is work with wasm from the beginning, though.
Had similar intentions half a year ago, it really clicked for me after watching the linear dynamical systems lecture by Boyd. How rank of a matrix, matrix norm and singular values relate was an eye opener. Thereafter it was easy to connect singular values and the stability/robustness of a system intuitively. Great teacher, I can only recommend :)
If you really have no clue about anything, then I might be able to help a tiny bit.
Get basic hardware knowledge by doing nand2tetris [1]. It's about building a computer from the transistor up, all the way until you create your own tetris game.
The Hardware Hacker: Adventures in Making and Breaking Hardware (manufacturing hardware in Shenzen) [2]
This guy shows a cool couple of YouTube videos on hacking iPhones in Shenzen [3]. Hacking as in exploring and tweaking, not as in breaking in.
Thanks, I have ordered the book and plan to start the nand2tetris. I really loved the way the guy explained the HDL. Very clear, I look forward to learning it and doing a lot with it.
Systems Thinking, mainly through reading Russell Ackoff's books. The Art of Problem Solving is good, Turning Learning Right Side Up is eye-opening (and definitely one of my favorite books lately) and currently reading Redesigning Society. Highly recommended.
I started it couple of months ago, but couldn't get past the first few chapters. It was too dry for my taste. Even though she's a brilliant scientist (I'd recommend checking her classic The Limit to Growth), it seemed like the earlier resources about the topic are much better explained rather than the newer stuff.
It's not Germany, but if you happen to be from the US the Dutch American Friendship Treaty is worth a look. Relatively attainable bar, especially for people in tech.
Had never heard of drawabox. Loved their description[0]. Resonated so deeply with me.
> Drawabox's goal is to provide beginners with a strong foundation, and to equip them with the things a lot of other courses and tutorials tend to take for granted.
> It is not going to make you a professional on its own, but it will teach you how to practice, how to use the resources available to you on the internet, and equip you with the tools and skills you need to take advantage of them
I've been trying to build real systems with Microsoft's Durable Functions. I've been utterly fascinated by the patterns that have emerged on some of them.
Watchdog Pattern: A orchestration needs to succeed. A watchdog entity checks up on it to make sure that failures are reported and dealt with appropriately (ie, refunding a payment if it fails catastrophically)
Circuit Breakers: Polly has their own implementation, but I found it easy enough to implement my own (don’t recommend in production, just use Polly)
No database: it’s a bit slow to get things done, but it’s amazing to create entities that don’t need to store state in a database. Paired with the watch dog pattern or preloading, you can have entities running “in memory” which may be faster than a dB lookup or the data could be projected to a db for analysis. I’ve been exploring this most recently.
Aggregate entities: these just count things, or store references to important entities that they count. This works amazingly well instead of COUNT DISTINCT queries.
I built an expense tracker app using Flutter a while ago that I've been using for a year. It has really helped me in understanding where my money is going. To build it quick, it uses Google Sheets as a backend and BigQuery for running sql queries over the data. While everything works, it's quite slow so I'm looking at building the API server with rust warp and sqlite to store all transactions.
How easy are you using flutter to use so far? I have been thinking about learning about flutter for a long time, but still unsure about how much support is there in terms of 3rd party libraries, and whether that can hinder development at some point.
Clojure!
I played around with common lisp a bit a some months ago, though I basically used none of the lisp specific features like macros.
After reading a few blog posts on functional programming and "the lisp way" I have decided to buy a book on Clojure. My end goal (for now) is to build a basic website with a backend.
Fulcro is huge and might be a lot if you're just starting to learn Clojure too. IMO Luminus is a pretty nice option that lets you start simple and add more complicated pieces as you require.
I've been meaning to try and learn Lojban for quite a while. Now that almost all of my distractions are shut down for the forseeable future, maybe I'll be able to make some progress. I have acquired copies of "English Through Pictures" by I. A. Richards, and I thought I'd do something similar, only for Lojban. If I do make significant progress with that, maybe I'll post it somewhere.
I am learning how to write. After seeing a few people with blog, I realize the importance of writing. It makes you think clearer and understand a subject deeper.
Honestly, there's not much to learn there, you just need regular exercise to become better and better at it.
May I suggest setting yourself a fixed schedule (let's say, one article published every two weeks or so) and sticking through it? Your initial articles will probably suck, but you'll gradually improve in the upcoming months.
1. take notes on a topic that has continuing relevance for you (like, you're learning something over a few days or weeks)
2. wait for your project to hit a milestone or for your notes to hit a critical mass
3. reorder your notes into sections, discard bad ones, and flesh them out with text
4. pick the best line, that's your title
5. print it out and leave it under your pillow
6. edit the next day
7. publish
Friend of mine created a parameterised font for his master thesis. We hooked it up to a face expression sentiment analyser (pre trained DNN). It works in the browser with your webcam, better to use a laptop or pc :)
I bought Omnisphere and a 25-key MIDI controller yesterday. I wanted for years to learn digital music production, but didn’t because I was busy. This quarantine gave me the chance to dedicate real time to it.
What production software are you trying? I bought a seinberg audio interface that came with cubase ai, so I've been playing with that. Cubase has come a long way - I remember when it was new software.
Even before Cubase I remember playing with trackers like fast tracker 2, so I also bought a copy of Renoise. If you are a programmer you might like making music with a tracker over a traditional DAW.
I bought Reaper after using its unlimited free version for years. My background is voiceover and podcast recording and Reaper is good for that. I'm sure it has limits but I haven't reached them yet.
It has a macro interface for scripting and many of their first-class plugins can bee configured with Javascript.
I'm learning pentesting for fun. I'm mainly active on hackthebox.eu. I might get my OSCP one day, for fun as well. I do still think the certificate comes in handy despite the fact that I'm applying for web developer positions at the moment. I'm happy I'm learning this though, I'm already noticing that I develop differently, because the little I've learned about pentesting taught me that true cyber criminals are hungry to break into your systems, and they only need one shot, one small misconfiguration and they're in. Or at least, that's how it works on hackthebox ^^
I'm also doing some OSINT (open-source intelligence) by simply giving myself assignments. The assignments on hackthebox.eu were not all that great and OSINT is one of the few disciplines that you can do in the real world without permission, since it's all about accessing public data.
I flip back and forth between the 2 disciplines. I don't know why it attracts me. It just does. I also notice that learning this stuff is completely different from programming. And to an extent it's one of the few ways that gives me the feeling that I'm "living and moving around" in cyberspace as opposed to "constructing" (i.e. programming) in cyberspace. I guess typing cd and ls on a lot of Linux and Windows practice boxes give that effect. And the cool thing is, you learn a lot quicker about all kinds of services. For example, I never knew about rsyslog, logger or the mqtt protocol (Linux boxes). I never knew about Kerberos, Active Directory and smb (Windows boxes).
I'm happy I did some master courses in cyber security beforehand. While I'm really new to a lot of things, I've gained a lot of what psychologist call crystalized intelligence in this area. So it's all quite easy(ish) to understand. Things get harder when I have to reverse engineer binaries or debug in x64 assembly. It's still doable though.
I am also learning pentesting, for the cert and to have some methodology in my job ( somewhere between devops/compliance/security). First week into PWK course, I used hackthebox and thecybermentor's practical pentesting course to build up confidence to attempt getting that long wanted OSCP title.
I've heard that OSCP is a lot more CVE based than hackthebox. It apparently also has a lot more rabbit holes compared to hackthebox. I haven't checked out thecybermentor yet, but a friend of mine has and he seemed to like it as well.
It is more about identifying CVEs and exploits than HTB is, but there is still a good amount of finding misconfigurations, like HTB has. OSCP helps you build a methodology and a mindset for pentesting, and finding CVEs with existing exploits makes that a little easier than HTB, where you are not under time pressure. HTB would be my goto to prep for OSCP, I wish I'd found it before.
Algorithms, wrote just one in the last two years and I know that I won't write many in the next job, but you know, you have to study it for the interview.
905 comments
[ 0.22 ms ] story [ 384 ms ] thread0 - https://golang.org/doc/effective_go.html 1 - https://golang.org/pkg/
My favourite resource right now is exercism.io. Although some tracks have too much of a high students/mentors ratio to be effective/practical in mentored mode (or to activate the mode at all), going through all the exercises (and community solution) is still a very effective way to learn a language (along with a textbook, of course).
Codewars is another interesting idea, however, it's much more grounded on computer science, which is not very well suited to just learning a language.
It seems like after the pandemic there will be a lot of new gophers
[0] https://alexedwards.net
[1] https://lets-go.alexedwards.net/
[1] https://github.com/wasi0013/
I was a 2nd/3rd semester CS student at that time when I saw BF code for the first time on a Competitive programming platform named SPOJ[0]. Later, I found it again on a code golfing website[1].
I thought it would be fun to learn as the language only had 8 commands! I learned it and wrote a tutorial[2] on my native language for my best friend so that we could have some fun together with it :D
[0] http://spoj.com/
[1] http://golf.shinh.org/
[2] https://github.com/wasi0013/Bangla-Brainfuck-tutorial/blob/m...
I’ve been enjoying working with it - taking a little break but definitely enjoying Phoenix as well. It’s been refreshing to work through a “big” web framework that feels straightforward to reason about.
Also learning about Linux. I used macOS for about a year and thought that I knew “Linux” but now I’m seeing how far the rabbit hole goes. I installed arch linux and am currently just customizing it and immersing myself in the community. Eventually I’ll pick up a systems or operating systems book.
I learnt programming mainly through various scripting languages, some of which had some relatively simple visual output available, which I personally found invaluable for learning and visualizing.
I realized that better visual output was the main thing holding me back from doing more in C since there are so many options, often complex, involving much boilerplate. So my mini project is essentially exploring the simplest, most minimal possible ways of drawing pixels on the screen in Linux.
So far tried fbdev (but doesn't work well with X), now playing with XCB.
I don't think such reasons exist.
I don't think C/C++ should be used when superior alternatives exist (Rust). It's like smoking; you're just hurting yourself.
Unless you're being like the programming equivalent of a steam engine enthusiast or a historian. (In a world where most of the industry is still using steam engines cuz we're in too deep and must ride the inertial tide for at least a few decades.)
Case in point: The comment below mine...
To answer your question: I get the impression from various tech news on "hot new languages" that C is the incumbent systems language that people put up with but don't really love, and yet I want to try and love it. I've developed a taste for minimalism, simplicity and a degree of brevity in programming, I have a feeling I might find C more suited to me than C++, Rust, Go, Java etc for this reason despite the lack of "modern" features.
I suppose because of the perception that many programmers already know C. Which is true, but only some fraction know it well, which is far more important in C than in most modern languages.
Another idea would be to use SDL which essentially provides functionality to make windows, draw pixels and handle input/output. If you do not want to use any library at all and do not mind low "resolution", you could use your terminal as window and regard characters as pixels. Sure, there is the curses library to abstract away different terminals, but if you do not care about platform independence you can just directly write escape sequences to the terminal.
My current goal is to find a balance of least dependencies and least boilerplate to draw a pixel buffer so i can play with C, nothing more. Once I can do that without lots of fluf then i may be attracted to more advanced or complex methods later on when performance is desirable.
I have done some visual things with the console and printf alone in the past which gave me a taste of C, but now I want some real pixels :)
Please do elaborate if I'm wrong though! I would be delighted if it's possible to implement a simple subset minimally purely for displaying a pixel buffer without XCB?
Just realized now revisiting this that the author also showed how to directly implement xclient! the example is rather large confirming my suspicions RE parent comments.
I was however planning on trying out Xlib anyway on my path of exploration from simplest/lowest level to complex/higher level libraries: fbdev, DRM < DirectFB, libdrm < XCB < Xlib < SDL et al.
I've done a lot of C programming over the years and I still consider it one of the most elegant languages I've had the opportunity to work with. With the right skillset, you can be as productive as a programmer of any other language or system.
And it's great to see where some of the things we take for granted in programming, come from.
If you want to draw pixels, give Cairo a try. It's fun to use!
Thanks for the suggestion, I hadn't considered Cairo, for some reason I thought it was only for SVG, maybe from it's use in Firefox. I will try it out once I get out of XCB territory.
Just kidding, I'm building the mobile client for https://histre.com/ in Flutter and I love it. Google, please don't kill it yet.
- The tooling is excellent -- you can get a basic app running without much fuss; use VScode and the right plugins are you're golden.
- It's "Widgets All The Way Down" -- just wrap your widgets (objects) to add functionality/positioning/etc (it might seem like you're in "nesting hell" but it's actually quite intuitive and you don't need to manage tons of separate Components across tons of files which is nice).
- The layout engine is actually well thought out -- it might take a while to get used to it (it's not like CSS there are no negative margins for example) but once you do it's intuitive and easy to get layouts built fast. Remember everything is a Widget and that's ok, from your app root object to your button.
- It has the best parts of React -- Flutter's "setState" works much in the same way and only updates Widgets which need to etc.
- It's a "game engine built for mobile dev"; you hear this statement a lot and it's really what makes it's powerful. It renders super fast and animations/tweens/etc are easy to implement allowing you to design UI elements the way you want (hence my Flash comparison lol).
- At some point you will need to manage state, save yourself the search and just settle w/ BLOC, again there's plugins to help with the boilerplate, i.e. code-generation (which is also a thing and actually helpful).
- The package/ecosystem (pub.dev) is pretty young but the core stuff you'll need is all there. The main packages I've settled on are: Moor (sqlite), Bloc (state), Chooper (Api client) and JsonSerializer. UI packages are pretty hit-miss but you'll probably just write your own anyway.
- The SDK has tons of prebuilt Widgets that are actually useful and cover most of what you need to make a modern UI, and yes you can make a "native" Android/iOS UI look and feel if you want. I recommend watching the Flutter's Youtube channel series "Widget of the Week".
- Dart is a fine language, I love the way it's implemented async/await for example, should be no problem picking up if you have Javascript/Java experience. The great benefit is that it's only being used by Flutter so there's a nice symbiosis between the two with a strong focus on making a language geared towards interactive/ui/frontend work.
- No Android XML!
Hope that helps some xD
I have been wanting to go through the tutorial you shared when I get the time, though!
https://ocw.mit.edu/courses/mathematics/18-065-matrix-method...
https://www.youtube.com/playlist?list=PL06960BA52D0DB32B
* understand the hardware components required in a phone?
* understand the software components required? postmarketos and plasma mobile maybe?
* How do I even start to build a prototype? What components would I use? Maybe start with using a raspberry pi to make a DIY phone?
I know this is an open ended question, so any pointers would be appreciated.
Get basic hardware knowledge by doing nand2tetris [1]. It's about building a computer from the transistor up, all the way until you create your own tetris game.
The Hardware Hacker: Adventures in Making and Breaking Hardware (manufacturing hardware in Shenzen) [2]
This guy shows a cool couple of YouTube videos on hacking iPhones in Shenzen [3]. Hacking as in exploring and tweaking, not as in breaking in.
[1] https://www.nand2tetris.org/
[2] https://www.amazon.com/Hardware-Hacker-Adventures-Making-Bre...
[3] https://www.youtube.com/channel/UCO8DQrSp5yEP937qNqTooOw/vid...
It's not Germany, but if you happen to be from the US the Dutch American Friendship Treaty is worth a look. Relatively attainable bar, especially for people in tech.
https://drawabox.com/
> Drawabox's goal is to provide beginners with a strong foundation, and to equip them with the things a lot of other courses and tutorials tend to take for granted.
> It is not going to make you a professional on its own, but it will teach you how to practice, how to use the resources available to you on the internet, and equip you with the tools and skills you need to take advantage of them
[0]:https://drawabox.com/lesson/0/1/whatis
Watchdog Pattern: A orchestration needs to succeed. A watchdog entity checks up on it to make sure that failures are reported and dealt with appropriately (ie, refunding a payment if it fails catastrophically)
Circuit Breakers: Polly has their own implementation, but I found it easy enough to implement my own (don’t recommend in production, just use Polly)
No database: it’s a bit slow to get things done, but it’s amazing to create entities that don’t need to store state in a database. Paired with the watch dog pattern or preloading, you can have entities running “in memory” which may be faster than a dB lookup or the data could be projected to a db for analysis. I’ve been exploring this most recently.
Aggregate entities: these just count things, or store references to important entities that they count. This works amazingly well instead of COUNT DISTINCT queries.
May I suggest setting yourself a fixed schedule (let's say, one article published every two weeks or so) and sticking through it? Your initial articles will probably suck, but you'll gradually improve in the upcoming months.
1. take notes on a topic that has continuing relevance for you (like, you're learning something over a few days or weeks) 2. wait for your project to hit a milestone or for your notes to hit a critical mass 3. reorder your notes into sections, discard bad ones, and flesh them out with text 4. pick the best line, that's your title 5. print it out and leave it under your pillow 6. edit the next day 7. publish
http://facetype3000.herokuapp.com/
Even before Cubase I remember playing with trackers like fast tracker 2, so I also bought a copy of Renoise. If you are a programmer you might like making music with a tracker over a traditional DAW.
It has a macro interface for scripting and many of their first-class plugins can bee configured with Javascript.
I'm also doing some OSINT (open-source intelligence) by simply giving myself assignments. The assignments on hackthebox.eu were not all that great and OSINT is one of the few disciplines that you can do in the real world without permission, since it's all about accessing public data.
I flip back and forth between the 2 disciplines. I don't know why it attracts me. It just does. I also notice that learning this stuff is completely different from programming. And to an extent it's one of the few ways that gives me the feeling that I'm "living and moving around" in cyberspace as opposed to "constructing" (i.e. programming) in cyberspace. I guess typing cd and ls on a lot of Linux and Windows practice boxes give that effect. And the cool thing is, you learn a lot quicker about all kinds of services. For example, I never knew about rsyslog, logger or the mqtt protocol (Linux boxes). I never knew about Kerberos, Active Directory and smb (Windows boxes).
I'm happy I did some master courses in cyber security beforehand. While I'm really new to a lot of things, I've gained a lot of what psychologist call crystalized intelligence in this area. So it's all quite easy(ish) to understand. Things get harder when I have to reverse engineer binaries or debug in x64 assembly. It's still doable though.
I've heard that OSCP is a lot more CVE based than hackthebox. It apparently also has a lot more rabbit holes compared to hackthebox. I haven't checked out thecybermentor yet, but a friend of mine has and he seemed to like it as well.
[1] https://www.bellingcat.com/