Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: What are you learning?
865 points by blululu 57 days ago | hide | past | web | favorite | 876 comments
What are you learning right now? My last side project was recently derailed and I am curious to hear what other people are spending their time studying/learning about.



I'm working through Aluffi's Algebra: Chapter Zero, which covers abstract algebra (groups, fields, vector spaces, etc.) with category theoretic foundations. I took undergraduate algebra several years ago, and I'm really interested in category theory from a compositionality perspective, so this is a good opportunity to brush up on both topics.

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 :)

[1] https://www.youtube.com/watch?v=2bgZmBAnhdg


IIRC in this podcast: https://player.fm/series/superdatascience-2532807/sds-345-ma...

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.


Awesome, thanks! Listening now, and shared with brother.


This really reminds me, it's been two decades now since I've taken _any_ Algebra. I'd really love to go re-learn it from the basics on up. I mean, I still remember a lot of it here and there but some sort of refresher course up to doing more advanced would be awesome.

Any recommendations?


Hell yes! I love hearing about people interested in abstract algebra and wholly support your endeavor! Here is a pretty decent resource on relevant texts:

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!


Hi there, the email field doesn’t show up - you need to put it in your about section for people to see it :)


Uff. Thanks! Done.


Cool, thanks for the info! I'm going to check out that list.


I think Linear Algebra is traditionally recommended, since you can readily apply a lot of geometric intuitions while picking up the mathematical ones. The drawback is that you have to make sure you're not cheating yourself of the mathematics by over-relying on the geometry.

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


I wonder whether HN has heard of "Linear Algebra" by Hoffman and Kunze. I learned from it as an undergraduate and remember it being told that it was a classic. Another more abstract book is by the great Halmos: "Finite Dimensional Vector Spaces". Both books will stretch and entertain you.


Sheldon Axler book for some reason is hugely hyped in HN always when this topic comes up.

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.


Sheldon Axler's acclaimed "Linear Algebra Done Right"

Seconded. Highly recommended.


You know something? I know a little abstract algebra: groups, subgroups, quotient groups, and the relvent theorems behind them. It's been disappointingly useless to me though. Maybe someday I will take the quotient group of two matrix groups... I'm not sure though.


I certainly haven't applied any of those examples either. ^_^ Abstract algebra, topology, etc. are all studies of problems that already have mental frameworks. People already did an incredible amount of legwork building the apparati for understanding these fields (no pun intended). The value of learning these frameworks, if you're not going to work in those fields directly, is to understand how to build your own framework.

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.


What I got to think recently about the value of knowing more about stuff whose usage isn't imminently obvious is that when you expand your knwoledge, the 'range' of your world changes. So yes, almost by its nature, you would not use the stuff that you don't know much of, but you would be hemmed in by your own ignorance. On the other hand, by expanding your knowledge, you would also expand your range of experience (your world) thus find it more useful.


I studied vector mathematics in high school; matrix operations, dot product, cross product etc. All through these lessons I thought; "what a stupid thing to learn, who would ever use this?". Then after school I became a CAD/CAM developer and spent most of my time working with vector mathematics. It was with the help of OpenGL so I technically didn't need to understand how these operations worked under the hood but yep... what a stupid thing to learn indeed.


Most people start abstract algebra with groups, which is not surprising since the underlying definition is very simple and the basic examples are easy to understand. But abstract algebra only really starts to come into its own when you start to learn about rings and modules, which ultimately turn out to be important in proving most of the significant theorems in group theory as well.

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.


If you don’t mind me asking, how long do you expect it will take you to go through that text?


I'm not sure! There's a good amount of material that I've never dealt with before, so I'm sure there will be parts where I go relatively slowly. I also have a day job, so I only spend time with the book when I feel up for it. It's kind of an open-ended thing for me right now.


Entirely understand, enjoy and good luck with it!


I am curious about category theory? Do you have any resources on where it can be applied?


David Spivak and Brendan Fong have been doing lots of work at MIT to evangelize applied category theory. See their recent books/classes:

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


I'm no expert, so the best I can do is point you to the research community gathering around applied category theory.

* 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/ .



Haskell.

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.


As a great fan of Haskell myself, I would clarify that Haskell needs monads because of the (pure functional) restrictions it sets for itself, not because I/O itself fundamentally requires explicit monads. (Haskell itself supposedly used a lazy-list approach to input and output before monads caught on -- something like `main :: [Response] -> [Command]`, I think.)

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.


This statement that you made—about side effects requiring monads—do you know a proof for that?

I come from the other side, Milewski's book is to me "Functional Programming for Category Theorists".


