Aluffi is really well-written. It assumes some degree of mathematical maturity (so it's well-positioned for a second pass of the material), but has a generally conversational tone without being imprecise. The exercises are excellent, too, if occasionally difficult using only the machinery introduced up to that point. (Again, well-suited to readers taking a second pass at algebra.)
Why am I doing this? Leonard Susskind puts it well in this video [1]. To put it in my own words: our senses evolved for the physical world around us, and some of the most technical activities we do today are wildly underserved by our natural senses. That's why we build things like microscopes and telescopes and whatnot -- to extend our senses into new domains. Mathematical intuition is almost another sense in its own right: you gain the ability to perceive abstractions and relationships in ways that are just not well-described by sight or touch. I both enjoy this sense and find it valuable, so of course I'm going to continue honing it :)
Any recommendations?
http://www.cargalmathbooks.com/#Abstract%20Algebra
That page in general is pretty gold for math texts in general.
Also, #math on freenode has lots of algebra-strong users on it, though depending on your luck some can be less helpful than others. I love chatting about this kind of thing with people, so if you would like an ad hoc mentor/study-buddy I would be more than happy to help. Feel free to email me at the address in my profile.
Good luck!
Sheldon Axler's acclaimed "Linear Algebra Done Right" is freely available as a download [1] through July due to the pandemic. I've not read it (yet!), but I've heard so many good things about it I feel comfortable recommending it off the cuff. :)
(Recommendation: try not to focus too hard on the matrices! They're just convenient representations (syntax!) for the actual things we care about: linear transformations. It's less geometrically intuitive, but it lays a much better foundation for algebraic widgets other than vector spaces. Use the wealth of geometric intuitions to jump-start your mathematical sense.)
I don't have a lot of recommendations for other algebra topics, unfortunately. My class textbook for abstract algebra was Dummit & Foote, which I found very dry and lacking in intuition. Aluffi is perfectly servicable if you feel good about your linear algebra; just don't feel like you have to complete every exercise.
Also, I'm a sucker for order theory, so if you're up for something a little less algebraic, pick up Munkres' Topology. I'm consistently surprised at how often topological and order-theoretic intuitions come up in software development. There's a close connection between topology and logic, so perhaps I shouldn't be so surprised -- but I haven't studied Stone duality at all, so it shall remain surprising for now.
[1] https://link.springer.com/book/10.1007/978-3-319-11080-6
Seconded. Highly recommended.
But I do wish for a more comprehensive book on Algebra covering the entire breath of the field.
Matrix Analysis by Roger A Horn, seems a good book with most of the knowledge of matrices covered. Could be helpful for people working with Graphics.
What kind of tools are in your toolbox for breaking problems down? Where is my problem different from others, and where is my problem fundamentally the same? How can we isolate these parts and handle them on their own terms? This is fundamentally mathematics, however it's ultimately expressed.
Here's a small selection of those ideas I've picked up from mathematics that have absolutely paid dividends in my day-to-day:
* The idea of a "homomorphism", a structure-perserving map between two different domains of discourse. The more I learn about category theory, the more I realize that homomorphisms are conceptually everywhere in software. The more I learn about domain-driven design, the more I realize the role functors (a particular kind of homomorphism) really play in software design.
* The idea of a "fixed point", for limiting behavior of processes. Fixed points are especially pleasant in domains where processes have some sense in which they "grow monotonically". When I can model a system as a series of operations that "add knowledge" and don't invalidate prior results, I know I have a wealth of analytical tools at my disposal.
* The idea of products (pairing) and sums (choice) in type theory, for modeling interactions between components. I feel like I'm in a straitjacket when using a language without sum types; I have to encode what I really mean using tools that don't let me get there directly.
One example I've been toying with recently is the link between complex and split-complex numbers, and the latter are isomorphic to a direct product of two copies of R. Putting these analogies together leads to a slight improvement of Karatsuba's complex number multiplication algorithm:
https://gist.github.com/scythe/9976568d9d49b3322a33c5cd55895...
The extra storage use does call into question whether this representation can be helpful in practice, but the fact that these abstractions can be unrolled into code is pretty cool.
The interviewer is a researcher at Twitter Cortex applying category theory to ML. His intuition about the possible links reminds me of this kind of extending of senses you describe.
* A conference series + workshop: https://www.appliedcategorytheory.org/
* A journal: https://compositionality-journal.org/
Check out some of the people involved in organizing these events. Names I've followed include John Baez, Pawel Sobocinski, and Tai-Danae Bradley (all of whom are amazing educators; check out their work!).
Tai-Danae Bradley wrote a pamphlet on applied category theory which is very approachable: https://arxiv.org/pdf/1809.05923.pdf . Also check out Jules Hedges' thoughts on the importance of compositionality: https://julesh.com/2017/04/22/on-compositionality/ .
To do io you need monads. There's come from category theory. Haskell is great fun to learn, very different, focus on abstractions and abstractions of abstractions. One the one hand i highly recommend it. On the other the vast majority of people learning it never do any useful work at all in haskell. (This last statement will probably excite the haskell zealots whom I would encourage to reply with evidence.)
There are about 5 programs i know if that you might use written in haskell for a purpose other than programming a computer.
Anyway category theory definitely comes up in lazy, pure functional programming. A lot.
That being said, when you explicitly model side effects, you invariably end up with some kind of monad in your model. Food for thought: in a logic programming setting, where your domain is some flavor of partially ordered set, monads are closure operators (a kind of monotone function). Closure operators give a cool foundation for the semantics of certain kinds of logic paradigms, such as concurrent constraint programming.
I come from the other side, Milewski's book is to me "Functional Programming for Category Theorists".
I suppose my statement was a bit strong in that regard. Monads tend to arise very often in the way we build systems, but that doesn't mean they're the only way to cope with side-effects. It does seem likely that any way to capture "alternate outputs" from a function will end up looking like A -> T(B) in some category, though.
(Incidentally, if "A -> T(B)" looks funky, think about polynomials `f(x)` -- the function symbol `f` is just a placeholder for some expression involving the free variable `x`. Could be `A -> (B, String)`. The monad laws only make sure you have some foundation for reasoning about the extra type structure being added in by `T`.)
That being said, it's true that I'm using `T` itself in a function-like way. Category theory does blur the lines between the two ideas: monads are "functors" with some extra structure, and functors are ("just") functions between categories that preserve categorical structure. But it's critical to notice here (and it's apparent from the type `f : A -> T(B)`) that `T` is not the same kind of function that `f` is. `f` lets you move from one type to another, by mapping each value in one to a value of another. `T` lets you move from a whole category to another category, by mapping each object/type in one to an object/type of another, and mapping each arrow/function in one to an arrow/function of another.
In other words, monads occur at the type level, whereas functions occur at the value level [1]. That means that, colloquially, you can't just use a monad "instead of" a function, any more than you can use "Integer" instead of "42". But as I alluded to above, monads over partial orders are closure operators, and we can often model the evolution of data over time as a partial order. So in that domain, monads literally are functions, and the "side effect" of a closure operator is mutably updating a cell by moving its contents up in the order.
If you model the evolution of data as a partial order, you can indeed obtain monads that more closely resemble normal functions. But a partial order is just a particular kind of category, so even here we've built a separate little domain over which our monad exists. (Of course, functors are all about crossing those domains in principled ways.)
[1] That's why it's not "IO ()" or "Maybe Int" that are monads; it's "IO" and "Maybe" themselves, which are well-behaved functions from types to types.
The most charitable response would be "yes", but it really depends on how you model your domain. Most instances of monads in software are at the type level, not at the value level, and "function" doesn't usually make sense at the type level.
The example I gave of a monad over posets does arise in the semantics of logic programming, but I haven't seen explicit recognition of monads in that area. Not that I've looked that hard, yet.
Seven Sketches in Compositionality: An Invitation to Applied Category Theory https://arxiv.org/abs/1803.05316
Applied Category Theory mini-course: https://ocw.mit.edu/courses/mathematics/18-s097-applied-cate...
Programming with Categories mini-course (with Bartosz Milewski): http://brendanfong.com/programmingcats.html
https://bartoszmilewski.com/2014/10/28/category-theory-for-p...
There is also a playlist on Youtube
https://www.youtube.com/watch?v=I8LbkfSSR58&list=PLbgaMIhjbm...
Building skills, I'm almost finished a chicken coop. I made a dry stone arch bridge but it failed because the frame sank, I will try again. I am learning carving to make wooden animal toys for my child, who will be born in July (I have made a bear and a fox, soon an elephant, but they still need to be sanded). I would like to learn timber framing and make a small cabin on the land but it may be too expensive, now.
I'm trying to make an animated village for my site background with HTML Canvas, and originally I was making it procedurally, but its too ugly, so I will have to learn some digital illustration until it's beautiful.
Are you tilling? Doing raised beds? We're planting a bit this year and dealing with weeds, etc. has been a hassle (also, most of the no-dig crowd seem to basically advocate using many tons of compost, which is great but not something you can assume a steady supply of)
We're making semi raised beds up the hill: https://twitter.com/simonsarris/status/1246544902193909769?s...
With house compost and composted manure from a local farmer. The lower garden is mostly no till with added compost. We're not really sure what we're doing! So I can't really give advice.
I usually document what I'm working on on Twitter as a micro blog
I used to run and bike past so many houses that look like this, and some part of me always wanted to do what you're doing. So thank you for sharing your journey!
The virus is going to have a serious impact here, like so many places. So many people depend on the summer tourism season to make a living. There are charter fishing operations, tour operations, retail operations. Those people and businesses will make almost nothing this year. And when this is over, how long will it take people to be able to afford summer travel again?
Then it turned into "Turn right where the cows used to be."
Then it became "Turn right at the ____ subdivision."
When I was young I did a lot of bicycling and running. In early high school (1980s) a friend and I used to ride our bikes as far as we could in the morning, and then try to find our way back without asking for directions. We found all kinds of old back roads and small cemeteries and old stone walls and other remnants of old New England. Now when I go back and go for a run or a drive it's endless subdivisions. I don't resent that at all, I know things grow and change. But it's certainly part of why I don't miss Nashua much except for nostalgia.
For all the changes they can't get the downtown to "work" and they are really, really bad at trying. I tried too: the mayor appointed me to the downtown improvement committee where I got to watch nothing happen first hand.
May I suggest welded mesh?
Overall I'm enjoying the craft of it all and will be soon moving towards learning the details that go into making sauces and carne asada.
I am dying for some good traditional tacos. (Currently abroad but far from Mexico)
The best tortillas I had were the handmade ones, made from organic blue maize.
I mostly lived in Mexico City, but I've traveled a lot around the country and spent time living in a few other cities for shorter periods of time. I've probably seen more of Mexico than 90%+ of all Mexicans.
Some of the best food I've ever had was in a small Pueblo (town) called San Sebastián del Oeste in the state of Jalisco. [1] It's a small "magic town" in the mountains in Jalisco. [2]
Most of the best food I've had in Mexico was not in the big cities but in the small towns. Especially, the family-owned places where there's an older Mexican lady cooking up food. Cliché but true.
[1] https://en.wikipedia.org/wiki/San_Sebasti%C3%A1n_del_Oeste [2] https://en.wikipedia.org/wiki/Pueblos_M%C3%A1gicos
Current recipe
130g flour
80g hot water (steaming)
35g lard
1g salt
Twice as much baking powder as what you see in salt (it weighs less so I don't see it registering on the scale)
Depending on your location, you may use 120-125g flour, 80g water because the water/environment is just different.
1. I typically place a pan on a scale and then put in 35g lard (pork and duck have worked well for me), then I put the pot on the lowest heat to melt. Fat is key, I tried using oil, butter, etc in the past and it didn't work well for me. It's also possible because I was butchering all the other steps too, this is what I call my cracker tortilla days :(.
2. Next I put on my kettle for hot water (80+ grams worth), it's fine if it boils but you mostly just want hot steaming water.
3. I put a bowl on the scale and pour in 130g of flour. Flour of course is another key element since not just any flour gets the job done, I've been experimenting and having some success with flours in Europe though that are more artisan bread friendly. Here are some Mexican ones https://allofeverythingblog.wordpress.com/2014/04/16/autheni... that you want to look for and you can also try to order some online (white sonoran wheat flour). Weirdly enough, there is a difference with El Rosal in America vs the ones from Mexico, the American ones are enriched and bleached which gives it a slightly diff dirt like smell and flavor. I recommend finding a way to get the flour from Mexico if possible.
4. I take the pot with fat off the fire, let it sit for a 1-2 mins.
5. I take the hot water off the fire, and pour it into a mug on my scale, looking for 80g of weight.
6. I put the baking soda and salt into the fat, along with the hot water from the mug, stir it up so it's all mixed.
7. Pour in the flour and mix it a bit with a fork, then knead it like you're folding the dough on itself for about 5 minutes. At first it may stick to your hands but after a minute or so that should go away, if it doesnt you need to add a tiny bit of flour, or water if its too dry. This is hard to explain since its more a feel. After 3 sessions or so you start to understand the consistency you're looking for.
8. After 5 minutes you should have a smooth dough that you can then pinch off into 8 tiny golf balls. If you let the dough sit here, which isn't necessary, (I've tried as long as 4 hours) it becomes quite elastic which makes it harder to press/roll the tortilla to a manilla folder thin thickness.
9. Roll them into a ball and then I recommend using a press with baking sheets so they dont stick, but you can also use a rolling pin.
10. If using a rolling pin, roll it up and down into a rounded button like shape, then turn that horizontal and do it again with equal pressure on both sides of the pin, this should result in a circular shape. I don't recommend adding flour since that will result in a more floury taste, but I'm still trying to figure out how to get around this without a press, since the tortilla will stick to your surface without baking paper. I don't recommend foil/plastic because the creases will reflect in your tortilla. At the end of rolling, they should be pretty thin (manila folder thin)
10. Make sure your pan is on medium high heat, takes about 5 minutes to get there, sometimes longer if using a cast iron. Then place your tortilla on the pan, it should bubble within 20 seconds, then you can flip it wait another 15-20, then flip again. This is pretty crucial, if the heat is too low its undercooked with no bubbles, if its too high it burns and the little brown spots will crack as you try to roll your tortilla. Heat's probably one of the most important parts which took us about 50 tortillas to learn.
11. After that you can place it on a plate or in a tortilla warmer.
Hope this helps! In the future I'll probably look into corn but that's definitely once I perfect an entire taco first.
For those of us in Europe can you recommend your choice of flour (and perhaps some other replacement ingredients)
Get it at your local delicatessen, or your local Hyper Market.
I would also avoid things like Maseca if you have the time to try to figure things out, since they are a pre mix just add water type thing for corn tortillas specifically.
I've found this trick worked (a few years ago now) for a couple of trials where I wanted to use just flour and water. I think the boiling water makes the flour more elastic.
I've done a fair amount of experimentation on on bread making, and a very important step in bread making is autolyzing[0] the flour and water (letting the flour and water rest for a period after combining them).
However, the only reason water temperature matters in autolyzing is because you want an optimal temperature for yeast at the end of the autolyzation process[1].
More likely, what matters more is not the temperature of the water (assuming distilled, pure water, not subject to local tap water differences), but the time you let it the flour and water autolyze. My suspicion is that even though tortillas don't involve yeast, autolyzation is still important for optimal results.
NINJA EDIT:
Interesting, after doing some more research, I discovered boiling water is actually used to gelatinize flour--resulting in much more elastic dough, as you specify[2].
[0] https://www.kingarthurflour.com/blog/2017/09/29/using-the-au...
[1] https://www.weekendbakery.com/posts/a-few-tips-on-dough-temp...
[2] http://thebreadmaiden.blogspot.com/2016/02/the-science-behin...
I was introduced to them by a friend who was helping them build an open platform [2], open in the sense that all processes, donations, procurement and guides are public.
Although my core competency is building and managing Saas, I took up the task of setting up their operations. I find a striking similarity b/w managing Saas and not-for-profit distribution.
We are relying heavily on Airtable.
Despite of being jobless, I feel less worried. The situation on ground is much worse than mine.
--- [1] https://karuna2020.org [2] https://open-data.karuna2020.org
750 INR = 9.84 USD
It would be nice if you can make it easy to provide donations from outside India.
There are other operations that you can help with, like blurring beneficiary faces using opencv before posting them on the internet. You can read more on the website.
Application and On-boarding Guide: https://karuna2020.org/guides/volunteer-application-and-onbo...
Volunteer Application: https://karuna2020.org/volunteers/
I wish you all the best!
https://open-data.karuna2020.org this is game changer. I wish more NGOs in India would do it.
And good luck!
That's some freaking "kit" !!!
I've spent so much time studying skills more directly related to my work as a software engineer, or hobbies like photography, that this shift is both challenging and refreshing. I think it'll make a huge difference in the long run.
It did for me. My path seems to be flipped. I did this stuff in my late teens and early twenties and after that I decided to get into software.
Reading multiple books and doing research yourself is to recommend, at least there's one book with a whole website about the research used in each topic. ---> Boundless by Ben Greenfield.
If all the research points to "meat" being problematic, wouldn't a truthful book be considered "anti-meat"? I am a meat lover myself, but Greger seems to follow the scientific process to the letter.
A vegetarian diet may be the healthiest there is - I don't know. But Greger is biased for sure.
Bw: push ups, pull ups, crunches, supermans, squats, calf-raises, planks, wallsits, HPUs or easier variations
or
Weights: bench, rows, deadlifts, squats, OHP (google 5x5), pull ups, calf raises
+
run, bike, or swim Just something to keep in mind as minimum.
Alongside that, I am also watching Disney's Imagineering-in-a-Box, which describes how they develop lands and rides for their theme parks: https://disneyparks.disney.go.com/blog/2020/03/enjoy-a-one-o...
I recently finished Stanford's CS231N Computer Vision course from 2017 (watching YouTube + 3 Jupyter Notebook assignments). Also highly recommended. http://cs231n.stanford.edu/syllabus.html
Also, no one asked, but I went with Godot instead of Unity because it was the only one I could get running without _any_ issue on Debian.
Initially I found it difficult to grasp what exactly the game engine is making easy for you. Now I understand, the whole reactive message passing system simplifies game logic. Also the collision physics and handling too makes game logic simpler. And it takes care of animations like sliding, moving etc.
I've always been interested in making things that make other things, and compilers definitely fall into that category.
In the middle of the second assignment, the parser. It's a lot to consume, but I feel like the theory isn't particularly difficult, about half my learning has been getting to know the tools (so far: flex, bison). I've also spent an annoying amount of time on updating and configuring the VM, I guess that's a bonus lesson in Linux sysadmin-ing. It's also my first experience with C++, which seems useful to know.
I also started this course on web security: https://web.stanford.edu/class/cs253/. The first assignment was a lot of fun, the material is fresh, and it definitely seems like very useful information for anyone in the web stack.
I'm also learning a bunch of new cooking recipes, but who isn't nowadays.
The class assignments are missing a more thorough look at optimization. Might have to rely more on the lectures for that.
I feel comfortable enough with my technical skills where I feel like I can pick up a new language or framework with relative ease, so I want to switch gears and improve my drawing and visual communication skills. I believe that any project can benefit from a compelling visual component.
For now, I've been trying to start slow and just have fun; for example, telling myself to do three quick sketches of my dog every day and keep up a habit. Eventually I'd like to follow some more structured exercises and resources, like https://drawabox.com/.
If you understand this, you are a genius:
https://crafts.stackexchange.com/questions/3316/how-to-measu...
"Supposing then that you are ready to take a certain amount of pains, and to bear a little irksomeness and a few disappointments bravely, I can promise you that an hour's practice a day for six months, or an hour's practice every other day for twelve months, or, disposed in whatever way you find convenient, some hundred and fifty hours' practice, will give you sufficient power of drawing faithfully whatever you want to draw, and a good judgment, up to a certain point, of other people's work: of which hours if you have one to spare at present, we may as well begin at once."
For that, you have to teach yourself how to see things in the most objective way possible, without meaning. Don't see a dog or a head or a leg, but just a mass of shapes, lines, areas. Measure them, compare them. It's all about that.
People think drawing is in the hand, but it is in the eyes and in learning how to see things differently.
Good luck! It can be very therapeutic and rewarding.
I'm currently working through the Algorithms chapter, which builds up from Deutsch's Algorithm [2] all the way to Shor's Factoring Algorithm [3], but I will definitely end up going through most of the chapters.
[1] https://www.amazon.com/Quantum-Computing-Computer-Scientists...
[2] https://en.wikipedia.org/wiki/Deutsch%E2%80%93Jozsa_algorith...
Now I have GBoard w/ morse as my default keyboard on the mobile. Works well enough for short messages (and typing in URLs with autocomplete).
Edit: And I've been learning Spanish for months already so that's still active.
[0] https://morse.withgoogle.com/learn/
I think my favorite moments were learning that v uses the motif from Beethovens Vth and `!` = Candy+mustache
Brilliant observation, this one will be impossible to forget now!
edit: And I'm glad you found it useful! I've always wanted to learn Morse but never found the time/inspiration before that little learning app, which made the dive in so easy!
I've been a volunteer leading health assessments and triage (via volunteer Telehealth nurses) at our local men's shelter. The shelter has even experienced a complete move in the last week.
A few huge points, however:
* Homelessness isn't always a choice - and especially in this situation it's causing panic.
* Our shelter system needs much greater support, and many organizations need better communication and integration.
* Paper is alive and well some places, others are quite a bit better technologically. There is much room for process improvement.
* While I am selfishly getting out of my own house and interacting with people, none of them are in anywhere near an ideal situation - and it's affected my mental health somewhat. I'm grateful for personal protective equipment, but reuse does concern me.
So much more I could go on about, but I can say during this period I've learned a ton more about homelessness, the process, and have kept people from entering the shelter thanks to our fantastic volunteer nurses who need to practice in a limited capacity for COVID-19 screening.
Volunteering is also something that has turned into quite a calling for me right now as well.
To help with this, studies indicate that you can heat items in the oven at 70C for 30 minutes for effective sterilization without compromising the masks. More detail at [1]. My household is also using this technique on things like incoming mail, etc.
Bravo on your work - stay safe!
[1] http://www.imcclinics.com/english/index.php/news/view?id=83
They've been so kind to issue a temporary free license to help with the isolation. Their license model is very liberal anyway, but the gesture was well appreciated.
I own a Yamaha E363 keyboard and a Stratocaster, now I've bought a Behringer U-Phoria UMC204HD soundcard and an Audio-Technica AT2020 mic to complete the budget home studio. Amazon.es is working faster actually. However I wish they kept orders bundled, instead of delivering them apiece.
There are many videos linked from Reaper website, but as a Spanish speaker I prefer this guy, that's absolutely great:
https://www.youtube.com/channel/UCEkUr7EAx4LwIv2gp2pwvPQ
I'm also going to learn to airbrush. I've had the gear for some time, but now I'm seriously putting the time.
It’s been around for at least 15 years, but looks like the author has recently started updating the feature again. Check it out!
It takes some practice and getting used to, and obviously isn’t quite the same as being in the same room, but it works well enough to stumble upon some great serendipitous moments like any good jam session :)
Relationships take a lot of commitment and effort. It took me a while to learn how to communicate effectively with my wife so we’re fighting problems and not each other.
Babies really test your patience. They are hard to reason with so I have to keep my emotions in check and always be calm even if she is throwing a massive fit. But sometimes they really get your nerves when they cry non-stop for half an hour.
For no apparent reason ... sigh
Are you using any resources that you'd care to share?
1. Does the diaper need changing? 2. Does the baby want a diaper? 3. Does the baby want to be held? 4. Maybe some clothing is uncomfortable for it? 5. Does the baby need to be burped? 6. etc.
Walk through the list until something works or until the baby + you pass out. If you spend 2-5 minutes on each item it'll take maybe 20-30 minutes to go through it. If it doesn't work the first time (and you haven't thought of / noticed anything else while going through the list...) then do it again.
It feels good to have a plan, it gives you something to do that might help, and for those occasions when nothing works it at least helps pass the time :)
I agree, it's good to memorize or even write down these things. Over time, one learns to move quickly through that list, and which items are more likely at what time.
(RE 8. it's easy to worry so much about the baby having it warm that you end up overheating it.)
I can't believe I listed diapers twice and left out "Does the baby want a BOTTLE" - D'oh!! :)
(It's easier now; mine is 8.5 m.o. and we've finally settled into a proper feeding rhythm, so we know when to give food by looking at the time.)
For the first few months I found this book great: https://www.amazon.ca/Happiest-Baby-Block-Harvey-Karp/dp/055...
Any tips for communications with partners?
when i was still stuck in relationships that didn't work, most discussions were always about "who did (or did not do) what and why that was terrible". these days we talk about what problems we face, what we tried, how they didn't work and ask each other advice on how to deal with the situation.
i had to learn to be more humble and own up to my faults (that was hard). i also had to learn to reign in my temper when i was getting frustrated. (that felt impossible, but turns out to be easy when the discussions are not personally directed)
and another thing that has a huge impact on our communication: we validate, compliment or appreciate each others efforts constantly. we talk more about the good stuff than about the bad stuff, and that really makes a difference.
and lastly: allow each other personal space when needed
i know this is not really "new knowledge". every talk or tutorial about communication will tell you similar things. but it is what works for us.
John Gottman has a number of books on this topic and I'd highly recommend them.
20:1 minimum good to bad. Minimum. Even one "bad" a week may just be too much.
Also, limit the relative number of times you approach with something that "needs doing". You can't let your relationship turn into mere help-mate-ism.
Here's what we're trying
- When she or I are upset, name the emotion at the earliest opportunity, e.g. "Hey, what you said back there hurt me, and I'm kind of embarrassed to be hurt by something like that but that's how I'm feeling right now..."
- This sounds like a bunch of whiny nonsense, but we've both found it takes a lot of heat out of a situation, and avoids a snide or sarcastic comment that might make things worse later. This is the slow-burn kinda situation.
- Sometimes there's no time to think about that and one of us just exclaims in anger or hurt about something. I don't know what to do about that; it just means there's a lot of work to do afterwards.
- Good luck :)
Edit: oh yeah, this assumes you're both ok having a difficult conversation in the first place. If implied criticism is a no-go zone, then... I wish you even more luck :)
My focus is on embracing our current state as the new normal and trying to be happy and calm amidst all the uncertainty. My son is blisfully unaware of everything and truly a joy to watch.
In reply to op: I'm currently studying (relational) databases.
1. You can usually recognize when you’ve said something in a tone that you regret. Within a few minutes of saying it, try to preemptively and meaningfully say you’re sorry for that tone.
2. If you’re discussing a topic that one or both of you are very passionate about or that triggers high emotions, each person should stop and write down what the other person is saying. Then repeat back what you understood about what the other person said. This helps both people understand that they are being both listened to and understood, and usually calms everything down. (We’ve only needed to do this 2x in several years of marriage, but it’s been helpful each time.)
3. A tough one, but try not to discuss any hot button topics when one or both of you is tired and/or hungry and/or driving.
Finally, someone else in the thread mentioned high ratios of good/complimentary interactions to bad ones. This is very important. Be grateful for your spouse and show it, every day. This will go a long way toward improving most any relationship.
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.
After reading about storytelling, I realized that I'm as fascinated to a well-crafted world as good plots and characters.
There's not much to read about, as a fiction world can contain as much detail as the real world. I'm spending time looking at the fiction worlds that I like and taking them apart.
As an exercise, imagining places and races is also interesting. You'll be amazed by the amount of details required to fill the gaps in order to "see" something in your head.
Although reading reference books like this can be a bit dry, it helps you recognize the elements that an author makes up for his or her world when you see them.
https://youtu.be/J5xU-8Kb63Y How to build a classical solar system
Although "unknown magic" and "ancient powers" are convenient, it bothers me to think there's no consistent system underneath it.
In the setting of the world, people in the world can view it as unknown, but the author is the god and should have a decent idea of how everything works.
I don't have much capital right now (I haven't raised - just personal savings), but I'd like to hire some folks to do this for my startup.
Is your startup a game studio?
I was thinking about doing an interactive online version now that we're all stuck inside.
[1]: Someone in another comment mentioned designing hard magic systems, but there doesn't a whole interesting world of different magic systems out there: https://en.wikipedia.org/wiki/Hard_and_soft_magic_systems
Hugo Award for Best Novel three years in a row!
(I'm pretty sure it's uncommon to put the whole thing together before finishing, and then take it all apart again, including the electronics... but I wanted to know nothing would be terribly wrong before I spend hours more on finishing!)
TDPRI's Tele Home Depot is a great source of info- https://www.tdpri.com/forums/tele-home-depot.46/
My own build thread: https://www.tdpri.com/threads/first-build.1011061/
I keep debating between whether to leave the wood visible (with Tru Oil or wipe-on polyurethane), or paint it (lacquer, super labor intensive, slow, expensive), or dye/stain it and use a clear finish on top of that.
I’m personally a fan of leaving the wood visible but the best thing is you can do whatever you want and it’ll be awesome because you made it.
That should fix most errors. Learning how to level frets is a truly valuable skill for any guitarist. If a guitar is fundamentally sound (quality wood, straight neck with functioning truss-rod, good fit between neck and body), then a good fret-level and properly cut nut will clear most problems.
https://www.blackmagicdesign.com/products/davinciresolve/
I collect examples of advanced C++. Noticed the lack of educational content at this subject, and planning a short course, something like "Exceptional C++" style, but on video.
In our distributed team we have a practice to make video presentations for colleagues, so I have experience of delivering visual content to tech audience. However, I see that particular course like a high-quality content, with diagrams, animations etc.
That's how I found Davinci Resolve, and you know, it's fun to learn it (even it crashes more than production-ready application supposed to). The only thing that buzz me, is not to forget about the initial goal:)
Davinci Resolve is a surprisingly good tool and for a non-professional it would be my no. 1 recommendation.
Learning even the simplest things in another area can be very empowering and rewarding.
Super slow intro to the tool itself: https://www.youtube.com/watch?v=LIIdOlnpRzQ
Simple but effective techniques: https://www.youtube.com/watch?v=cX_xMXzr2XY
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.
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.
All 3 are a mind expansion coming from other tech. Cannot recommend them enough :-)
https://clojure.org/ https://fulcro.fulcrologic.com/ https://kafka.apache.org/documentation/streams/
> 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
The kit I got for those curious: https://www.guitarcenter.com/Alesis/Nitro-Mesh-8-Piece-Elect...
Throne: https://www.guitarcenter.com/ROC-N-SOC/Nitro-Throne-Tan-1500...
Each of the 24 characters follow very logical rules and build onto each other to build "blocks" of syllables. Each block must start with a consonant in the top-left, always followed by a vowel, and sometimes ends with a consonant. So the block always reads left-right, top-bottom and must always contain at least one consonant and vowel.
In addition, each syllable block has a phonetic sound. This means that it's really easy to read and pronounce, since there are no silent letters, with the one exception of single vowel syllable blocks. Which must start with a silent ㅇ(ng), for example the character ㅣ(i). So following the rule of a syllable block needing to start with a consonant you can't have a single ㅣ since it's a vowel, so you need to use ㅇ as a placeholder, thus creating ㅇㅣ(i).
Now if you want to create a word, like "child". You can put together the character ㅏ(a) and ㅣ(i). Since you can't have two vowels in the same block, we must use two blocks to create the word. This gives us ㅇㅏㅇㅣ (a-i).
The vowels consist entirely of horizontal and vertical lines, with a dash or double dash off to the left, right, top, or bottom. It's a very simple alphabet and an extremely interesting language. If anyone want's to learn more, feel free to checkout the Wiki page on Hangul for the full set of vowels, consonants, and double consonants. It's often said you can learn the Hangul alphabet in 90 minutes. If you want a solid intro course to Hangul, checkout this video https://www.youtube.com/watch?v=s5aobqyEaMQ
I made it as a side project : https://github.com/cassandre-tech/cassandre-trading-bot
And i am writing a guide about what i learned : https://trading-bot.cassandre.tech/
I had an older version but wasn't using reactive. Definitely, this looks promising.
But if I had time on my hand I would learn about:
* Adobe after effect not to only to edit videos but to animate!
* Illustrator, because it's the basis of any graphics
* Blender, because I want to learn about 3D graphics and this seems to be the reference
* Unity, a gaming engine, because I've always wanted to make a FPS game
* Phaser, an HTML5 gaming engine, because I want to make a multiplayer game with websockets. I'm thinking of starting with an online board game though.
[1]: https://www.manning.com/books/real-world-cryptography?a_aid=...
Fitness, I cannot hit the gym anymore so at home I'm doing body weight training goals. Current goal is 1k squats a day(done), 1k burpees day(70/day right now, It's 1 week in so progress is very fast right now), and a bodyweight program my gym is offering.
For tech, I'm learning machine learning applied to a environmental program I'm trying to build which I'm passionate about.
Wisdom, this is subjective but I'm going back into old philosophy books. Just finished some work by Stoics and will read the plague by Albert Camus.
food, Every other day I'm trying to learn how to cook something new. I tried baking which is awesome, today I will try to make a chilli on a pot(never did that before).
Love, this is the hardest but also the easiest in theory. I'm trying to connect to the things that I love but because life got busy, I didn't connect to as much. This included just having conversations with friends, training my dog, loving how my body can do complex movements(squats/burpees), the beauty of technology, or just observing nature.
How is that tendonitis?
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/
[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.
I'm also doing baking; baked my first loaf of bread yesterday. Really interested to learn (and eat!) more.
I'm tempted to pick up a cheap instrument and learn one as well, or delve back into Python some more. Or drawing. My main issue is focusing now, sadly. Any tips there would be appreciated.
Setting specific goals for each month, which I track on Trello, has helped me a lot. It encourages me to make concrete progress and not tackle too many things at once, but reduces FOMO since I know I can always go a totally different direction the next month if I want.
(I blogged a little about focus: https://brokensandals.net/three-books-on-focus/)
I've put that a temporary hold for the last couple of weeks to brush up on algorithms; I'm working through some select chapters of Concrete Mathematics, Programming in the 1990s, How to Solve It, and Algorithms. I find I'm not satisfactory at solving leetcode-style problems in what industry considers a sufficient amount of time so I'm working on improving my skills there.
And I'm making progress on my own side projects as well. I'm testing the waters with trying to record my work on video to see if streaming might be a thing I could do.
It's a horror movie about a guy who renovates foreclosed houses for banks. But one of the houses he goes into has a ghost in it. He has to solve the mystery of why the ghost is there before he can leave.
I call it: "Repossessed"
Working tagline: "This is for closure."
Sneak peek of the code: https://twitter.com/daniel_c0deb0t/status/124224838155819008...
https://en.wikipedia.org/wiki/Sequence_alignment
https://en.wikipedia.org/wiki/Needleman%E2%80%93Wunsch_algor...
https://en.wikipedia.org/wiki/Smith%E2%80%93Waterman_algorit...
Regardless, my goal was to learn some SIMD and Rust (first time for both), so I did not read many background papers.
The problem with handling diagonals is that indexing cells and comparing characters on the diagonal becomes complex. Dealing with this without many branches (less branch mispredictions) is the hard part.
I've written something for the biotech crowd (to get DNA synthesis from FreeGenes), so it uses some odd vernacular and definitely isn't perfect for tech crowd - no actual code implementing it yet, but has some useful historical context of how this lands in with everything else.
https://docs.google.com/document/d/1odf8q7ir9NsS0zPvArEg0j0W...
Would be awesome to see some motivating examples for this application. It sounds really cool!
Let's say we want to make cocaine (or related compounds) in yeast (https://www.nature.com/articles/s41467-019-11588-w). Well, we know the biosynthetic pathway to get to that molecule (https://biocyc.org/META/new-image?type=PATHWAY&object=PWY-58...), and we know the biosynthetic pathways in yeast that intersect with that pathway.
In the tropane paper, they express 15 new genes and did 7 disruptions.
There should be a way to declare "I want this end product" and a system knowledgeable about the proteins associated with the reactions necessary to get there should be able to fit the puzzle of "ok, if you express these proteins you get that end product, and if you knock down these genes in the organism it should increase your production".
This generalized system should be applicable to nearly any biosynthetic pathway, and I think there is definitely a profitable niche at being good at that.
Frank Pfenning at CMU does some really cool research on concurrency using logical semantics and sequent calculi (https://www.cs.cmu.edu/~fp/). Session types might be the coolest thing out of this particular corner of the field, but there's so much more to explore here.
Going back some decades, concurrent constraint programming (CCP) takes the position that concurrent processes communicate by posting constraints upon a shared store. Vijay Saraswat's ask/tell CCP model has been a real inspiration to me. As best as I can tell, his work is based on forward reasoning, as opposed to Prof. Pfenning's work, which appears to use backwards reasoning (as does Prolog). (There's an interesting duality between the two kinds of reasoning, which I am not at all positioned to opine on.)
Some of the functional work I've seen on concurrency ends up going in a logical direction without realizing it; the more recent LVars papers (Lindsey Kuper and Ryan Newton) build up a lovely abstraction in Haskell that's conceptually the same as Saraswat's ask/tell logical framework, but they don't seem to realize it until several papers in. (It's all fantastic work! It's just a shame the communities have so little overlap.)
Logic programming allows you to model mutable state, and it gives you high-powered tools to reason about how that state changes over time. As a concrete example, you only need term unification and logical variables to get undirected communication channels in a logic program. Unifying a variable with a term in one part of the program allows other users of the variable to match on it and obtain information about that term. In this sense, it goes in the complete opposite direction from functional programming, which eschews state and treats it as something to be derived from a stateless foundation.
I also work on miniKanren and am very interested in synthentic biology. We should talk! Please email me.
--Will
* Datahike (similar to Datomic but similar): https://github.com/replikativ/datahike
* Crux (a bitemporal graph database): https://opencrux.com
https://ocw.mit.edu/courses/mathematics/18-065-matrix-method...
Aside from that, I'm also participating in Leetcode 30 days of code challenge [2]
[1] https://www.edx.org/course/masterpieces-of-world-literature [2] https://leetcode.com/explore/featured/card/30-day-leetcoding...
Just started reading
At the Existentialist Café: Freedom, Being, and Apricot Cocktails with Jean-Paul Sartre, Simone de Beauvoir, Albert Camus, Martin Heidegger, Maurice Merleau-Ponty and Others by Sarah Bakewell
It has a really nice narrative and tells the story of the aforementioned. Kierkegaard also makes some occurrences.
Bertrand Russell wrote a lot of very accessible Western philosophy overview or survey books which I found orienting:
https://www.thriftbooks.com/w/a-history-of-western-philosoph...
and
https://www.thriftbooks.com/w/the-problems-of-philosophy_ber...
the former is online here:
http://www.ntslibrary.com/PDF%20Books/History%20of%20Western...
About this one he said :(paraphrasing from memory now), "A big book is a big evil. You may ask why then the author proposes to lay before you the present work..."
He's a hoot.
[1] https://www.amazon.com/Practical-Ethics-Peter-Singer/dp/0521...
It's quite interesting. Two of the things that fascinated me most so far are emergent properties (such as in cellular automata models), and what he calls the models' "fertility".
As an example, with a few adjustments (ie the "recovery rate" becomes a "churn rate", etc) the SIS model could be adapted in marketing, viral or not, to measure an existing campaign's efficiency, or try to predict the means a future one might require based on different assumptions and goals.
Also acted as a nice statistics 101 refresher / intro
Wonderful into to the topic and easy to understand. It's my first foray into the field so I really appreciate the Author's writing style.
For me it looks like this, I'm working on a bootstrapped simple SaaS tool for devops (docker container monitoring):
- Clojure so I'm learning FP and Lisp
- Clojurescript/Reagent so I'm learning SPA/react
- MongoDB so I'm learning NoSQL
- Vim so I'm learning editing like a boss
- SaaS so I'm learning marketing (SEO/Blogging to start with)
There's a project I want to work on but I feel a bit overwhelmed and don't know where I should start, I'd appreciate some advice here.
I want to create shogi(Japanese chess) server, similar to lichess, the thing is that I've never done anything similar to this, I've been reading about web sockets, this seems like a good place to start. I plan to use elixir for the backend, is this a good choice? Lichess uses scala, should I use this instead?
As for the backend, I would recommend whatever you're most familiar with. It doesn't make that much of a difference and you'll be way more productive in a language you know.
Love the idea of a Shogi site by the way!
I am gladd you like my idea, there's a few good platforms to play shogi already, like 81dojo on the web and shogiwars on mobile, but none of them are open source. So I wanna do an open source version similar to lichess.
Why not instead start with a language you already know, and figure out how you'd sketch out a standalone game engine (forget about networking for now) in that. Then once you think you've got the basic game engine (architecture, at least) down, then tackle turning it into a network server (again, still using a language you already know.) Finally, port the thing over to a language you want to learn (Elixir/Scala/whatever) and you'll have an implementation you understand well to compare it against. Of course you can rearrange the sequence... but that's the basic idea.
I've recently been furloughed, and I think that redundancies aren't too far away. There aren't many companies hiring in my area at the moment, and if I'm going to move it's going to be for a big company, so I'm dusting off the CV and am applying to some Big N companies.
A recruiter recently reached out to me, and I've got an interview with one Big N company coming up soon, so am using my new-found free time to study and, at the very least, be a bit more employable at the end of this pandemic.
Don't hate the player; hate the game. gl
I started leetcoding just for enjoyment and not for landing a FAANG job, when i had no interviews coming up. I started enjoying it a little bit and now i do it for "fun" and don't have an anatagonist realationship to it.
Like someone said, once you overcome something you have keep overcoming it, so you can never be successful if your strategy is overcoming.
It can be really hard to motivate yourself to jump through hoops.
Good Luck!
I for one am extremely grateful, although I think it would be even more fair if it was more like the SAT. Traditional interviews depend too much on status signaling and social connections.
But now, with the entire world economy screwed up, I don’t think now is the right time to make that kind of move. I’ll stick with being just a regular old Enterprise Developer/Architect/Team Lead/Single Responsible Individual depending on how the wind blows focusing on healthcare.
Architects are usually just managers who are ex-engineers and have been out of the front lines for so long that they aren't technical enough to get back into coding. This is fine, but the idea that "architecture" is some kind of talent is absurd. Anyone can study a blog article about the latest architecture buzzword and understand the concepts front to back. Not to mention that the more physical nature of architecture makes it less flexible than code itself so "architectural" patterns are, as a result, significantly less abstract and complex than coding patterns/algorithms.
The true difference in ability is measured by who can actually Build an architecture, and usually its developers who build it, while architects (mostly) just talk about it.
A good architect makes it seem like their job is easy, but there’s nothing easy about taking a vague idea and leading a huge cross-team effort to solve it.
Good thing we're on the internet where we can talk about the actual reality and lay everything out as it is without worrying about the social and political bureaucracy that infests corporate culture.
That being said, isn't what you described the role of the tech lead or manager? The best tech lead ultimately derives technical architecture by aggregating the expertise of the team and puts that plan into motion exactly as you said.
The term "architect" usually implies greater knowledge of "architecture" where the "architect" uses this "greater knowledge" to lay down a high level plan of the infrastructure. Additionally your initial post implied that this is what you think, because this is what you study for interviews.
Like I said, usually the architecture role is actually ends up in practice becoming an ex-engineer manager. That's the only actual role they can fit while maintaining the respect of the engineers and without being completely useless. This is basically what you described about yourself.
Thousands of people study about how to reverse a binary tree on a whiteboard and other needless leetCode to “work at a FAANG” even though they don’t do that everyday.
What you study for an interview is unfortunately often only vaguely correlated with what you do on a job.
Agreed 100%. Interviewing is hard. I would argue though that interviewing for "architecture" causes another issue. To give an analogy... it's like studying english for a programming job because english is used all the time on the job.
Architecture is just too easy and too obvious and if you just happen to not know a specific architecture or way of speeding something up, all you have to do is read about it on the internet like looking up vocabulary on a dictionary.
I would also argue that google isn't exactly just testing algorithmic skills in an interview. The spiritual goal of the interview is that the question they give you is novel and one you haven't seen before. The overall purpose of novel questions is to measure your raw intelligence.
The question isn't whether or not you know how to reverse a binary tree but whether or not from a state of not knowing how to do it, can you creatively come up with a way to do it in an hour? Raw IQ.
Of course the practice doesn't always match up with the ideal and often times interviewees can get lucky.
I'm not saying that this is the best way to interview. I'm saying that judging an interview based off of architecture is even worse. It's even easier and there's a lot of room for bullshit in a conversational interview as opposed to a technical question.
This is the reason that software engineers need adult supervision. The fact that you think that modern infrastructure is physical and static displays a lack of experience. There is nothing static about modern cloud infrastructure.
I just had to deploy an API to ECS/Fargate (Docker). We had to determine the best combination of memory/cpu of the Fargate runtime environment and what hardware we wanted to give the ElasticSearch environment. I basically wrote a CloudFormation template (infrastructure as code) that defined the environment and then wrote a Node script that ran the CF template and passed in parameters to vary the hardware environment (cpu/memory). After the environment was created, the script then ran a series of Artillery load tests, recorded the results of the load tests, gathered metrics from CloudWatch and estimated the monthly cost compared to the performance.
We reported that to management to let them decide how much they were willing to spend for the throughout they needed.
I’ve created entire environments with databases, Redis Caches, ECS clusters (think AWS version of EKS), etc as a proof of concept by using CloudFormation deploying code to it, showing management as a demo, and then tearing it all down just by clicking delete until we can come back to it after the contract is signed and then spin it back up with one command.
Note how I said "more physical nature," meaning that it's closer to physical but not completely physical. Either way, all abstractions suffer from leakage from the physical world. Data and processes, while seemingly abstract all occupy physical and temporal space and this fact leaks to all layers of the stack. Thus, technically, everything in the universe including computation is physical and nothing is ever purely a virtual entity.
Honestly, you think I don't know about docker? You think I don't know about the cloud? "Infrastructure as code" oooh buzzwords, you're just using a shittier domain specific language to write something that you can also do with Regular code (such as python, no buzzwords needed).
Give me a break, what web developer doesn't know about the above stuff? None.
>I just had to deploy an API to ECS/Fargate (Docker). We had to determine the best combination of memory/cpu of the Fargate runtime environment and what hardware we wanted to give the ElasticSearch environment. I basically wrote a CloudFormation template (infrastructure as code) that defined the environment and then wrote a Node script that ran the CF template and passed in parameters...................
OK, the stuff you did isn't even usually what a "architect" does. It's devops. An architect just diagrams the boxes and lines and gives it to the devops guy to spit out working infrastructure or a POC. But that's besides the point...
Can you write your own programming language? Can you write your own database? Can you write your own Operating System? These are actual specialties (none of which involve "architecture"), not some garbage made up specialty like "architect." At the very least, if you want to be part of an actual specialty in the IT world you need to build shit and that shit needs to be HARD to build, you can't just do some easy diagraming of a bunch of stuff while acting like you have some superior understanding of the latest architecture pattern you can look up on wikipedia.
You're implying that my comments are stupid and arrogant. Prove it if you can, let's get to the bottom of whether or not "architects" is a worthless specialty or not. I think you know I'm right and the only thing you have left are personal comments on my intelligence.
We all thought we were the smartest people in the room at one point, you’ll grow out of it too one day.
Again with the insults.
Why bother? Because you can learn and I can learn. I don't come here to trade insults. I come here to lay down the actual reality of what I see unimpeded by social norms. Yeah I'm sure I touched nerve here, but it's nothing personal, the internet allows me to talk about truths that are uncomfortable and forces me to face those truths as well.
I've been proven wrong tons of times on HN, so I'm hoping that if you disagree, you can prove me wrong and I can learn something and I'll return the favor in turn if you're the one that's actually wrong.
I find that this isn't the case with most people, they don't want to face reality. The fact that you turn to personal insults and have this whole "why bother" attitude seems to me as a cover. You don't bother because you got absolutely Nothing to offer.
As software engineers, we tend to be told especially when we are young that we are all “smart people” (tm). We start to internalize it (believe our own bullshit). But the longer your career is, you realize that the world is full of “smart people” and that your coworkers also came up thinking they were the smartest people in the room.
You don't even know how old I am, you don't even know what level of intelligence I consider myself to be. Yet you make a bunch of baseless comments hinting at my personal character. That is the extent of what you're trying to convey, an insult through and through yet subtle on many levels. Politics, the only essential skill needed to become an architect.
When did I say you can learn everything you need to know by reading some blog posts or Wikipedia? I never said this. I only said that you can do this for 'architecture' and that's why the job role 'software architect' is complete bullshit.
Now let's get back on topic. You disagree with me. You think architects know something about 'architecture' that is beyond Wikipedia and blog posts. Prove it. You think they have some ability that sets them apart from normal engineers. Tell me what that is and why there exists articles like this:
http://www.realfreemarket.org/blog/2012/09/13/never-trust-a-...
I don't want to see another irrelevant comment because that just tells me that you got absolutely nothing left. Prove the worth of a software architect.
* Forcing users to learn a specialized language vs reusing knowledge of a general purpose language
* Inevitable Turing-completeness creep and increasing complexity in specialized languages
* Complexity and difficulty of reasoning about general purpose code (and analyzability)
So GP does have a point. He/she is just not making it very well, I think.
A devops configuration language (outside the domain of architecture) is not included in this category. Please don't be manipulative and please do not lie.
It's obvious that the logical consequence of using Turing complete languages for devops introduce a lot of complexity into infrastructure and can introduce configuration that executes continuously as well. Bugs that only existed in the application layer now creep into infrastructure. Infinite recursion can now be spinning up infinite instances.
That being said the devops thing was a side detail and that's besides the point. The point is that the role 'software architect' is useless.
Personally, I prefer my configuration to be written in a plain-old language (e.g. Python) instead of a specialized config language (be it YAML or JSON based or whatever). I can test that code, I can reason about it, I can review it for bad stuff like infinite loops (not perfectly, but still), I know how it behaves when diffed and merged, etc.
Regarding software architects: I've seen a few companies where architects are hands-off demigods who prescribe complete architectures without ever having to contend with the results of their decisions. Those companies are, in my experience, few, and tend not to do well.
In a lot of other companies, the role of an architect is very similar to what Herr Scarface describes - individuals with a lot of experience who can make broad decisions based on both experience and data, and leave it to lower ranking engineers to work out the exact details. They do the hard/open-ended stuff and come to conclusions about the broad strokes (e.g. "yeah Redis will work well for this problem, but since you have denormalized data you might need a background process to restore consistency"). This is often called "scoping" and it is the main responsibility and impact of higher-ranking engineers (whether they're called "architects" or not, I personally dislike the term).
It seems like these people are capable but most actually are not. The reason is because they spent too much time in this role so they lose the skills of actually being a software engineer and gain the skills of bullshitting about architecture. So when you "interview" or talk to these people it really sounds like they know they're shit when they don't. The reason is, it's basically their job to talk about technology so they become really good at it, and if an interview doesn't involve a technical coding part, then they'll ace those interviews with flying colors.
If you get down to the nitty gritty and literally ask these guys to perform some very easy coding problem or actually implement a product you will tend to see a very high amount of incompetence.
I work at a startup where we accidentally hired one of these architects. The guy bullshitted his way to the top but we're having a hard time giving him a ticket where he works on the actual product. He's politically maneuvering his way around to only work on proof of concepts and holding irrelevant meetings to talk about architecture. Even roped the CTO in to support his case, which completely pissed off the entire team. Startups need people who can get the job done, not someone who can create a little bullshit bubble so that he can keep his bullshit salary.
This is very similar to someone who's been a CTO for many years. If you don't program, if you don't actually build architecture, you lose your technical skills but you gain bullshitting and management skills. This isn't actually completely bad as a companies need leadership and managers and sans the bullshitting part, leadership is a great skill.
It is completely wrong to assume that "Architecture" is some sort of skillset and that an "Architect" is more technically capable (due to the hire rank) than a typical engineer. Give them the title they deserve, and that is: Ex-engineer/manager.
>Obvious? No, and even less straightforward. Personally I think it's a good thing both kinds of tools exist, because each dev/team/project has different needs and different sensibilities.
It's obvious to me the difference between configuration files and turing complete programs or even python. You can extrapolate the benefits of using python or a configuration file. Have you hit an infinite loop error using python to instantiate instances? Maybe once or maybe zero times, but you can still use your brain to extrapolate that this is a potential problem even when you've hit this problem Zero times.
On a side note, you can also extrapolate that JSON and YAML can be turing complete. It depends on how something interprets it. For example:
{"fib": {
"PARAMS": {"y": "float"},
"BASECASE": [["X", "==", 0 ], [1]]
"RECURSE": [{"EXECUTE_FUNCTION": {
"FUNCTION": "fib",
"PARAMS": [["y", "-", 1 ]]
}}, "+", {"EXECUTE_FUNCTION": {
"FUNCTION": "fib",
"PARAMS": [["y", "-", 2 ]]
}}},
"main": {"EXECUTE_FUNCTION": {
"FUNCTION": "fib",
"PARAMS": [["y", "-", 1 ]]
}}
}
Awkward yes, but I'm just showing you a way where it can be possible in my garbage/made-up JSON above. Which you can extrapolate from that there probably is a much more elegant way of doing it. All you really need are two features: branching and self-reference. JSON or YAML does not actually preclude something to be not turing complete.>Personally, I prefer my configuration to be written in a plain-old language (e.g. Python) instead of a specialized config language (be it YAML or JSON based or whatever). I can test that code, I can reason about it, I can review it for bad stuff like infinite loops (not perfectly, but still), I know how it behaves when diffed and merged, etc.
Yeah, I'm kind of in agreement with you here as a personal preference.
The funny thing is that a single fairly large personal project will develop your engineering skills 42 times that of the hundred something leetcode problems you solved for your FAANG interviews.
One teaches deep long term critical thinking. The other short term critical thinking. You won't see any small short sighted systems out in the real world.
I had never heard of it until I read the thread under your comment so I apologize if this is obvious to people in the know. From the comments it sounds like more of the former and less of the latter.
I had a good experience with Project Euler back in the day (account long since lost). There was absolutely no focus on immediate employability but there were improvements in my "human capital".
There's tons of opportunities in a game engine for exercising and honing your performance chops and your algorithm chops. It also gave me an opportunity to learn a new language and programming model - the GL shader language. Building it onto a game helps to keep it real.
Best of luck.
You can get away with making a working, performant (basic) engine with some neat functionality nowadays without delving too deep into algorithms or using any advanced data structures.
It is a good exercise in “real coding” though.
Most of the times when I end up seeing the solution ot makes sense, but uses data structures in ways I wouldn't think. Part of the reason for that I think is because my daily work for one operates on much different types of data (business entities vs arbitrary collections of integers) and also because the logic in the applications I work on is not very algorithm heavy.
Another reason is because of high level abstractions I've been spoiled by. I could probably hack many of the problems together with LINQ but that's not gonna hold up very well.
I think they are ok if you like that kind of stuff and like to find solutions to those kind of problems. And if you have time.
Most people who hate them are grinding leetcode kind of stuff in limited time, taking away from sleep, time with family, time for rest.
If something starts feeling like a chore, maybe you are doing it the wrong way or at the wrong time.
Also, from being employable point of view, I think there are more valuable skills. I.e. if you want to work as a web developer, know a framework by heart, master a web programming language, know SQL, know HTML, CSS and JS, know some useful patterns, know about testing, SOLID, DDD, TDD, know how to use tools like GIT, JIRA, Jenkins, Docker, know REST/SOAP/gRPC, know async and parallel programming. Those were the kind of technical questions I was asked about 3 months ago when I went through 20+ job interviews. From all those only one asked a leetcode kind of question. It wasn't hard and it didn't seem like it was a make it or break it kind of question. Many years ago, when I applied for game development jobs, I was asked about Unity, C#, GPU shaders and a bit of algebra and geometry, no question was leetcode like.
It's been a long time coming, but finally doing it now.
After coming to grips with functional programming concepts (introductory in Ruby, more advanced in JavaScript) I decided to explore Elixir and what I found really surprised me in the right way.
So I've decided to dedicate myself to become very fluent in it.
If I may self-promote a tiny bit, I've made over 100 free Elixir screencasts on YT over the past couple years, with over 98% upvotes. Helping people in your situation was why I started the channel:
https://www.youtube.com/watch?v=z1nKbzZiRtY&list=PLFhQVxlaKQ...
https://www.udemy.com/course/the-complete-elixir-and-phoenix...
I've also been reading and learning a lot about dirivities and the overall US financial system. It's pretty wild how things _actually_ work behind the scenes. So much "wealth" has been created coming up with such schemes. The more I learn, the more I worry about us being in some serious uncharted waters, and I think maybe it's all too complicated.
1) open a Robinhood account with a small amount of money ($100) ought to be enough. Buy in and out of stocks every day for a couple days until you can get approved for their level 2 trading. Then, start playing with options.
2) Open an account on ThinkOrSwim and use their tools to trade a dummy account or use real money. The learning curve of ToS is higher, but it is more powerful
The fundamentals are pretty simple, but the strategies for combining simple elements can become very complex. The fundamental questions are: will this "stock" (you can trade options on other financial instruments as well) move up, down, neither, on both? To what extent? Over what time period?
1. The entire market is a big casino. The main question is what kind of risk you want to assume in your bet. Everything you do in the market is a bet/gamble. Don't fool yourself otherwise.
2. Options are a high risk avenue, but can also have some of the highest returns.
3. Learn the lingo. Traders use it so much you will be lost if you don't. (https://www.investorsunderground.com/acronyms/)
4. Start small to learn the ins and outs of your broker.
5. Understand that stocks are not a reflection of the companies actual value. They are a reflection of the markets perceived value of the company. The difference is enormous.
6. Do your own DD (due diligence). Read the docs the company has and is putting out. Do your own math. Don't rely on analysts, but you can use them as a reference.
7. Learn what IV crush is!!! (theta gang ftw)
8. Learn the most common strategies used. The wheel, put debit spread, cash covered calls, etc. Different situations and risk profiles in the moment are better suited to certain strategies.
9. See what crazy plays turned out good, and which ones bad, and seeing what strategy was used, how was the DD, etc.
10. Lastly, and less commonly talked about, never underestimate the power of powerful people's connections and interests in a company/stock. This is why I tend to focus heavily on ownership analysis and board analysis. Sometimes every normal, quant level algorithmic indicator points one way, but the connections say otherwise... and the connections almost always win out.
Bonus material: https://www.youtube.com/channel/UCcmZHsuUt_DOzcgIcLd0Qnw
Yes, brokers are idiots who think defined-risk spreads are more "advanced" than holding the bag for premium decay and not even knowing why you're losing money. Sorry.
I am implementing these algorithms, so I need to understand a lot of the details. Here are some notes, which are work in progress: https://notabug.org/ZelphirKaltstahl/machine-learning-notes/... I try to write it in a way, that does not leave open questions and will be accessible to me and hopefully others years later.
Try to take a ~30 minute nap in the evening somewhere that is quiet and comfortable but not the bed you sleep in. 4 hours isn't sustainable for long, but I've found a nap in the evening is sufficient to let me run effectively on 5-6 hours.
I say somewhere that isn't your bed because I've found that if you settle in the bed it can be far more difficult to get moving again, and also you can start to associate the bed with naps and have more difficulty getting to sleep when you mean to later, and staying asleep.
If by any chance I do have time the only place to sleep that's not my bed is the floor. We sold all of our furniture and moved during the middle of this pandemic and all the dang furniture stores are closed!
Right now I got my hands on Tufte's "The Visual Display of Quantitative Information" as per some HNer recommendation (thank you!).
Yeah, I lose interest quickly, eh. There's so much cool things to learn that in the end I learn nothing well. Bummer.
edit: grammar, spelling
You are also of course aware of that knowledge in the first place, which may be even more important. In the timeless Rumsfeldian: you have pushed back a bit at the unknown unknowns.
The alternative path of deeply learning something you may never apply (e.g. what happens to many PhDs) seems inherently less desirable, in my opinion.
I built a basic tool to help my wife track how much time she spends on Telehealth calls, you can see it here:
https://telehealth-tracker.onrender.com
She is a family medicine doctor and now virtually 100% of her time now doing phone calls instead of clinic visits. She wants to do a QI project and needed to be able to track the amount of time her and her colleagues spend on various parts of the Telehealth visit.
Studying: The Molecular Biology of the Cell by Alberts et al and Advanced Macroeconomics by Romer.
https://www.versobooks.com/books/2499-the-general-theory-of-...
I’d classify my style as synth wave meets 80s arena rock for the current track I’ve been working on :)
My learning path is here [0] and I’ve also been uploading works in progress to my soundcloud [1]
[0] https://learnmonthly.com/u/dave-mosher-e2bc26/andrew-huang-m...
The same newsletter made me read a book about motivational psychology (The Righteous Mind). A very interesting topic, that I would love to learn more about, if I had more time.
Last year I've (re-)read Category Theory for Programmers. I had tried it once before, but gave up after a third, as the notation didn't make much sense to me anymore. I would like to read it again, creating flash cards for the most important concepts along the way.
For Adobe AE I'm learning on these Youtube channels:
https://www.youtube.com/channel/UCQyoKfULtJaHqSxB80Efw4w https://www.youtube.com/channel/UC64eec0UYHxflyEWgyZOvLA https://www.youtube.com/channel/UCP3AIk974-PeB9bg1Mc7wug
For 3D: https://www.3dfordesigners.com/blog?tag=learn+cinema+4d+lite
I've always thought the work was an absolute masterpiece, but utterly inaccessible and the holotype for the word jargon. So, I'm trying to write vignettes of the work, with characters that personify the 'great ideas' in the Syntopicon. Something like Godel, Escher, Bach. Hopefully, this personification will be more accessible and readable than a gigantic listing of page numbers and linking information.
Thus far, yeah, just wrapping my head about the linking documents is tough, but there is a lot of 'meat' on the bones and turning ideas into people is surprisingly fun.
I doubt I'll ever finish the project, but it's a great deep dive into the Western Cannon.
https://en.wikipedia.org/wiki/Great_Books_of_the_Western_Wor...
I'm (re)learning OpenCV and OpenGL since I haven't used them since college. Working on this is also forcing me to learn the FFI corners of Rust I was unfamiliar with.
I'm combining Kinect (k4a) depth sensor data to build real time 360 degree point clouds.
[0] The Structure and Interpretation of Computer Programs by Abelson, Sussman and Sussman
[1] https://ocw.mit.edu/courses/electrical-engineering-and-compu...
(I don't have a course to sell you and my services are not available for hire.)
Top-down begins with broad context, such as the history of programming languages, the advent of objects and classes, and eventually zoom in to modern languages, syntax and functions.
Bottom-up works inversely; maybe you’re given a Python sandbox, a hello world, and a cheat sheet. You explore what you can do and build on those low-level operators to create foundations that frame wider context.
Effective learning is always a mix of both. Everyone learns somewhere on the spectrum, maybe bouncing around depending on motivation and experience.
With respect to your goal of learning marketing, you’ve identified your path of study: strategy. And just like your SaaS product was created out of an understanding of functions and needs in a space, so too should your research explore the functions available to your business and how they’ll affect your pipeline.
Simplified: you have a tool, and since you have revenue, you know people want it. Your goal is to find questions to ask and answer them, and use that feedback to make decisions regarding your marketing strategy.
-What is my biggest source of traffic to my site? Where do they spend the most time? What causes them to click buy? How can I use these data to optimize my funnel?
-What is my total marketing cost divided by the number of paying users (CPA)? What’s their expected lifetime value? What do other products in my space cost?
-What do my customers and affiliates describe my product as? What problems disappear once they subscribe? How does this translate to value for decision makers? Do my enterprise sales represent 80% of MRR or 10%? Should I use multiple approaches to entities of different scale?
The questions you’re asking are the right ones. And like any other field, they multiply and become more specific - but if you bear in mind the top-down goal (spend less, charge more) of a business, things will crystallize quickly.
Choosing a meaningful and definite objective is the second hardest part of marketing.
The hardest part is talking to customers.
You'd like to buy some more customers, right? So do some research. What kind of customers do you want? How much are you willing to pay? Where can you get a great deal on them right now?
Many business owners spent more time researching lunch options last year than customers. Why?
What's the most obvious way to get more or better customers? Spend 45 minutes writing down every idea you can think of. Every single idea. You'll get through the fluff after about 25-30 minutes.
Then find the options that use your existing strengths, preferably in a non-obvious to your competitors way, and turn them into a story.
That's your strategy.
Do those things and see if they get you closer to your objective. And move fast.
Try big things, don't tolerate slow learning, and remember that you learn from reflecting on experience, not thinking about tools and techniques.
Let me know how it goes!
I'm a native English speaker and Russian would be my fourth language. Perhaps I'm simply approaching the limits of my language ability, but the grammar rules with cases that I've learnt so far are doing my head in. It's very discouraging. I don't intend on becoming completely fluent, and so I'm trying to find shortcuts to be fuzzy about the volume of grammar rules to keep in mind.
What have you found difficult? What resources are you using? For me, I tried memorizing the rules for cases, but it was a complete waste of time: it was trivia disconnected from any usage of the language. What is (slowly) working for me is focusing on a single phrase with common words (e.g. в сибири, два пива).
Aside from the obvious resources (a good app/textbook; Anki), I have really learned a lot of the fiddly bits from this YouTube channel: https://www.youtube.com/user/russiangrammar
Thank you for sharing your experiences and the YouTube channel recommendation.
I've been alternating between the interactive lessons on http://learnrussian.rt.com/ and "The New Penguin Russian Course". I've been enjoying the former a lot more because there's audio to accompany written content, which helps when I try to enunciate words. There are also tests, which helps me measure retention. The latter book feels more like dry reading to me, but coverage seems very comprehensive.
I haven't been learning for all that long, but the two things that have been regularly catching me out are:
- Knowing which "o" letters in the word are stressed, in order to pronounce it correctly (I default to reading them as "o" when they should instead be "a")
- Looking up new words in sentences is a bit harder because they often occur in conjugated forms (i.e. not only verbs, but nouns too)
https://en.wiktionary.org/wiki/овощи https://en.wiktionary.org/wiki/стоит
For example, "молоко" is pronounced differently in different parts of the country. For me, the first "o" sounds more like a "ə" (think bOOk) around Moscow, and more like "a" further east.
I have been wanting to go through the tutorial you shared when I get the time, though!
I am also going to soon start marketing my project [0] so I am reading a lot about launching products, pricing and how to attract attention.
At work I'm working on anomaly detection using ML at the edge and want to move beyond bog-standard stochastic gradient descent to fit the model(s) in favor of methods that exploit the use of analytical Jacobians / Hessians. So I'm comparing and contrasting the various nonlinear (gradient-based) optimization methods for my use cases and trying to see how fast I can make them run.
- https://15445.courses.cs.cmu.edu/fall2019/schedule.html - https://15721.courses.cs.cmu.edu/spring2020/schedule.html - https://umbra-db.com/ - https://hyper-db.de/
I'd argue the majority of daily vocabulary is completely different, both in writing and in pronunciation, than its mandarin counterpart, such as some of the most commonly used words 而家,頭先,邊個,喺唔喺係,佢哋,講,有冇,點解,佢同佢講,畀 as in 我講畀佢聽,聽日,尋日,嗰陣時,嗰個,嗰啲, I could go on and on. Even after all this time, I didn't know the characters 是 or 哪里 until learning them a few weeks ago. Likewise, if I were a native mandarin speaker and heard the relatively simple, common sentence 佢哋而家喺邊度呀 spoken to me, I would understand exactly 0% of it. Grammar is significantly different with word placement, nuance of ending particles, usage of adverbial comparisons using Noun + V + 得 + 過 + Noun, using 畀,未。。。添, etc. I cannot understand a shred of mandarin when spoken to me, despite being able to communicate conversationally and understand most of spoken Cantonese from others. https://languagelog.ldc.upenn.edu/nll/?p=1211. There are varieties of sources analyzing the etymology of words in sinitic languages as well as their grammar structures and phonologies. Both languages are far from being mutually intelligible for monolingual speakers. Perhaps being a native speaker in both has allowed you to have a comprehensive mental-map of their isomorphisms.
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
Tech-wise I'm digging into machine learning, particularly around natural language processing and sentiment analysis.
[1] https://crypto.stanford.edu/~dabo/cryptobook/BonehShoup_0_4....
We have some Lamb's Ear [1] in our garden that I had a decent amount of success with, but I used up most of the dead stuff from last year over the course of the afternoon.
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
* 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...
I trade options on equities regularly and recently a friend has been looking for help on figuring out how to handle a large amount of money they came into, so I figured brushing up on bond investing would be helpful since their risk tolerance is substantially lower than mine.
I've become interested in stocks/trading recently and have been wanting to understand it well enough before losing all my money. I started Financial Markets [0]. Just finished Week 1 and it seems a little too broad/dry so far. Any recommendations are welcome.
Slowly a general understanding emerges and then I can flesh it out by seeking specific details once I know what I don't know. And by reading and comparing multiple resources I get a very full and objective understanding.
Investopedia has been the single most helpful site by a wide margin. Their content is top notch.
When I hit on something I can't find the answer to, I ask the customer service at my brokerage (Etrade) and they're very helpful. But if it's a very specific question, I've found I'm best off asking to speak to their customer service team for that specific thing, like their bond desk or futures desk, etc.
It's a balance I know, and we shouldn't be super focused especially early on in our careers. But at my current job we have a huge tech stack and a tiny team, I am constantly learning, but never in any depth, just enough to solve the last bug and then change to something different. It feels very like a very unproductive way of working. Very little of the new tech feels like it actually helps. Kubernetes while we don't actually need to scale for the foreseeable future. NoSQl when we don't actually need to scale. Asynch web servers when synchronous would be fine. A React monstrosity on our frontend, when server side rendering would be perfectly functional for the problems we are trying to solve. Google cloud - fair enough we actually do need that one or something equivalent.
Edit: On looking through the other answers I see that a significant number are not tech related which is refreshing to see.
My favorite example: cropping a photo to improve composition. It's simple and easy to do, but it can have a comparatively large impact on a photo.
Learning more and more specialized tech can give diminishing returns.
Or I see a lot of CV's where people collect web frameworks - which essentially do the same thing. Yet whenever I inherit Django code, it seems to be done by someone with only the most basic knowledge of how to get things done.
Doing this has been one of the best experiences in my life and it was a very cheap bike to buy and I only needed a pretty basic set of tools on top of it. I don't own other vehicles but I bet that, down the line, it will save me a lot of money that I may otherwise have given to mechanics. I would recommend doing this to anyone that has an interest in it, it doesn't take expert knowledge, just a healthy level of gumption :)
I'm not using any frameworks. Took a bit to figure out code generating wasm, but once I got the basic emitter/IR working it got a little easier. Plus you start being able to read the binary format after a bit of practice.
I think there's untapped potential for techies and scientists to infiltrate the political landscape.
I don't think I'll ever be famous but I'm arguing everyday and pushing hard for people to fight for themselves, and to push the ideas.
We had a gameboy as a kid, but the ZX Spectrum (also Z80 CPU-based) meant more to me so hope to take what I learn from the great articles from imrannazar.com and apply to writing a ZX Speccy emulator (the gameboy had dedicated-hardware for sprites etc so not everything will be transferable).
Yes both gameboy & spectrum emulators in javascript have been done already, but this is just for personal learning/fun/itch-scratching. It has been quite instructive both from a remembering-fundamental-cs-classes/how-computers-really-work perspective, as well as modern javascript
I've also spent a bit of time watching youtube videos on a channel called "RÜNGE CARS". This guy hand forms aluminum bodies and builds his own chassis and they're pretty cool cars he making. The craftsmanship is impressive and so is the process. He pretty much takes you through it step by step. I still have quite a few of those to take in.
Aside from that CouchDB 3.0 was release just a couple weeks ago so I'm learning about what's new and how it applies to my work. They're doing some impressive work on that.
I started doing Leetcode several months ago because I wanted to change jobs soon, but it's really exposing what not having a traditional CS background is costing me. I feel guilty looking at the answers on there and in Cracking the Coding Interview but I genuinely don't know how to make things faster. Seeing some of the answers in CTCI after attempting some of the string related questions made me ask myself "well, why wasn't that talked about in the informational section preceding the questions?"
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.
This is the first time i am studying based on the topics rather than following syllabus. I wanted to understand covariance for calculating similar interest b/w users to suggest the posts viewed by a user in the app i am developing. This took me down the rabbit hole and forced to learn everything required to define covariance. Its talking a lot of time but i feel it's worth it because now i have a strong foundation. Also its nice to follow more than one book because i have no attachment to any of the books. When in college i used to get attached to my notes or the first text book i follow, but studying a topic from many books have no attachment to either and its liberating.
I'm writing a compiler for SQL that parses DDL (CREATE TABLE, etc.) and queries and outputs type-safe Go. It currently supports PostgreSQL, but the plan is to support more engines and more output programming languages.
My paid work is currently (inherited projects in) c#, so I try to mix environments by experimenting (and studying the runtimes / compilers at the same time) with little tools/libs [0] (not for production, but I keep wondering if there are ways to bring things that help me from in language A to language B).
I'm learning it in a way where I actually understand how things work rather than just the way I was blindly taught in high-school.
Sounds boring but it's pretty interesting.
So far, I’m very impressed, very clear presentation style and he does a good job of explaining the fundamentals and maths (which is good as I’m pretty rusty at maths!) while still keeping it fairly concise - my main issue with learning from video is often that it “waffles” a lot and I could get the same knowledge from text much quicker, but it doesn’t feel like that here.
I may switch to the deep learning specialisation or try to get my hands dirty with a more hands-on course after I understand the basic concepts but we will see, I’m actually enjoying relearning some maths more than I expected to!
I'm also starting a Coursera course in audio signal processing. Lets me scratch the technical itch a bit while not distracting from music. My goal for later this year is to build a guitar pedal or 2 from scratch.
What can help with this is a concept called the "1, 4, 5" rule (it's actually called the I, IV, V rule but let's keep it simple). Basically, you start in a key, say the key of A, assign that to 1. The 4th and 5th chords from that starting chord always sound good with the 1st. So for the key of A, the 4th and 5th are D and E. Notes start over after G, so if 4 and 5 go past, like with G, you start over at A. In the key of G, the 4th and 5th are C and D respectively, for example. This is at the heart of blues music. For me, the easiest three-chord progression for my fingers to learn was G, C, and D.
There are a lot of little "rules" like that in music theory and it can be fun to learn them and experiment. If you find that you are really getting into it, I recommend dropping $300 or so on a decent acoustic guitar. There is something to be said about an instrument you can just pick up and play and not have to worry about wires and interfaces.
Yousician has some fun guitar hero-esque tutorials if you’d like more interactive feedback.
[0] https://www.guitarprinciples.com/shop/the-principles-of-corr...
Hopefully that changes soon
For school, I'm learning networking. Finding it a bit dry, especially learning about packet structures and such. The book we're using, "Computer Networking: A Top-Down Approach" by Kurose & Ross[1] is great and the authors' personalities really shine through!
For work I'm learning about databases and how to gain access to it from a web app. The world of databases (specifically PostgreSQL) and SQL is entirely new to me. Currently trying to figure out how to best connect my Flask app with my Postgres DB.
Currently learning Rust whenever I have the time/motivation. It's a great language with some really clever design choices, but it's a pain in the ass to learn, especially without experience with lower-level languages. The incredible amount of other cool languages, such as Clojure and Elixir, can make it hard to stay focused!
Also been meaning to get into vector graphics (Affinity Designer[2] is on sale right now) and philosophy, but you know...the usual excuses. Honestly, the incredible amount of CS-related topics I know nothing about, including some really basic ones, makes it hard to study anything else out of sheer guilt.
As for philosophy, if anyone are curious, a book that was recommended to me by a philosophy major buddy is "The Problems of Philosophy" by Bertrand Russell[3].
[1] https://www.thriftbooks.com/w/computer-networking-a-top-down... [2] https://affinity.serif.com/en-gb/designer/ [3] https://www.thriftbooks.com/w/the-problems-of-philosophy_ber...
* Exploring and playing with new capsule routing algorithms in deep learning models for vision and language tasks. Particularly intrigued by routing algorithms in which output capsules seek to "explain" (generate/predict) their input data (e.g., EM matrix routing, Heinsen routing).
Join the discord https://discord.gg/vGY6pPk.
Check out a demo https://observablehq.com/@enkimute/animated-orbits
Also just started trying to learn Svelte today. And I'm about to jump on the breadmaking bandwagon.
Video here: https://www.youtube.com/watch?v=mIhi4BuDSf4
I just applied to a course from Berkeley trough Corusera, and they are really great, but I'm not trying to rush trough, as this is my main way of trying to learn, making me lose interest because of the overflow of information.
If anyone has any good books, courses or tutorials on this, that would be a great help too :)
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.
I have many hobby projects next to that and can never finish any of those, but they are also only motivated by 'oh that might a cool thing'. I have not yet found a side project which solves a problem big enough to motivate me to actually finish it.
Our voices are a beautiful, natural instrument we carry everywhere with us, from the shower to lonely business trips to walks in the park. I've always had the desire to put it to work. Singing is also an ancient tradition of bringing melody and lyrics to people. For me it's not about singing like a soul or blues singer (ie Joe Cocker) but more like Chet Baker: get the notes right (pitch) and building them into elegant phrasing, which needs control of tempo and great diaphragm training. Music is undeniably great for your brain, which can include learning and memorizing a ton of lyrics, tempo and pitch. As an art also very appreciated by most people, who really feel grateful by a (good) vocal performance, sometimes more than by any other instrument. Hearing yourself improve and sing well gives a high dose of happiness and confidence builder.
It's also an excellent breathing and speaking exercise, which increases your ability to communicate effectively, projecting and modulating your voice effortlessly and making it easier to jump in into a conversation. Also gives your voice the stability to fend off your nerves or anxiety. For an introvert like me it's definitely a very effective tool, it makes me feel like "in the matrix" as far as speaking goes, as my brain thinks ahead of time or just in time, so my mind feels snappier. In other words, I feel like a more spontaneous person since I've started to sing.
I figure it's gonna be a while before we get back to normal. People will continue to crave attention and video is a more scalable way to disseminate your knowledge vs traditional meetings or Zoom calls.
I'm specifically looking at doing more analytical video game streams and educational Machine Learning content for the advanced n00bs.
Who we view as charismatic will change quite a bit in the near future since we can endlessly edit and improve our message before we share it with others.
One quote about analysis that I read online somewhere is that you should study it until it starts to feel "natural." At the time, I guess it sounded true, but I didn't appreciate what it actually meant. Now, I'm starting to.
It takes a lot of effort to digest each new lecture, but I'm excited to see what the rest of the course holds, and to graduate to "real analysis" afterwards.
My project is a hosted blog platform where you can edit a Google doc & publish it as a blog post, which is useful for publishing rich blog posts with tables, while keeping features like review/collaboration, tracking changes etc.
I'm learning:
- Spanish with Duolingo
Visited Spain last year for a few weeks. Loved the people, the culture and the food. And really really wanted to pick up a new language.
- Music production/mixing with Ableton Live
This has been something I've wanted to play with for a very long time, and thankfully there are so many resources on the internet to get started. Music has always been a constant part of my life, and production is basically coding with notes and sounds! :)
- Just started getting my beak wet with investing in the stock market
I've always been skeptical of investing my $$$ in the stock market, more so being the first generation in my family earning enough to afford (what my parents would call) "luxuries". But I want to be more invested (literally and figuratively) in making my money work for me. Thankfully, have built up more savings than I need for years and given the stock market scene right now, it feels like the right time to dip my feet in for the long term.
I dunno how much of this will last over the next few months, especially once we start going back to office to work (I'm a person who LOVES going to office even though we have unlimited WFH), but one can hope! :)
I've enjoyed learning a programming language at the same time as learning an interesting subject so much that I plan on repeating it!
[1] http://raytracerchallenge.com/ [2] https://github.com/garfieldnate/ray_tracer_challenge
Bad technology that gets this part right almost always does phenomenally, astoundingly, inconceivably better than great technology that gets it wrong.
I'm tired of building things that only I and a few people really like, like some underground band only a few people know. It's nonsense, I gotta learn how to do the human part better.
https://en.wikipedia.org/wiki/Crossing_the_Chasm
https://en.wikipedia.org/wiki/The_Innovator%27s_Dilemma
https://www.davidow.com/books/marketing-high-technology/
https://www.amazon.com/Four-Steps-Epiphany-Steve-Blank/dp/09...
Each of those books are projects (the order I put them in is more or less recommended) ... that's probably a couple months of careful study.
If you want to intersperse it with light reading, the following non-fiction novels are really good examples of the principles in practice (in not always obvious ways):
https://en.wikipedia.org/wiki/Masters_of_Doom
https://en.wikipedia.org/wiki/The_Soul_of_a_New_Machine
You can get used copies on ebay for about $3 each.
Thoughtfully engaging with the material is likely worth 1,000 times that.
Also the commonly cited Reid Hoffman, Seth Godin and Peter Thiel books I think are mostly a waste of time. Al Ries is ok (and quick) and Jim Collins is good if you're trying to turn around a 5,000 person company, but oh, if only I was so lucky.
Anyway, if you want to come back after reading those, I can give additional recommendations
For a 90s take on that theme, try this one: https://en.wikipedia.org/wiki/Barbarians_Led_by_Bill_Gates
It's worth quoting how microsoft responded to some groundbreaking technology from Go computing by Microsoft putting together a fabricated circus claiming they had matched the technology:
Eller's group kluged up this demo for videotape that showed how
edit in place would work. He launched Excel with a chart in it. Then
he launched Word with the chart cut from the Excel program. The
smaller Excel window was hiding in the background, and the Word
window was bigger so the audience couldn't see Excel. Eller drew a
gesture on the chart sitting in Word, which called Excel to the top.
As long as Excel was in the right place, it came right up on top of
where Word was, and it didn't look like anything had moved. It
looked like Word had just popped up the Excel menus right into the
middle of the Word documents so it could be edited. Eller made the
changes in Excel and closed it. He hooked up a software instruction
that told Excel to move to the background and disappear behind
Word. Then it looked like he was working again in Word with the
proper Excel document embedded in it.
It looked great on the tape, but it was total bull, pure smoke and
mirrors, the apotheosis of vaporware. There was no linking or embedding
occurring. Eller was simply pulling one application to the
front of the other one.
At the company meeting, executive Mike Maples stepped up to
the podium.
"Okay, here's this other thing we're working on," Maples said.
"Here I have my document, and I have my tablet here." He held the
pen up and waved it.
"Now I can go into my Word document here, and I can write."
While Maples was talking, charts and images flashed on the
screen, and everybody thought he was actually writing on the pen
tablet as he spoke at the podium. In actuality, he was just waving his
pencil over blank paper while the videotape ran.
next up on that stack for me to read are Barbara Garson's The Electronic Sweatshop and Robert Cringley's Accidental Empires.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.
One too many times have I though to myself that a just little bit of awk might go a long way to help with extracting information from a pile of data.
Now working my way through Effective awk programming. So far, no regrets.
https://www.gnu.org/software/gawk/manual/html_node/index.htm...
Surprisingly, logistics (and the Mandarin around it) is interesting! Going through some of the "Incoterms" now. It's fun to learn something new and a language at the same time.
Also learning about email parsing. Not something I had thought about before but there is a lot to learn and lots of edge cases.
On the code side I am building a logs database in Rust. I have previous experience building databases and in particular time series databases so most of the learning here is mostly about Rust which I have used before but not for this type of project. Also getting deeper into regular expressions, query languages (parsing/lexing/AST) and query optimisation than I have in the past.
Rust is growing on me more than it did in the past. I think a) because it's a much better language than it was when I used it previously and b) my experiences since I worked with it last have garnered me more respect for it's design decisions and type system.
Feeling like I am learning lots of stuff right now despite being trapped inside so that is good. :)
Also, related, found this in Coursera while looking for courses on Systems Thinking: Big History (https://www.coursera.org/learn/big-history)
I'm still awful at it, but I can now manipulate art from other sources fairly comfortably. And I'm at a point where I can make geometric types of shapes and patterns easily enough from scratch. It's already enough that I look at logos and things differently now, to see how I would go about building them in these tools.
Unfortunately, I still dislike this aspect of game design compared to the fun of lying in a hammock and run thought experiments on the actual gameplay systems!
I am learning Latin and Spanish on Duolingo but thats more at the hobby level, about 10 min a day.
Fun way to jump back into React while also learning new concepts!
- Started learning about building versioning into firmware. Found some great posts from the Memfault Interrupt blog on GNU build IDs, and another one from the Embedded Artistry blog on adding more generic versioning.
- Also learning about analog drivers and generic analog design techniques from designing the output stage of the next board revision.
- Learning the most from building prototypes and selling them to people. It's given me a crash course in writing good, useful docs, and getting people up to speed quickly.
If you want to get involved, there's definitely more boards, and plenty of stuff to be done. Feel free to email me at <hn_username> at gmail dot com to see about arranging a board for you!
So far I’m having success and fun with Pleroma and Matrix.
Originally, I was going to do a hiking and photography tour of Fennoscandia in the Fall. I'm not sure if that'll still come to pass with the ever-looming collapse of society, but at least it's pretty refreshing to learn a new (non-programming) language for the first time in over a decade, and for the first time in my adult life.
Went into it with pretty much zero knowledge of the language, and the thing that caught me most off-guard were some of the non-phonetic spellings, like _jeg_ and _kjøpper_, but else the actual grammar is similar enough to English that it's not causing too many issues!
Our robot is not operational yet, so I will include a YouTube link below of the creator with a couple of his own completed “cats”.
Settled on pongo2, which has django-style multiple inheritance, which is IMO essential to keeping an html template hierarchy organized.
With it, I’m writing an ActivityPub spider (code is messy and not fully organized yet):
https://git.eeqj.de/sneak/feta
and also an HN transparency tool that highlights things for me to read that get nuked from the frontpage:
https://git.eeqj.de/sneak/orangesite (live at https://orangesite.sneak.cloud )
Next up: rust. I have about 4 go projects I want to finish first, and having a good templating system means they will be somewhat polished when I shelve them.
That and I’m learning condensed matter theory from Altland. Can’t recommend this text highly enough.
0 - 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
Rust for a side project I've just started.
Music production techniques and how modular synthesis works.
I also started skateboarding a couple of months ago after around a 8 year break so I'm getting my flat ground practice on my patio haha (although I'm taking it easy for obvious reasons)
Non-technical: I'm learning to create music to help satisfy my creative side. I'm starting with the piano, and when I can get to a basic proficiency, I'll slow down and jump to some voice lessons I bought a while back. Then, I'll put it together with reaper, using some of what I learned as a teenager.
Technical-Creative: I'm returning to my project to do a deeper dive on what makes programmers bad, mediocre, good, or great, and creating a track that others can follow. While I have the framework already, I am trying to learn a whole set of skills well enough to teach others.
Technical: I'm patching up holes in my EcmaScript ecosystem knowledge. I never really took the time to truly grok Shadow Dom, the Redux patterns, and the like, even though I was managing a team who was working in it.
I'm learning how to rebuild my 3d printer for the third(?) time. Each time something breaks it starts off as blind confusion, and over the weeks I figure it out and then I feel like a genius when it it works.
I have a business I want to build, and I'm working on estimating what the cost of the individual items / products are, how long they take, and how long it really "costs" me. I'm working on fixing up the website and improving it.
I have a wall of post-it notes in different colors I'm using to track all of this stuff. As a developer I hate time tracking and project management in general but I'm learning a lot by doing it myself. Progress is slow, but at least there is progress.
My problems - I feel like I fail to quickly assess the other person and fail to adjust my communication - so I am either way too technical in the lingo or way too much of a layman talk that makes it feel like I am being insincere!
I also fail to give up the 'problem solving' angle in communication - like I have to remind myself constantly that communication is rarely transactional or a means to an end.
I am realizing what I am missing is that I fail to take interest in other people and their viewpoints and with some concrete strategies and practice I could do better.
It's never been a problem as such - the few times it was a problem I managed to retry and resolve, but I want to bring joy and ease into my in-person communications.
Jerry rigging this is hard - I think a more relaxed, in the moment and self-forgiving approach is needed.
We are a small IT consultancy, 20 years books and always had three months loot in the bank just in case. I could never have predicted this thing but I've always wanted to sleep at night so insisted on a war chest. Damn I'm boring but as it turns out boring is quite handy now. We have furloughed (UK) a few troops. We top up the extra 20%.
The calls on the helpdesk are decreasing but at some point I will need to find more work for the kids. I see a major programme of updates in the near future. BIOS, switches etc etc etc ad nauseam. If it fails to move it will be updated. We do rather a lot of that anyway but to ensure that contracts are fulfilled, we need to be seen to be doing something.
Any other employers here like to pitch in (be careful for obvious reasons)?
[1] https://en.wikipedia.org/wiki/Graph_drawing
[2] https://www.acm.org/articles/bulletins/2020/march/dl-access-...
I just started following OCW's Finance Theory class and I'm starting to read the text book on corporate finance and watching a lecture a day during lunch. I've always been interested in economics, so this is just learning for learning's sake. https://ocw.mit.edu/courses/sloan-school-of-management/15-40...
I'm just about done reading "A Look at Boulder: From Settlement to City," about the history of Boulder County, CO. Again, in this case I'm interested in local history, so I'm just reading it before bed for fun.
Two weeks ago I installed FreeBSD on a spare hard drive, and I've been reading through the handbook and learning how to do various tasks as they come up.
I'm writing a Spotify client in Common Lisp, so I'm learning about the Spotify API and architecture. The beginnings of the library are on Github, but right now it's really just a utility library for making API calls, and not much of a client. This started as the thought, "It'd be neat to have a library to control Spotify from the REPL," and is turning into a full client because spotify-tui is the only client I can find on FreeBSD. https://github.com/jl2/cl-spotify/
At work I've been helping the test team write functional tests for some Windows software, which I haven't used in years, so the past week I was re-learning "just enough" about Windows and Python's win32com library, and learning about AutoIt for the first time.
I've been learning to track stand on my bike - it's something to do during stoplights.
And I impulse bought a pot roast on Friday, so today or tomorrow I'm going to learn how to cook one.
Cool talk about the subject: https://www.youtube.com/watch?v=yNMBOj7JUPs
More specifically, trying to build a static site that has all the indexes of my programming books indexed and searchable using Bleve.
Edit: If anyone has tips on how to extract text from indexes of books that'd be great. Currently thinking of using OpenCV as I'm comfortable with it.
Some of the books on my list are: The Secret Life of Salvador Dalí Doctor Goebbels: His Life and Death I, Claudius by Robert Graves The Agony and the Ecstasy Lust for Life Carl Jung Memories, Dreams and Reflections. Stephen King - On Writing
Also experimenting with my 4th home-brewed beer.
"Soft skill"-wise I spend time helping people with good (so I hope) advice and recommendations and a bit of interview mentoring to enter the software development industry. Makes you learn a lot about yourself and how you can motivate and help people big time with only a tiny amount of your time and energy, just sharing stuff you know.
Web dev tooling really has come a long way in the past few years!
So far I can parse a configuration file, apply rules, handle (manually specified) dependencies, and configure triggers to run on rule-actions.
Not a bad state to be in for a few hours work. Of course the big decision is if I continue, and write modules for doing more than I have right now. I suspect the rational answer should be "no". But I kinda like the existing implementation, and being go it is trivial to install/deploy.
I have also been reading Modern Operating Systems by Tanenbaum- though a quite old edition from the early 200s- wondering if its worth putting on hold until I can get my hands on a newer edition.
Next up, I'd like to do Ben Eater's 8 bit computer as well as nand2tetris.
https://www.amazon.com/Functional-Differential-Geometry-MIT-...
- Go & its entire ecosystem
- Packaging & deployment via RPM
- Layout & design a web ui (this was done by someone else in my previous jobs)
- Personal project management (I'm a one-man team atm)
- Code generation via Swagger
- Architecture & technology choices and documenting them as I go
- Working from home full-time (not by choice) and staying productive
- Warhammer 40K <_<https://github.com/fedden/pluribus-poker-AI
I've been learning about Counter Factural Regret (CFR) and have been using it to iteratively work towards writing a no limit texas hold'em poker playing AI agent. It's still in the early stages but seen success with simple forms of poker such as Kuhn, and have expanded to a form of short deck poker.
I have also been brushing up my web skills by creating a visualiser for the poker state via Flask and Vue.js
Learning about directory services is empowering, and stuff like keycloak let you build your own single-sign-on solution with very little investment (except for willpower to learn).
Also how to fix my car. I'm currently refreshing all the coolant pipes since once ruptured the other day. It's not that hard, but some of the pipes are difficult to get to, and I'm procrastinating about disassembling essentially the entire front end of the vehicle in order to be able to access the radiator and replace pipes attached to it. I've already replaced the ruptured pipe no problem but, since all the pipes are the same age, I figure it's only a matter of time before another splits.
Manufacturing is fascinating and I'd love to own a small factory at some point, profitable or not!
1. Finish my ml research project 2. Learn rust 3. Start a blog 4. Learn Lin alg and stats 5. Go through all of the deep learning book (goodfellow et al.) 6. Start working with GANs or RL
from: https://twitter.com/stormtroper1721/status/12421529408627220...
Other than that, I'm working on building my own Numpy-like array lib in Rust. I'd be glad to chat about it if anyone's interested
I'm about to order tools for leather work as well. I want to make a leather wallet and a sunglasses case.
I started learning Android but a lot of people shared their experience and it just doesn't seem worth it going all in on Android, especially considering that for most of my projects "native" experience is not a must (i.e. social app for sharing book opinions (i.e. a Goodreads which doesn't suck).
I am also impressed by the data, Flutter and Dart a growing incredibly, and I would like to be riding the early waves.
If anyone has any ideas, tips or experiences, please do share!
I am also making steady adjustments to my xmonad configuration so I suppose I'm also learning haskell and that particular library ecosystem.
I built a web based chat site for my family to keep in touch. I'm opening it up to everyone shortly... next few days I hope
I'm looking to add video calls too.
No libraries, just .NET, HTML and JS
Even though it's useless in the industry: https://www.reddit.com/r/computervision/comments/axvjfb/do_i...
I've sent the PCB off to a fab, who will do the SMD assembly part too for me :) Will be a couple of weeks before it arrives I think.
I need to work on an SPI interface next in VHDL which will need to interface with BRAM which will act as the 'framebuffer'.
Re. kicad, I played with the push and shove routing feature for my board, which I found really nifty.
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.
German is just because it's fun and it's my best second language by far, so I'd like to get fully fluent.
Differential Geometry is a diversion from working through Gravitation by Misner, Thorne, et al. I found I needed more math. Now it has kind of become an end in itself, however. It's the hardest thing I've studied since college (which was a long time ago).
It's using scikit-learn, which I've been meaning to pick-up for awhile. Other than that, learning how to use the ELK stack (ElasticSearch, Kibana) for some network-traffic analysis stuff I've been meaning to implement.
I think we'll all come out of this period a lot smarter :)
+ Jon Gjengset's writeup on some of the "gotcha"s: https://thesquareplanet.com/blog/students-guide-to-raft/
It is challenging though as I am creating my music on a Synthstrom Deluge instead of a typical DAW. Most of the concepts so far (1 week in) are still applicable although it requires a bit of creativity to apply certain concepts.
The impetus has been a media monitoring side project[0] that I've been trying to get off the ground. I should probably spend more time learning about marketing, but I just keep coming back to RegEx optimization.
It's a lot of fun after spending years in the web to go back to systems work. It's still arbitrary and frustrating some times, but for some reason debugging kernel code seems like more honest work than messing around with webpack config yet again.
So started playing a lot more video games than usual. Got Dreams on PS4 which ignited my childhood dream of making video games.
Now I am playing with Unity, Unreal, Swift, Xamarin, and more.
* made it to orbit
* flew by the moon
* crash-landed on the moon
* landed on the moon and returned with the stranded astronauts
* landed on Mars (stuck there for now sending back science experiment data)
* flew by Venus + Mercury
* Took a sample of two different asteroids
* Shot a little refueling space station into orbit and successfully docked to it with other ships
On the other hand, trying to figure out what to learn after adaption...
I really really like the graphical style of Pokemon Black (3d environment with 2d sprites) so I want to replicate that.
I’ve had an idea for a comic series kicking around in my head; I figure if I really learn how to use a graphics tablet and Krita and some basic and intermediate art skills it won’t hurt a damn thing.
https://bartoszmilewski.com/2014/10/28/category-theory-for-p...
As far as programming is concerned; learning how to build Netty servers and navigating large open source codebases quickly.
Also apart from that working on page speed optimization of website which are in wordpress.
Testing on this product page ( https://www.keka.com/hr-software/ ), earlier it was 7sec, now it's 4.
Hopefully can do a bit to bring it down to 2.
My current project also involves learning elm and postgraphile, which is shaping up to be a wonderful stack.
Old school but I haven't found a better ORM for my use case - though I keep thinking there's got to be something like an open-source LookML, which is what I want in the long term.
Also, lime plastering traditional (100+ year old) buildings, and trying to get a fruit orchard going without rabbits eating the trees.
I have been working on a course to teach kids how to learn programming with Scratch. I want to learn more of the Adobe CC suit to add more effects to my videos.
I want to learn how I can improve my remote skills to better work with my team.
Also, I've been toying with OBS Studio to learn how to make more professional video recordings to showcase applications at work, or bug reproductions, documentation, etc.
All the best on your learning journey!
I'll make a note to check out Nexus. Some other contenders to go into my tech stack were Hasura, Prisma and Postgraphile, but I wanted something a little bit closer to the vanilla GraphQL experience...
If I had to give you just one tip to design your schema: favor simple queries and mutations that do just one thing instead of trying to generalize your use-cases. For example if you want your client to be able to retrieve your Products by id and by name, instead of going for `product(id: String, name: String)` go for `productById(id: String!)` and `productByName(name: String!)` You'll end up with more fields on Query but the Product type stays the same, the arguments are clearer (just one that is required) and you'll get simpler resolvers. To generalize: forget about REST best practices, think about you queries and mutations as functions and write them with the according best practices you would apply to functions.
Funny thing I noticed about gql is front-end developers are generally more comfortable than back-end ones geting the grasp of it as its DNA is really client-focused.
Sorry for the long reply :)
It's nice!
I am a UX person, but often dabbled in Ruby on Rails. Currently for the the first time working on a more serious app and now reading the book refactoring ruby, is very illuminating, going through my code again and rereading makes me see many mistakes and possible improvements.
I'm also learning that you can only do so much in post. Sometimes, you just need a different shot.
(New pilots are restricted to flying in "visual" conditions - clear weather. The instrument rating allows flying in reduced visibility conditions.)
By the end of the year I hope to have built a autonomous drone, with a custom flight controller (both motor control and sensing).
I also just bought a house and am looking into putting drywall in the garage.
I'm also following MITs online math courses to get back up to speed.
It it's a constructed language that has recently hit the front page of HN a couple of times. It's been fun. Helps reorganize your thoughts a little bit and it's good practice for learning a more complicated language.
Amazing course btw.
Thinking of putting together a small app as an excuse to play around with websockets
I'm a JavaScript/Node.Js fanatic, figure it's time for me to up my game and go first principles.
Operating System Concepts by Silbeschatz, Galvin and Gagne to the rescue.
https://www.youtube.com/watch?v=tX4H_ctggYo&feature=youtu.be
It's a modular construction kit for synths that takes advantage of the fact that it's software, rather than trying to ape physical synth modules.
Any one have a recommendation for a MOOC or a book that could help?
I am specifically looking to understand frameworks such as Dask or Ray and how to build a similar system from scratch.
Thanks!
But a general book about distributed systems that I highly recommend and one you'll see often referred to on HN is Designing Data-Intensive Applications. Seriously great book and one I often go back to for fundamentals about distributed systems.
Also I want to learn something ml-ish probably play with opencv or pytorch.
It's not as breezy as I was hoping...
The side project itself is essentially a platform to enable post-split parents co-parent effectively.
-HDR colour grading in Davinci Resolve
-playing cuban congas (that slap is hard)
-designing Flutter apps
-feeling gratitude every day
-how to motivate kids
-growing tomatoes from shop bought tomatoes
Good list?
Getting familiar with OpenMP - MPI (are those used in real life?)
Speaking with some friends, they encouraged me to give it a go, but start with the goal. Which eventually translated to writing a stock market sim first.
The concept itself is a multiplayer grand strategy style game set in a fantasy style universe. I've got it working on a calendar system like a paradox game, I'm aiming for it to be running continuously with a leaderboard and periodic resets. I very much want player actions to run within the sim context, IE: The player isn't special in any significant way, they control an entity, whether that's a peep or some other in-game entity.
I have a basic demand system for my simulated people working, who buy goods they need from shops local to them and purchasing activity is reported on the market, traders trade against market activity and at present all a player can do is be a trader, running on a Clojure server which uses websockets to update the client.
There's a lot of things I want to do, I've got a map generation prototype that I built after reading some of Amit's amazing articles [1], I've been scouring my old rpg source books GM sections to try and work out what a decent set of pieces plugged together would look like, after all I figure they're supposed to create the illusion of a vibrant world for players, so why not flip through them for ideas? However I'm limiting this a bit because I don't want to get bogged down not building stuff!
I'm presently doing some initial sanity checking, basically trying to work out what are the current performance characteristics of my sim, IE: Does every entity need to be updated on every tick, does that look "nice" from a player's perspective, or create odd artefacts? Also some simple refactoring to just clean stuff up.
The other two problems to solve is keeping everything nicely organised as I really want this to get big in it's interconnected complexity (though perhaps that's a terrible idea), putting together a simple way to monitor the system's running as the game designer.
Keeping scope small and focused is hard, enthusiasm gets you to want to add all sorts of wacky stuff.
All of the above is subject to change if I figure out a better way of doing it =)...
- [1] http://www-cs-students.stanford.edu/~amitp/game-programming/...
Quantum Entanglement (lectures by Leonard Susskind at Stanford)
creative building in Minecraft :)
(I already knew how to make sourdough from before)
After a career of mostly embedded systems development, I'm building my first commercial webapp.
and am reading 50k word TOS (not sure 'learning' is the verb there but *)
Auth is super handy.
On the other hand I didn't anticipate how wired my brain is for SQL...
Anyone have any fav tutorials on Figma?
I can't tell yet which is harder. Both are pretty tough.
outside of that im trying to learn polish as well
Reality: armor locations in GTA IV
- World Civilization I:
At this point in time, the course is following the Cro-Magnon's during the Mesolithic age, specifically around the time that the Neanderthals/Denisovans go extinct and Cro-Magnons evolve into Homo Sapiens Sapiens. This is also around the time that Cro-Magnon-Neanderthal hybrids cross the Beringia Bridge into modern day Alaska. During this time, there's shifts in every single aspect of life on Earth. I've uploaded the most recent lecture notes for those that are interested.
https://textuploader.com/14j86
- Astronomy II:
This has been my favorite course this semester (aside from Computer Systems). My professor does an amazing job presenting the concepts and his passion is very apparent as he teaches. Unfortunately, that effect has been greatly reduced, with classes now being online. The other downer about online class is that I won't be able to use the telescopes for lab. Stemming from our previous sections, which covered the Sun, star formation, and star evolution, we're now covering the various models presented throughout time that tried to reason our position within the Milky Way through stargazing. Here's the lecture if you care to watch.
https://www.youtube.com/watch?=AUlr2hlAPcM&feature=youtu.be
- Technical Writing:
Project 2, that accounts for 30% of my grade, was due Friday. The objective was to create documentation for a program or application. I was having a hard time finding a program, application, package, framework, or language I used, that wasn't already documented to a high enough standard (coincidence? :P). I didn't want to replicate any documentation that already existed so I decided to write an Angular library for creating a vertical or horizontal timeline and documentation for it. I turned it in two hours late, so I most likely will not get credit. Publishing my own code for others to use brought me more joy than I would've imagined.
- Computer Systems I:
The lectures have been covering pipelining, control / data dependencies, forwarding paths, etc. It's extremely fun. In lab, we're programming the Y86-64 ISA using C++.
Besides that stuff and my dance class, where we've learned about the dance throughout the 1900s to present, I've been going through a Udemy course on Kubernetes in preparation for my summer internship and CKA.
This all seems a bit silly, but everything is closed. Also doing a lot of wood cutting and cleanup in the forest. We built a custom designed Z80 SBC ( single board computer), with its own Z80MON monitor, and the genius guy I am working with has managed to put the BASIC interpreter into the monitor. Just got MInipro installed and working on the MACbook, using HomeBrew. I'm trying to get one of those TL866II pROM programmers - first one ordered got bounced by customs. We've ordered second one, paid premium to have it couriered. All the flights are ground-stopped, so it may be a while. I really like the idea of building a whole computer from parts ordered from Mouser, having all the Monitor and interpreter code, and being able to download the code into A ROM chip, plug it in, and link to the thing with Kermit or Screen session from a Linux box, and have it process matrix data from our AI stuff.
We live in deep farm country, where self-reliance is pretty hard core. Some farms up the road from ours, are not even on the grid. (They have wind generators and diesel tractors - some even have CNC machines).We still have good internet access, and we are on-grid, but this whole virus-driven economic meltdown has absolutely confirmed our expectations. We are seriously looking at something that will look like the 1930's now. I worked in 8080 Assembler years ago, and I'd forgotten so much. But I've got two Z80 SBC's working now, one with it's own standalone VT-100 emulator board, and a little 40$ Chinese made VGA screen, which actually works pretty good. I can run that config off two lithium-ion batteries. The missing piece is to be able to use an SD-card. We have a prototype of a much more complex SBC that has a sound chip, and an SD card driver chip. It runs full CP/M, but I like the more simple design, since it does ot use surface mount - real old school.
And there is this ton of other stuff that must be done. We need to be able to reload, and I have all the dies and such for this. We are also doing a bunch of in-house food preparation, since the electricity is still working, and so we are making different types of food that can be easily frozen.
And the price action on the investment portfolios is requiring attention, since we have these predictive algorithms that are offering some insite into where to place trades. The markets are insane, but there are opportunites that do crop up. I realize that most traditional "fundamental" analysis is of little value in this kind of environment, as the automatic algos are running most of the action. We have no chance at all of accessing any "government money", so we are really working our existing systems just to try to bring in some liquidity by quick in and out action. So far this is working, but it is absolutely crazy.
We have non-trading long-term positions on the left side of a tradional barbell, and these are just getting slaughtered. It feels like stories I read about in wartime, those First World War stories. Your whole "picture of the world" falls apart, and suddenly, all that crazy, hacky stuff you thought you would never really need or use (like the gas-mask in the garage) - suddenly, it's the stuff that is keeping you alive, and your economic and technical process actually working.
So, I am going thru notes, and invoking stuff that we documented back in 1987 ( mkt crash), and in 1998 (Russian Default), and of course the 9/11 stuff, which was short and sharp, and followed by a big pop. But the data this time suggests no - too much has been badly damaged already. So we are mainly working on a plan to survive economically, for the next 12 months.
We should be OK, but only because we had these backup Plan B and Plan C's and such. We went to Costco two days ago, and a hundred people were lined up, out into the parking lot, as "social distancing" was being enforced. It's making us pull out the SHTF playbook plans. It could all be summed up as "We are reviewing our strategies for maximum independece, and actively working to enhance our capacity for fully independent action." And I am reviewing all my Linux notes - we have several flavours of Linux boxes, that run the analytic and data management stuff. Need to ensure we can keep on keeping on. So far, it's all ticking along ok, but it's all up to us now. We are learning to be 100% self-supporting, I guess would sum it up. So far, it's working. But it's a new world now. We are all going to need a lot of different skills.
Add me on epic: Rhett800cc
https://www.marxists.org/archive/trotsky/1939/04/marxism.htm
As an ENFP I can't just sit and learn one thing at once, so I tend to cycle (with no particular pattern) through the following:
Graph Algorithms A combination of learning on edx.org, and also reading through Tim Roughgardens graph algorithms book. Both are quite technical and take me quite a long time to digest the info. Sometimes I digress to dig deeper into things like Big O notation and the mathematical reasoning behind things like why you can drop constants and lower order terms, but on the whole really enjoying the materials. https://courses.edx.org/courses/course-v1:UCSanDiegoX+ALGS20... https://www.amazon.com.au/Algorithms-Illuminated-Part-Graph-...
Operating Systems Udacity's Intro to Operating Systems course (https://classroom.udacity.com/courses/ud923) Have also downloaded but not yet started reading "Operating Systems Concepts - 10th edition" which you can get from https://www.os-book.com/ I've only just started going through these, but essentially I feel like it's an area I'm lacking in terms of my understanding. When people talk about things like the Linux Kernel - before I really had no real idea of what that actually meant, and I feel like even with a few hours doing the course I am starting to have a much better idea of how things are put together.
Coding interviews I signed up to https://www.techseries.dev/ and have started going through the problems in CoderPro that came along with the expensive $500-$1000 course. The coderpro course is basically just them going through leetcode questions... they even show that that's what they're doing in some of the videos. The main course is OK, but a bit basic. I also have "Grokking the System Design Interview" course and I find that really good for showing how others actually think about and step through system design questions. I'd highly recommend this https://www.educative.io/courses/grokking-the-system-design-.... I also have Cracking the Coding Interview - http://www.crackingthecodinginterview.com/ which I've been using from time to time as well. I highly recommend this book, I find her step by step approach really insightful, and the book covers a crazy amount of material (it's a big book - Gayle Laakmann Mcdowell is a friggin machine).
Go Programming I've been learning Go and using it to code up coding challenges. For Learning Go I've got a hard copy of "The Go Programming Language" which is really good and thorough - https://www.amazon.com.au/Programming-Language-Addison-Wesle...
I also did a course on Udemy https://www.udemy.com/course/go-golang-programming-course which I highly recommend for getting up to speed quickly. I also started going through Todd Mcleod's Go Clinic on Lynda - that was really good, but I didn't want to pay a monthly subscription so put that on pause for now. The GoClinic course is here https://www.lynda.com/Go-tutorials/Code-Clinic-Go/439416-2.h...
I initially was following along with Handmade Hero a series that I have been going back to frequently over the past few years.
The series is great but I wanted something more guided so I am eyeing purchasing Game Coding Complete. It teaches the internals of a game engine and uses DirectX for rendering.
https://www.amazon.com/Game-Coding-Complete-Fourth-McShaffry...
Because deliveries are on lock down in my country the book will have to wait.
So right now I have gone through SDL tutorials (there was a recent update to the LazyFoo SDL tutorial) and am currently finishing OpenGL.
http://lazyfoo.net/tutorials/SDL/index.php https://learnopengl.com/
Finally, I've been checking out repositories of open source game engines and poking around their codes. interesting ones are below:
Godot - Probably a lot of people already know about this one
https://github.com/godotengine/godot
Pyxel - A fantasy game engine similar to Pico8 written in Python, uses SDL
https://github.com/kitao/pyxel
Wicked Engine - Haven't poked around much with this yet but the screenshots looks gorgeous
https://github.com/turanszkij/WickedEngine/blob/master/READM...
Finally here's the video that got me interested in game engines. I saw this years ago but saw it again recently while researching. It's a 2.5d game engine that makes great use of lighting while combining 2d sprites and 3d models.
https://m.youtube.com/watch?v=-Q6ISVaM5Ww
Here's a second video that shows off a winter weather which boggled my mind when I first saw it.
https://m.youtube.com/watch?v=vtYvNEmmHXE#
Sorry for the dump, was excited to share these.
It looks like theres basically two suggestions:
A) Following the same sort of curriculum a university would teach. I'd have to manage to dredge through the math, but I suppose it's possible but would lead to probably the most competence. Unfortunately however, I was hoping for the big MOOC sites to have more content. EdX has some decent introductory stuff but not much beyond that.
B) The other recommended way is the hobbyist way and what I suspect most other software people wouldnauggest which is just building shit that interests you, ignoring first principles. Unfortunately I'm not sure how this would work out, since my projects in any domain seem to be a bit, er, grand and you supposedly need a strong math background to build anything more than basic circuits.
I'd dread the math a lot less if it were more cut and dry. I wish I could just jump right to calc, differential equations, linear algebra, etc. But more realistically, it would involve me hunt and picking parts of algebra and embarrassingly even simpler stuff. I was looking at some Khan academy stuff and while it turns out I remember more than I thought, theres still plenty I had forgot even existed.
Another alternative that seems good, but not realistic is that there are some community colleges that have professional certificates that teach electronic circuits pretty quickly. Unfortunately this is prohibited by the absolutely fucked "residency requirements" for this state whereby I wont be a resident of my current state for years (at least for tuition purposes, I'm a resident for just about everything in a few months). Also those courses are all in person which, for some unique reasons dont fit my life situation.
I actually tried to build a Arduino based EPROM reader for a chip I extracted from an old electronic device, but ran into some issues and am kinda discouraged because that seems like it was pretty basic.
DOCSIS -- yeah, that's a lot of specialized knowledge to make a good one. A huge part of the complexity for that is probably board layout stuff. EMI & EMC, etc. This is a whole separate field of study on its own.
Getting that EEPROM reader working sounds like a good starter project. There's huge variation of EEPROMs though, so it would be sensible to focus on just the EEPROM you have. Who knows, your issues could have been a problem with the scavenged chip. But I2C (if your chip was I2C) is finicky and every chip seems to do it slightly differently.