Nope, no proofs :) Formalizing questions like this is one reason why I'm interested in category theory, so I don't think I have the tools to dig into this right now. But... "side effect" literally maens it doesn't show up in a normal input/output function signature, and in a pure functional language like Haskell, there are no side effects. Monads are a particular way of explicitly capturing side effects as a "separate" kind of thing from the function output using a particular species of functor.

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`.)


Does this mean that you use a monad instead of a function?


First, a clarification: when looking at a monadic action `f : A -> T(B)`, the monad here is just `T`. The action itself is still just a function. The monad `T` lets you add some extra structure onto your usual output type in a principled way.

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.


I quite belatedly realized that you come from Category Theory, so most of my sibling reply is probably old news to you. Sorry!

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.


I'm learning how to make tacos starting with the tortilla. I'm originally from San Diego and have always missed Mexican food whenever I moved abroad. On a recent trip back to San Diego, I went to over a dozen Mexican shops to find particular flours to create tortillas from. I also went to Mexico twice just to find a specific brand of soft wheat flour. In total I think I experimented with atleast 5-6 different flours thus far. Since then I've made over 150 tortillas, learning things like the importance of the ratio of fat/water/flour, the proper heat, feel, and cook time. Rolling it with flour and without, hand patting vs mechanical tortilla presses. Simple mistakes are like the difference between making a cracker and a tortilla. There's also things like the elasticity of the dough the longer it sits so things like heated tortilla presses become important to help it keep its shape, since the heat slightly cooks the tortilla as it's being pressed into shape. Compared to pure mechanical ones where the tortilla will retract back due to no heat forcing it to sit in place. I'm still hoping to invest in a heated press once I return to the States since I can't find them in Amsterdam.

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.


One trick for those that are not as advanced as you are: For whatever wheat you are using, add boiling water instead of cool water.

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.


U̶n̶l̶e̶s̶s̶ ̶b̶o̶i̶l̶i̶n̶g̶ ̶t̶h̶e̶ ̶w̶a̶t̶e̶r̶ ̶r̶e̶s̶u̶l̶t̶s̶ ̶i̶n̶ ̶p̶u̶r̶i̶f̶y̶i̶n̶g̶ ̶i̶t̶,̶ ̶b̶o̶i̶l̶i̶n̶g̶ ̶p̶r̶o̶b̶a̶b̶l̶y̶ ̶d̶o̶e̶s̶n̶'̶t̶ ̶d̶o̶ ̶a̶n̶y̶t̶h̶i̶n̶g̶ ̶b̶e̶s̶i̶d̶e̶s̶ ̶s̶l̶i̶g̶h̶t̶l̶y̶ ̶s̶p̶e̶e̶d̶ ̶u̶p̶ ̶a̶u̶t̶o̶l̶y̶z̶i̶n̶g̶ ̶t̶h̶e̶ ̶f̶l̶o̶u̶r̶ ̶a̶n̶d̶ ̶w̶a̶t̶e̶r̶.̶ *This is probably wrong--see edit. Didn't know about this process because you'd never want to do it with anything you're going to add yeast to.

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...


Hot water encourages hydration of the flour and gluten development, resulting in a more elastic/homogeneous dough. IMHO, the hottest water from the tap should be good enough for that purpose.


True, but hot tap water doesn't always taste very good. If you've ever had seen the inside of a water heater, you will never want to consume hot water again. It's often full of rust and scale.


You and the other commenter are correct. Just meant that temp ~120F as a reference. Have lived in a calcite water area, no fun.


Water from the standing hot water heater typically doesn't taste as good.


agreed with this, hot liquids def made things much easier


I've seen a lot of custom made hotplate/pans made by a lot of my hispanic friends families for making tortillas, it's basically a slab of metal on a stove with a handle. I don't know anywhere that makes them since all of them are a kind of "I had a friend weld it for me" situation, but I found that those hotplates made making tortillas much easier.


You mean a comal? I got one I love off Amazon a couple years ago for about $10. It's handy for all sorts of things because it heats faster than a large cast-iron skillet with sides. It's great for reheating pizza and melting sandwiches (couple it with a metal cover for doing just that for a double bonus).


Good call, maybe I should just look into getting something custom made here. This is the press I'll likely buy once back https://www.amazon.com/Mexican-Electric-Tortilla-Gorditas-Bu...


Oh man, this is a topic near and dear to my heart! I'm originally from California, but I lived in Mexico for several years.

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 want to live in Mexico for a little bit one day. I imagine you came out of that with a taste for tacos that can't be matched anywhere. Were there any spots that you really enjoyed that had the organic blue maize that you liked or was it mostly abundant because Mexico hah? I'll definitely bookmark it :-)


I recommend it if possible. I had such an amazing experience living there. It's funny, I never miss the US but I always miss Mexico.

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


Thanks for the suggestions, I'm planning on Mexico City and some other small towns like you mentioned. Will definitely add to the list!


Would you mind sharing your tortilla recipe and/or pointers?


For sure, I mostly watched the Taco Chronicles Carne Asada episode on Netflix about 20x haha but here's a link to a similar recipe https://cooking.nytimes.com/recipes/1019621-sonoran-style-fl... however here's the gist of what's been working well for me so far since I love flour tortillas more so than corn:

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.


Thank you, it's just what I happened to be looking for!

For those of us in Europe can you recommend your choice of flour (and perhaps some other replacement ingredients)


I'm still trying to figure it out as well. I think for flour, experimenting with any artisan bread type flours would be good. The wheat flour at your supermarket may work though, you'll likely need to try it out and compare. The differences can start to become subtle. Vegetable shortening is also a decent replacement for lard, the ones like Crisco that come in a can and look like lard/non liquid oil. Some of my favorite taco places like https://www.instagram.com/elrusola/ use exclusively that.

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.


Maseca. It's the same as they use in Mexico, and happens to be produced in Italy.

Get it at your local delicatessen, or your local Hyper Market.


I've been clearing land all day and bought 50lbs of buckwheat. I intend to try sowing/harvesting by hand. I will use this mostly for breads and pastries. This is something of an experiment.

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.


If you have any pictures available (especially of this bridge) I'd be curious to see.

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)


There are lots of photos in this thread for the stone: https://twitter.com/simonsarris/status/1234186085200207872?s...

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 grew up in Nashua, and when I looked at your posts about restoring your home it made me nostalgic for New Hampshire. I live in Alaska now and hope to spend the rest of my life here, but NH has the feeling of home that you can only get from having a childhood there. I found your posts a while back, and I always enjoy looking at what you've been up to when I haven't seen it for a while.

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!


Ah I grew up in Nashua too, at 37 Orange street, if you've ever seen the house (An 1840's house, just at the start of the downtown historic district)


Here's how I tell people how my experience of Nashua has changed: "When I was young, we used to tell people how to get to our house by saying at one point, 'Turn right where the cows are. You'll go over an old stone bridge and then through some narrow curves on a few hills. Then turn right at..."

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.


That's funny. I was born in 1988, so that world was gone by the time I got here. And even then, when I was a kid there were abandoned buildings to explore like the old tannery, and those are demolished now.

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.


I'm sorry to hear that. From a distance, it seemed like there was some interesting revitalization work going on in the downtown area. I remember going to a barbershop off Main Street as a kid with my dad every couple of weeks. Back then it was a classic old downtown, with shoe stores and shirt stores and barbershops and hardware stores and all that.


Out of curiosity How’s life in Alaska. It has always been a dream for me to move to Alaska since its a beautiful state and last thing what about the jobs there


I love Alaska. I live in Sitka, which is a small town on the side of an island. We have about 10k people, but our town is a 14-mile by 1/2 mile strip of land on a 100-mile long island that's almost entirely wilderness. I like that we're a big enough town to have a thriving community - good educational opportunities, a variety of work available, an impressive arts community. But you can walk into the woods anywhere at the edge of town and immediately find yourself in actual wilderness. Subsistence is also a way of life for most people - almost everyone has a freezer with fish and wild game that they caught themselves.

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?


It looks like you may have the same cart that I do. Hint: in case the bearings fail, go-kart bearings are an excellent and higher-quality replacement and they're the same size. I load mine with 200+ lbs of hay at a time and haven't seen any problems since.


When you get around to milling the buckwheat, see if you can get some coarse ground flour from both the kernel and husk. With it you can make inaka (country style) soba, which is really quite special. Buckwheat makgeoli is also easy and tasty.


You might be interested in this chap's work. He came to prominence after his construction of a home was covered on a TV programme here in the UK. The link here is about that house - and the TV programme is well worth watching, too - and the rest of the site is about eco-building etc.

https://ben-law.co.uk/ecobuilding/the-woodland-house/


You should look into Fabric.js, it makes working with an html canvas much easier, especially if you are animating it.


> I'm almost finished a chicken coop

May I suggest welded mesh?


sweet. I just made some buckwheat crepes the other day. Buckwheat is really high in magnesium which is awesome


I have lost my contract as a developer and am helping a non-profit [1] streamline their operations. The organization aims to provide food and heath kits to the marginalized. We have already distributed over 600 kits and are on track to reach a 1000 in this week. Each kit is designed to support a family of 4 for 1 month.

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


Each kit is designed to support a family of 4 for 1 month.

That's some freaking "kit" !!!


For the curious, we also published how we assemble these kits: https://karuna2020.org/guides/ration-and-safety-kit-assembly...


Wow! I think why most people don't donate in India because they think their money doesn't make any impact.

https://open-data.karuna2020.org this is game changer. I wish more NGOs in India would do it.

And good luck!


That's changing. People in India did donate in flying colors in the last one week. To help with Covid19, PM-CARES fund was announced by Prime Minister Modi on March 28th. In a week since then, it has raised almost a billion USD. The super rich did donate well. But so did the common people - via UPI digital payments. See news coverage here: https://www.moneycontrol.com/news/business/pm-cares-fund-her...


>> For just ₹750, our food and wellness kit can feed a family for a whole month.

750 INR = 9.84 USD

It would be nice if you can make it easy to provide donations from outside India.


We are working on that!


Nice work. I'm a indian dev. Let me know if there's any work for me to do.


This is inspiring and I also like the pragmatic technological approach.

I wish you all the best!


Thank you for your service!


How can I contribute on the software side?


The software has been built already. We might have minor updates.

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'm learning how to level up my more fundamental life skills: nutrition, exercise, and character. Character I'm learning through the study of The 7 Habits of Highly Effective People which I'm working through with a friend. For exercise, I'm enjoying learning a safe kettlebell program with the book Simple and Sinister. With nutrition, I'm just trying to cook/prepare all my own meals while keeping the ingredients healthy.

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.


For nutrition and diet I can highly recommend "How Not To Die" by Dr. Michael Gregger: https://nutritionfacts.org/book/


Isn't he completely anti-meat / pro-vegan? His research is cherry picked to a large part and he usually cites epidemiological studies. At least he did when I got into nutrition.

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.


Both "How not to Die" and "How not to Diet" contain hundreds and even into the thousands of references. All meticulously fact-checked by a team of researchers.

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.


Quoting a lot of studies makes a great impression, but it's only worth it if you're not cherry-picking. Have you read the actual studies he's quoting? I did. Well, I read the first 50 or so. More times than not, they did not give what he says or he is interpreting the result so it matches what he likes them to say. Many are done badly. Many studies are done by hardcore vegans or animal right activists. He quotes the same studies multiple times, adding another references each time he quotes it again (making a great impression!).

A vegetarian diet may be the healthiest there is - I don't know. But Greger is biased for sure.


I also highly recommend Dr. Greger's work! He also has a podcast and very informative website with tons of sources and further information.


> 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.


I have been pursuing similar goals. Except for exercise I've been learning rope dart and also have the goal of being more clean and being better at organizing my spaces. I have also found that focusing on the fundamentals has done wonders for my health, energy levels, and mood. I wish I had taken time to figure this stuff out better years ago.


To me, kettlebells are a hipster trend.

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.


They've been used for centuries in one form or another and are a fantastic tool, lauded even by world-record holders in the deadlift.


No, they are not, if you don't have access to a bench and barbells, you can pretty much do all exercises and more with a couple of kettlebells. I use a 20 and 35 pound one. Btw, Kettlebells have been around for a long time in Russia.


I am learning game development in Godot, specifically with the intention of making an Oculus Quest VR game. I just finished the initial tutorial yesterday: https://docs.godotengine.org/en/3.2/getting_started/step_by_...

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


I'm learning Godot too. Although, my pace of learning is very slow, since I am also working from home. So I mostly learn on weekends or sometimes, for an hour at the end of the day. I started from this link: http://www.alexhoratio.co.uk/search/label/gitting%20gud%20at... These look good too: https://www.reddit.com/r/godot/comments/an0iq5/godot_tutoria...


thank you for these links, its really helpful bro


I am trying my hand at Defold. Though initially I found it very obscure and opaque, I am finally able to do small things on my own without constantly refering to the document.

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.


It is a bit different than many other engines, and it is not for everyone, but once you shift your mindset from large object oriented structures and start thinking about the relationship between your game logic and data in a way that works with Defold I find that you're able to create a lot in a short timeframe.


I'm also learning Godot, it's great fun! Although I'm making something less ambitious than you, I just more or less finished a 'brickbreaker' type game. (more or less, all logic is in place but just 2 levels).

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.


I committed the cardinal sin of starting the Unity "Create with Code" course last week and not progressing beyond the first module. Hopefully you are better at sticking to things than I am.


Hey, I'm doing that too, learning DirectX to build megaman-clone and learn more about game development. I planned to learn Godot after that. shall you create a discord chanel? I'd love to join


you seem like a very avid learner! can you recommend a couple of courses you've enjoyed going through, or the ones that were most interesting and challenging?


Wow I want to do that too! Are there any existing godot based quest games so I can get an idea what the final product would look like?


There is a tutorial from Feb 28th which contains a finished project. https://github.com/GodotVR/godot_openvr_fps/releases


thanks for Disney's Imagineering-in-a-Box!


Stanford's CS143 Compilers course: https://courses.edx.org/courses/course-v1:StanfordOnline+SOE...

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.


Thanks for your recommendation !I am pretty interested in web security partly because I want to start my own start up in two years, and I want to make sure my customer's data is safe. I am also interested in compilers but just can't bear C++, so I plan to take this course :https://www.coursera.org/learn/nand2tetris2. It doesn't limit languages you can use .So I plan to write the compiler by Racket(which can also sharpen my functional programming skill).


TA'd this class! It's a great intro, if a little dated. The best assignment, in my opinion, is the last (code generation). It's also the easiest to do independently, since you can just see if your compiled programs produce the same output as the ones compiled with the reference compiler.

The class assignments are missing a more thorough look at optimization. Might have to rely more on the lectures for that.


I'm trying to learn to draw.

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/.


Learning to draw is something anyone can do and is incredibly rewarding. It activates a huge part of your brain (visual) that starts firing when you see all sorts of scenes, faces, patterns, colors in real life. Try the book "drawing on the right side of the brain". Another good one is the Bargue sculpture drawing course.


Yea, right, until you try to get perspective correct.

If you understand this, you are a genius:

https://crafts.stackexchange.com/questions/3316/how-to-measu...


Don't worry about perspective drawing. This is a much more technical subject, separate from the skill of "drawing what you see".


I want to be able to draw from imagination. Drawing from real life has no appeal to me (though drawing realistically does).


Any artist that draws from imagination will tell you to draw from real life. Once you get that down it's waaaay easier since you have strong foundations in figures, perspective and forms. No one just started drawing from imagination.


Thanks for your recommendations!


The pure act of representional drawing (drawing what you see, "copying it") needs just two basic actions: measuring and comparing.

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 recommend John Ruskin's classic "The Elements of Drawing".

"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."


I actually started Drawabox for the same reason, and I must say that I like that change of mindset. It's feels good to start digging into something that is not directly related to software.


I am trying to learn how to draw too and finding it very hard. I am using a Wacom tablet and man is hard to draw like that. I am learning face drawing at the moment and it seems impossible. More practice I guess.


I am going to try to get better at the thing that foils me the most: faces


I'm studying Quantum Computing for Computer Scientists [1] - until I found this book, I thought anything covering quantum would be too physics oriented. As the title implies, this book is nothing like that, covering all the mathematics needed (matrices and relevant operations) to then understand various topics within QC ranging from Algorithms to Programming Languages to Cryptography, all in largely self-contained chapters.

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...

[3] https://en.wikipedia.org/wiki/Shor%27s_algorithm


Morse code. Started today by learning the alphabet in half an hour using a Google creative project[0] and quickly realized the challenge will be thinking in the sound/rhythm of the letters (instantly hearing/deciphering them) so I found a video[1] and then watched another video[1] which confirmed my hunch that it's better to focus on the sound than the notation.

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/

[1] https://www.youtube.com/watch?v=2_qQZ92onhU

[2] https://www.youtube.com/watch?v=D8tPkb98Fkk


omg. This was AWESOME! Thank you for sharing this. I just finished that tutorial and it was great. Very well done- Never done Morse before and 1.5 hrs later Im writing this comment (including punctuation...very slowly...but musically) via morse!

I think my favorite moments were learning that v uses the motif from Beethovens Vth and `!` = Candy+mustache


> v uses the motif from Beethovens Vth

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 learned a ton about the homeless population and shelter process.

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.


>> I'm grateful for personal protective equipment, but reuse does concern me

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


Music edition/production with Reaper:

https://www.reaper.fm/

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.


A very cool, overlooked, and timely feature of Reaper is NinJam which is a way to “jam” with people remotely through a fixed time-delay.

It’s been around for at least 15 years, but looks like the author has recently started updating the feature again. Check it out!


That's such a good idea! How are the latencies worked out?


The delay is extended to a musical unit, I think a full bar or a measure. So the latency is "musical" but really high.


You set a preconfigured time - I think it defaults to 1 bar.

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 :)


Thanks for the heads up about Reaper! I've been meaning to get back into music production.


How to raise a good human, be a good dad and husband.

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.


It’s been both great and terrible to be cooked up in a small flat with my wife and child. I’m always happy to see comments like this. I wonder if there’s a community for the M(o|u|a)ms/Dads of HN

Any tips for communications with partners?


What. A. Minefield.

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 :)


most important is to come from a place of respect and to talk about the issue, not about the person. it should be about solving the problem together. never about pointing blame.

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.


"we talk more about the good stuff than about the bad stuff,"

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.


First - this is an amazing comment! Solid, concise, and really highlights the important stuff.

John Gottman has a number of books on this topic and I'd highly recommend them.


Thank you for mentioning John Gottman this looks helpful.


Three tips that have helped with my wife and I:

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.


It's both joyful and really painful. I have a one year old and we are on 60sqm with no balcony. My wife is pretty far along on the ADHD spectrum, which has its upsides but is definitely NOT conducive to getting any kind of deep work done. We fight often these days if i'm being honest. Luckily we are good at moving past shit

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.


You are not alone. I have a toddler and I am going through exact same situation. I can totally relate what you said. It's very hard, but I think slowly we learn to navigate it.


I highly recommend taking a walk outside if you can. It is really challenging to be stuck inside right now especially if you have kids.


> 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?


Develop a checklist of stuff to try:

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 :)


7. Is the baby hungry? 8. Is it too cold/too hot for the baby? 9. Does the baby have a rash in the diaper area? 10. Could the baby be teething (may start earlier than 6 months in)?

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.)


These are great additions!

I can't believe I listed diapers twice and left out "Does the baby want a BOTTLE" - D'oh!! :)


Well, the reason to list those steps in the first place is because in between changing diapers, clothes and room temperature, one can actually forget about giving the baby a bottle. I know I did a few times :).

(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.)


I found this useful: https://raisingchildren.net.au/ and Quebec has a guide for pregnancy to 2 years old: https://www.inspq.qc.ca/en/tiny-tot/consult-the-guide

For the first few months I found this book great: https://www.amazon.ca/Happiest-Baby-Block-Harvey-Karp/dp/055...


I'm learning pentesting for fun. I'm mainly active on hackthebox.eu. I might get my OSCP one day, for fun as well. I do still think the certificate comes in handy despite the fact that I'm applying for web developer positions at the moment. I'm happy I'm learning this though, I'm already noticing that I develop differently, because the little I've learned about pentesting taught me that true cyber criminals are hungry to break into your systems, and they only need one shot, one small misconfiguration and they're in. Or at least, that's how it works on hackthebox ^^

I'm also doing some OSINT (open-source intelligence) by simply giving myself assignments. The assignments on hackthebox.eu were not all that great and OSINT is one of the few disciplines that you can do in the real world without permission, since it's all about accessing public data.

I flip back and forth between the 2 disciplines. I don't know why it attracts me. It just does. I also notice that learning this stuff is completely different from programming. And to an extent it's one of the few ways that gives me the feeling that I'm "living and moving around" in cyberspace as opposed to "constructing" (i.e. programming) in cyberspace. I guess typing cd and ls on a lot of Linux and Windows practice boxes give that effect. And the cool thing is, you learn a lot quicker about all kinds of services. For example, I never knew about rsyslog, logger or the mqtt protocol (Linux boxes). I never knew about Kerberos, Active Directory and smb (Windows boxes).

I'm happy I did some master courses in cyber security beforehand. While I'm really new to a lot of things, I've gained a lot of what psychologist call crystalized intelligence in this area. So it's all quite easy(ish) to understand. Things get harder when I have to reverse engineer binaries or debug in x64 assembly. It's still doable though.


I too have an interest in OSINT. Inspired by the work of Bellingcat [1] (who have uncovered some serious warcrimes through their OSINT work).

[1] https://www.bellingcat.com/


I am also learning pentesting, for the cert and to have some methodology in my job ( somewhere between devops/compliance/security). First week into PWK course, I used hackthebox and thecybermentor's practical pentesting course to build up confidence to attempt getting that long wanted OSCP title.


Awesome!

I've heard that OSCP is a lot more CVE based than hackthebox. It apparently also has a lot more rabbit holes compared to hackthebox. I haven't checked out thecybermentor yet, but a friend of mine has and he seemed to like it as well.


It is more about identifying CVEs and exploits than HTB is, but there is still a good amount of finding misconfigurations, like HTB has. OSCP helps you build a methodology and a mindset for pentesting, and finding CVEs with existing exploits makes that a little easier than HTB, where you are not under time pressure. HTB would be my goto to prep for OSCP, I wish I'd found it before.


Anyone who's up for doing hackthebox together, my email is in my profile. I think it'd be a ton of fun to team up!


Currently I'm learning video editing on Davinci Resolve.

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:)


Video editing is a very usefull skill. It's rewarding to be able to quickly trim, stitch and edit some clips and maybe throw in some effects here and there.

Davinci Resolve is a surprisingly good tool and for a non-professional it would be my no. 1 recommendation.


I edited my first video this weekend after installing kdenlive and watching a couple of tutorials on youtube.

Learning even the simplest things in another area can be very empowering and rewarding.

https://kdenlive.org

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


Building a guitar! It's my first attempt at building an instrument. It's going well so far, mostly using threads from TDPRI as guidance and a body template from there as well. I opted to buy a neck from Warmoth since building a neck seemed especially intimidating and requires more special tools. Today I finished soldering the electronics, bolted the neck on, strung it up and it actually works! Now to take it apart and work on the finish... lots of sanding ahead.

(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/


Having put together, and modded a lot of guitars in my life, just make sure that the nut is cut properly, that the neck and body fit is nice'n tight, and that the neck is properly leveled.

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.


That’s awesome! I did the same a couple of years ago (took about 1 year to complete) and it’s one of the things I’m most proud of, so I hope it feels as fulfilling for you too!


Cool! Thanks! I'm most worried about the finishing part, honestly. What did you end up doing for it?

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 ended up filling the grain with wood filler dyed black and make it pop and then layered a few coats of trans-red from a spray can so you can still see the grain. It’s not a glassy finish but that’s what I was going for and the colour is amazing! I always wanted a red strat with a black pickguard and gold hardware so I thought why not!

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.


this is so cool, I've been meaning to get a bass guitar and start learning, but I'm always busy doing something else.


Pick one up! There’s no time like the present :) It’s a long-term learning thing anyway, definitely one of those “best time to plant a tree is 20 years ago” things.


So cool!


World-building.

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.


NK Jamisin (3 time Hugo winner) talks about world building as a technique. It's something mentioned in this great video about why "The Expanse" is awesome: https://www.youtube.com/watch?v=cGIovBe7pL8


*Jemisin: https://en.wikipedia.org/wiki/N._K._Jemisin

Hugo Award for Best Novel three years in a row!


Gotta watch that, thanks!


You would probably have fun building a hard magic system. Hard magic being a system that has strict rules for how things work. Soft magic being Gandalf style where how it works and how it's limited is unknown.


One thing I've been thinking about recently is conservation rules. are there any popular fiction worlds that explore conservation of e.g. magic? The only example I presently know about is https://www.hpmor.com/chapter/78 (search for "conservation").


Most authors will sacrifice some amount of "realism" in the interests of story-telling (compared to Yudkowsy with HPMOR at least). A couple of Magic examples come to mind: * Brandon Sanderson does a lot of Magic impacting Physics. The magic is often proper unexplained magic - but it's impact on Physics is pretty well modeled. In the most recent Mistborn book - there's a remark that explains that when the character magically reduces their weight while flying through the air - their velocity increases. I think Brandon points to that - but says that he loves the consequences at that level - getting to the point of red-shift/blue-shift for bubbles of fast/slow time is story breaking. See also his laws of magic: https://www.brandonsanderson.com/sandersons-first-law/ * Pat Rothfuss in the Kingkiller chronicles has a magic called "Sympathy" where rule 3 is "The law of conservation".


Hard magic system sounds very interesting.

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.


Would you be interested in doing that as a profession? Storytelling and world building is sorely underappreciated.

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.


I've done a few world building workshop and magic-system designs[1] workshop in a "nerdy-community centre" a few years ago. The community and interest for this is generally pretty small.

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


Curious, why do you want to do that for your startup?

Is your startup a game studio?


If you speak French, there is a conference by one of Ubisoft's creative directors about the Might and Magic world building techniques and choices on the BNF's Fantasy podcast.


Yep! A recurring hobby of mine is writing about a not particularly deep universe I was fond of in my teenage years. World-building my own canon so to speak.


Although you said there is not much literature around the subject, did you find anything? This has always been one of my favorite aspects of The Elder's Scrolls and, of course, Tolkien.


Not literature, but a YouTube playlist. Edgar from Artefexian does short videos on realistic worldbuilding and constructed languages.

https://youtu.be/J5xU-8Kb63Y How to build a classical solar system


As a reference book, the Planet Construction Kit is good and comprehensive.

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.


This sounds fun. Curious what you read about storytelling that sparked an added interest in world building?


... Don't laugh: C

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.


Why would I laugh?

I've done a lot of C programming over the years and I still consider it one of the most elegant languages I've had the opportunity to work with. With the right skillset, you can be as productive as a programmer of any other language or system.

And it's great to see where some of the things we take for granted in programming, come from.

If you want to draw pixels, give Cairo a try. It's fun to use!


Nice to hear from people still enthusiastic about C :)

Thanks for the suggestion, I hadn't considered Cairo, for some reason I thought it was only for SVG, maybe from it's use in Firefox. I will try it out once I get out of XCB territory.


> So far tried fbdev (but doesn't work well with X), now playing with XCB.

Another idea would be to use SDL which essentially provides functionality to make windows, draw pixels and handle input/output. If you do not want to use any library at all and do not mind low "resolution", you could use your terminal as window and regard characters as pixels. Sure, there is the curses library to abstract away different terminals, but if you do not care about platform independence you can just directly write escape sequences to the terminal.


I was indeed trying to avoid the big libraries, since this is just for personal use I don't care about cross platform which allows me to escape these potentially - I may well end up back at the SDL + OpenGL level later when features or performance are a concern.

My current goal is to find a balance of least dependencies and least boilerplate to draw a pixel buffer so i can play with C, nothing more. Once I can do that without lots of fluf then i may be attracted to more advanced or complex methods later on when performance is desirable.

I have done some visual things with the console and printf alone in the past which gave me a taste of C, but now I want some real pixels :)


You may want to try raylib. It's written by a teacher who uses it in the classroom and geared for this kind of "let me code games in C but with only one dependency" goal. It does more than you need but that's a common theme of useful libraries.


Thanks, that sounds about right, i'll take a look.


Have you tried A allegro5? Any take on which is better? I've tried both, but I'm too much of a newbie to have a reasonable opinion. Thinking of getting back on to one of the two.


Then you should be using X11 directly!


My goal is to attain a balance of least dependencies and boilerplate. From what I've read so far it seems that implementing xclient protocols directly would require considerably more boilerplate than using XCB, (and my understanding is that XCB is just that: a generic xclient implementation and nothing more).

Please do elaborate if I'm wrong though! I would be delighted if it's possible to implement a simple subset minimally purely for displaying a pixel buffer without XCB?


I'm not necessarily recommending you go this route in general, but this is a fantastically actionable article for going deep on various Linux graphics APIs including X11 right on the socket: http://betteros.org/tut/graphics1.php


Yes, I really like this article, I used it to get going with fbdev before I moved on to XCB, but only skimmed the remainder since it was avoiding libraries completely it was getting a little verbose (although on second thought DRM doesn't look too bad, and also I missed libdrm should probably see how much that can do).

Just realized now revisiting this that the author also showed how to directly implement xclient! the example is rather large confirming my suspicions RE parent comments.


I meant using Xlib, the client library for X11, which is going to always be available if you are using X! You can of course implement the library parts yourself, but that is more boilerplate.


XCB is actually lower level than xlib, in that sense it is more directly using X11 because unlike xlib it only really implements the client protocol and wraps it up into an interface.

I was however planning on trying out Xlib anyway on my path of exploration from simplest/lowest level to complex/higher level libraries: fbdev, DRM < DirectFB, libdrm < XCB < Xlib < SDL et al.


Out of interest, why would people laugh at someone learning C? I know plenty of people using C in all manner of domains, choosing it over C++ or Rust for fair and sensible reasons - I'm not a C person myself, but it certainly seems extremely useful to have in the toolkit!


I want to learn C not (only) because I think it's useful, but because I think I might like it. I have a particular interpreted language that I like, enjoy and know inside out, now I want to know a compiled one in a similar way.

To answer your question: I get the impression from various tech news on "hot new languages" that C is the incumbent systems language that people put up with but don't really love, and yet I want to try and love it. I've developed a taste for minimalism, simplicity and a degree of brevity in programming, I have a feeling I might find C more suited to me than C++, Rust, Go, Java etc for this reason despite the lack of "modern" features.


I love C. Lots of people do.


I've noticed this a lot on hackernews, there is an apprehesion to say certain things as though there is some sort of pedigree or gating when discussing topics, especially when it's personal...there isn't.

Case in point: The comment below mine...


I started coding 10 years ago (damn I just figured that...) learning C at my engineering school for 2 years. Never had to use it ever since (mostly working front-end and webAPIs) but I'm still glad I studied it to learn the programming foundations. I would probably choose Rust or Go today though.


> why would people laugh at someone learning C?

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.


[flagged]


There are plenty of reasons to still learn C even if better alternatives exist for most new projects. There’s so much important software out there in C (and C++), for example the Linux kernel.


And C is still king in many domains, eg embedded development.


whoosh..


Clojure, Fulcro and Kafka Streams.

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/


I'm a big fan of the first two but why KS mentioned in this group of 3? What's so special about it in this combo? Or is it unrelated?


Sketching on paper. There is a great free resource for learning how to sketch.

https://drawabox.com/


Had never heard of drawabox. Loved their description[0]. Resonated so deeply with me.

> Drawabox's goal is to provide beginners with a strong foundation, and to equip them with the things a lot of other courses and tutorials tend to take for granted.

> It is not going to make you a professional on its own, but it will teach you how to practice, how to use the resources available to you on the internet, and equip you with the tools and skills you need to take advantage of them

[0]:https://drawabox.com/lesson/0/1/whatis


Eternal love to drawabox


wow this looks good. I will have to try this with my daughter. Thank you for sharing.


It's a basic one, but learning an instrument! Namely, the drums. I've tried guitar and bass before, but neither stuck. I'd been thinking of getting a e-drum kit for a while now, and the quarantine gave me a good excuse. I'm loving it so far, just playing along to songs I like, but since I'm self-learning I can already tell my technique and drum kit setup is off. I keep having to adjust the drums, the snare especially, and haven't found the optimal position for everything yet. But it's grabbed me more than any instrument before, and I'm having a blast.

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...


I've been learning Korean, I recently found out that it is a language that was invented rather than evolving over time. It was created with the intention to be easy to learn. The entire alphabet is 24 characters, whereas Japanese has over 500 and Mandarin has a few thousand.

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


The alphabet was created not the language itself. Hangul is indeed designed for the Korean language, a natural language.


You are correct, my mistake. Thank you for the clarification.


I'm learning about trading bots. It allows me to learn new things about software développement (réactive streams forum example), mathematics, machine learning and deep learning

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/


This is incredible - Thanks for sharing. Kudos for using the latest goodies provided in spring-boot.

I had an older version but wasn't using reactive. Definitely, this looks promising.


Thanks a lot for your message :) I'm glad you like it.


was your bot profitable? have you done real trading with it yet?


Hello :) Well, my bot in fact allows you to build your own strategy quickly so my bot does not include strategy. I'm starting to build a strategy with my bot and ta4j... using kucoin sandbox right now. For the moment, still learning, not yet profitable :)


this is interesting! thanks for sharing


My pleasure :)


I'm writing a book at the moment[1], which means all my learning is focused on the table of content I made up a year ago.

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=...


learning Adobe After Effects, Premier, and Animate are on my list. I use to use Flash quite a bit back in 2002.


I'm really enjoying the book!


I've been dividing my life into different parts - fitness, technology, wisdom, food and love.

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.


First of all congrats of mental fortitude to do 1k squats/burpees. That's quite insane. May I offer an opinion here - doing 1k body-weight squats is like doing 'hello world' 1000 times and trying to progress in programming :) Bigger ROI if you fill up a backpack with books and do 100 of them from strength, time (and probably endurance) perspective.


Can you take a bit more about the environmental program and what you're doing with ML?


1k squats a day

How is that tendonitis?


Clojure! I played around with common lisp a bit a some months ago, though I basically used none of the lisp specific features like macros. After reading a few blog posts on functional programming and "the lisp way" I have decided to buy a book on Clojure. My end goal (for now) is to build a basic website with a backend.


Try out https://github.com/fulcrologic/fulcro-template full stack Clojure web app template powered by Fulcro.


Fulcro is huge and might be a lot if you're just starting to learn Clojure too. IMO Luminus is a pretty nice option that lets you start simple and add more complicated pieces as you require.


what book are you working through?


I'm writing a movie script.

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."


Glad to see you taking on a creative outlet. Hope you are able to get it done before this is all lifted.


Right now, I'm learning math. I met a PhD via Discord who is giving me problems to work and checking my solutions. It's been quite fun so far, working on Real Analysis and Abstract Algebra.

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.


Focus has been an issue for me too. I think it helps to view yourself as having a limited number of focus 'slots', but to view each focus as just a medium-term commitment (a few months or years). So e.g. you're not choosing an instrument _instead_ of drawing, you're just choosing to learn the instrument _first_.

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 have a similar problem. I do what interests me in the moment and I don’t make myself feel bad when I don’t make the progress I wanted on something else. I think I’m happiest that way.


I'm curious, how could someone find a PhD/researcher on Discord, esp. for this kind of purpose?


I found them on /r/math, actually, but they linked me to Discord.


thanks!


My advice would be to define in multiple realms what you consider to be strongly focused, while both realizable and healthy in the long-term.


I've been working through the Abstract Algebra course at Harvard: http://matterhorn.dce.harvard.edu/engage/ui/index.html#/1999... as well as Bartoz's Category Theory courses.

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.


Exploring Elixir & Phoenix. Solved some AOC & exercism problems with it, and wrote a BF compiler. So far, enjoying every bit of it. The language itself is beautiful! Codes are available on my Github[1] account :).

[1] https://github.com/wasi0013/


I’ve been doing the same in fact. I’ve always had a soft spot for Erlang (and now Elixir). I wrote a pretty large Erlang app back in college for a distributed system in a Biology research project.

I’ve been enjoying working with it - taking a little break but definitely enjoying Phoenix as well. It’s been refreshing to work through a “big” web framework that feels straightforward to reason about.


Here's a great course from Udemy using Elixir and Phoenix: https://www.udemy.com/course/the-complete-elixir-and-phoenix...


What inspired the BF compiler project?


I thought it will be easy to implement and also a bit of nostalgia.

I was a 2nd/3rd semester CS student at that time when I saw BF code for the first time on a Competitive programming platform named SPOJ[0]. Later, I found it again on a code golfing website[1].

I thought it would be fun to learn as the language only had 8 commands! I learned it and wrote a tutorial[2] on my native language for my best friend so that we could have some fun together with it :D

[0] http://spoj.com/

[1] http://golf.shinh.org/

[2] https://github.com/wasi0013/Bangla-Brainfuck-tutorial/blob/m...


What is "AOC"?


maybe adventofcode?


Yes, I meant the Advent of Code.


High school is out so I am learning SIMD instruction sets, like AVX2 and SSE, and using these to speed up Hamming/Levenshtein distance calculations in Rust. Preliminary testing shows a 20x speedup using vectorized SIMD operations! The end goal is a full Rust library for edit distance routines.

Sneak peek of the code: https://twitter.com/daniel_c0deb0t/status/124224838155819008...


You could also consider providing bioinformatics routines such as global and local sequence alignment. Under the hood they're very similar algorithms.

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...


Though I probably won't implement the different weighting schemes, I currently have alignment traceback and searching (allow "free shifts" for the pattern string) features.


Here's another recent SIMD aligner if you're interested:

https://github.com/langmead-lab/vargas


I took a look at the code, and read the paper. It seems that they directly calculate the entire 2D DP array, but use SIMD to allow each cell to contain multiple values, one for each query string. My approach uses anti-diagonals instead, but it is fast for one vs one comparisons, instead of handling multiple query strings.

Regardless, my goal was to learn some SIMD and Rust (first time for both), so I did not read many background papers.


One thing to keep in mind is for SIMD memory locality is very important; a diagonal vector with a standard 2D DP grid is gonna lead to a lot of cache misses. Just something else to learn about.


Since I am storing the entire DP matrix as diagonal vectors that are flattened, I don't think there will be many cache misses. Each diagonal only depends on its previous two diagonals, and each diagonal is stored contiguously in memory.

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.


Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact

Search: