In this case, cosine distance one would be in a case when it repeats word-by-word. It is not even a "similar thought" but some sort of LLM's OCD.
For anything else... cosine similarity says little. Sometimes, two steps can have opposite conclusions but have very high cosine similarity. In another case, it can just expand on the same solution but use different vocabulary or look from another angle.
A more robust approach would be to give the whole reasoning to an LLM and ask to grade according to a given criterion (e.g. "grade insight in each step, from 1 to 5").
For anyone who hasn't tried local models because they think it's too complicated or their computer can't handle it, download a single llamafile and try it out in just moments.
They even have whisperfiles now, which is the same thing but for whisper.cpp, aka real-time voice transcription.
You can also take this a step further and use this exact setup for a local-only co-pilot style code autocomplete and chat using Twinny. I use this every day. It's free, private, and offline.
This was fascinating. I'd condense the overall sentiment to, "Pleasure is desireable and pain is inevitable. When and where do you get pleasure and avoid pain?" Also, these definitions are different than the common definitions. Here's a rough digest:
Psychopaths: I don't care about rules, types, or beauty, just get it done (JS)
Obsessives: a little monotony now avoids a lot of pain later (go, java)
Masochists: Look at how disciplined I am! (C)
Sadists: Look at how impotent everyone else is! (perl, regex)
Hysterics: Look at how beautiful this code is! (python)
Fetishists: Have you tried more X? (objects, abstractions, types) (smalltalk, erlang)
Melancholy: Oh, I miss the days when I could write an entire application in 200 lines of Lisp...
God what a crowded market. There aren't just all the established products but for some reason everybody and his brother and his sister and his uncle and his dog wants to make a project management tool.
I can't see how pricing is a problem for startups. I mean, you are paying somebody several thousand per month can't you afford $50 a month a seat to make them productive?
On top of that the low price comes right out of your pocket and makes you automatically less profitable.
I'd rather make a high priced product that can convince people to pay the price. There are very similar products used in areas other than software that are called "case management" it is a market I'd researched looking for applications of semantic technology. You might want to pivot to one of those markets. With software devs you are up against
An alternate idea is to make this the "anti-agile" project management tool to target the many people who think they hate agile... Maybe it is really agile but it tries to persuade people who hate agile that it really isn't.
My neighborhood. When we moved in we sat out front every evening, and made small talk with every single person who walked by. Some were caught off guard, some kinda just waved and moved on, but most stopped to talk.
What's interesting is that people who had lived in that neighborhood nearly 20 years together had never talked, and met for the first time as both stopped to chat at nearly the same time.
Then we started with small gifts, usually food because my wife cooks exotic things for people to try. Now we get random gifts, usually food or fruits or some flower or plant.
Now we have little get togethers inviting each other, text to ask if need anything from the store, etc. And all it took was being willing to sit outside for a couple hours each night and say hi.
See the military five-paragraph order format.[1] It's boring, but useful.
The military requires that orders show "commander's intent". This matters when circumstances change and some subordinate has to adapt the plan.
"The enemy gets a vote." Officers and noncoms are then expected to change plans to achieve the commander's intent by other means. It's not about blind obedience.
USMC doctrine:
Mission tactics are
just as the name implies: the tactic of assigning a subordinate
mission without specifying how the mission must be
accomplished. We leave the manner of accomplishing the mission to the subordinate, thereby allowing him the freedom and
establishing the duty to take whatever steps he deems necessary
based on the situation.
The senior prescribes the method of execution only to the degree that is essential for coordination.
It is this freedom for initiative that permits the high tempo of operations that we desire. Uninhibited by restrictions from above,
the subordinate can adapt his actions to the changing situation.
He informs his commander what he has done, but he does not wait for permission.
It is obvious that we cannot allow decentralized initiative with-
out some means of providing unity, or focus, to the various efforts. To do so would be to dissipate our strength. We seek unity,
not through imposed control, but through harmonious initiative
and lateral coordination.
We achieve this harmonious initiative in large part through the use
of the commander’s intent. There are two parts to a mission: the
task to be accomplished and the reason, or intent. The task
describes the action to be taken while the intent describes the
desired result of the action. Of the two, the intent is predominant.
While a situation may change, making the task obsolete, the intent
is more permanent and continues to guide our actions. Under-
standing our commander’s intent allows us to exercise initiative
in harmony with the commander’s desires.[2]
Category theory has very hard definitions and not many theorems. Would not recommend. It has Grand Unified Theory vibes so pseudo intellectuals have a hard on for it.
Don't waste your time trying to understand people who write to make themselves sound smart. You aren't missing out on anything.
Here is a recent article from TOPLAS, imo a top programming language journal. No category theory here...
An explainer post [1] connected to that Tweet is something I found extremely informative (assuming it's accurate):
"- In 2021 SVB saw a mass influx in deposits, which jumped from $61.76bn at the end of 2019 to $189.20bn at the end of 2021.
- As deposits grew, SVB could not grow their loan book fast enough to generate the yield they wanted to see on this capital. As a result, they purchased a large amount (over $80bn!) in mortgage backed securities (MBS) with these deposits for their hold-to-maturity (HTM) portfolio.
- 97% of these MBS were 10+ year duration, with a weighted average yield of 1.56%.
- The issue is that as the Fed raised interest rates in 2022 and continued to do so through 2023, the value of SVB’s MBS plummeted. This is because investors can now purchase long-duration "risk-free" bonds from the Fed at a 2.5x higher yield.
- This is not a liquidity issue as long as SVB maintains their deposits, since these securities will pay out more than they cost eventually.
- However, yesterday afternoon, SVB announced that they had sold $21bn of their Available For Sale (AFS) securities at a $1.8bn loss, and were raising another $2.25bn in equity and debt. This came as a surprise to investors, who were under the impression that SVB had enough liquidity to avoid selling their AFS portfolio."
This was a really fun list to read through. I agree with the author that knowing as much as possible about how things work, not just what things do, is extremely useful.
However, "Just know stuff" I think is a secondary requirement (although an important one) to be successful. People really struggle to "just know stuff" if they aren't interested in the subject in the first place. People who aren't interested will settle for knowing only what things do, and not dive into how they work.
I am interested in this stuff, and actually self taught (bachelors in mathematics here). I have experience with a lot of stuff on this list, not through work or academia, or because I want to make money, but through fiddling on my desktop at home. I too got the "coveted tech job" as a machine learning engineer, but I never would have if I wasn't legitimately interested in this stuff, studying for fun in my spare time. I have seen lots of people fail to progress in this field because they _don't care_, they just want a good job.
Kind of off topic, but this is actually an integral part of my interviewing process. We give candidates a simple dataset to model, and we receive their script. The performance on the hold-out set is only weighted ~20%. The candidates ability to talk about their process, about the internals of the model they used, about the feature engineering quirks to work around model limitations, about their parameter tuning scheme - these conversations reveal how much someone is actually interested in the field, and is a great indicator for whether or not they are going to be a good contributor to the team. I've had candidates who couldn't tell me _anything_ about how the models they used actually worked. PhDs included!
The site died from all the traffic, the wayback machine does not have a full copy :(
Anyway, since I am too from Poland I will just add that tinkering with hardware and electronics is still popular here. We have at least 2 paper magazines dedicated to electronics. One of them (https://elportal.pl/) tries really hard to make the hobby popular again. They provide a lot of free learning material and free access to some of the articles and DIY projects. It's a great resource for teenagers. Example project (schematics are international, so don't be bothered by Polish): https://ep.com.pl/projekty/miniprojekty/11310-nadajnik-am - an AM transmitter based on logic gates.
Now, more of a local curiosity is this YT channel (only in Polish unfortunately): https://www.youtube.com/watch?v=Ua8ZrITVucY One of the guys looks like he is drunk (maybe he really is). The guys speak about vacuum tube technology, make tube radios from scratch (make the tubes, resistors and capacitors themselves) and explain how old tech works.
Interesting thing is that electronics generally is not learned at school, there is a subject called "technology" (or at least where when I was a pupil). Most of the people interested in it learned on their own...
so you're talking about at-will employment and it's generally the rule in America. however there are some states that have a good faith rule where you can't terminate a employee for malice. here's a map of which states are which: https://www.paycor.com/wp-content/uploads/2021/02/Employment...
i believe WSJ employs in NY state so this doesn't apply.
These kinds of diagrams are OK for the most basic introduction to data structures, but they're not much help when it comes to creating an efficient implementation. Learning about data structure implementation without using a relatively low-level language that allows pointers seems to be a recipe for confusion.
Hence, one is probably always better off using the built-ins or libraries for any data structure in a higher-level language rather than implementing them from scratch. For example, here's a nice blog post on how Python dicts are implemented using hash tables written in C.
While it's possible to build something like a binary search tree from scratch in Python using classes for nodes and with references instead of pointers, along with recursive algorithms for traversing it, it doesn't seem like that great of an idea to teach students in this manner. If the goal is to really teach students how to do this, C or similar (Rust?) is probably the better option for code examples, and a lot of time would have to be spent on memory management concepts (i.e. have students build their own dynamically allocated stack for the traversal, to avoid blowing through the stack, maybe).
Docker is built with Go. Compare doing things with Docker api between Go and Python. I usually recommend people to "script" things with Go but I start to think that Go has to go...
My previous employer used to plan "express checkout" weeks for developers. In between two larger projects, you'd get the chance to spend two weeks doing nothing other than picking low-hanging fruits off the bug-tracker tree.
It worked miracles, with minor-but-irritating bugs getting solved much faster, and with features for niche groups getting implemented as opposed to laying in wait for a bigger project it would thematically fit in.
Some devs even went out of their way to spend those two weeks on a single, irritating, deeply-rooted bug that nobody in their right mind would even want to fix.
I used to take the Chicago Metra and ride in the vestibule to exit the train quickly. The same 8 people would always be there every day but this gentleman, "Gary", would always carry the conversations.
People were just drawn to him and I was in awe of how he captivated us with his stories. I was able to study him for a couple of years and came up with a list of how he was able to hold our attention:
1) Gary spoke loud (he had to since we were in the train entryway) but did not shout.
2) He adjusted his tempo of speaking to match the urgency of his story. Just like a good song, he had noticeably different ways of expressing himself.
3) Just as he adjusted his speaking, his hand movements and facial expressions also supported his story telling.
4) He was older (maybe early 60s) so he had a lot of life experience.
5) He was not condescending or patronizing. He was very empathetic with his audience and the stories he told. You could tell that he really cared about the subjects of his stories and how we could relate to them.
6) He knew everyone's name. So when he talked to you he would use your name a lot.
7) He always was to the point. He didn't meander or deviate from his train of thought. Every story had a build-up and a conclusion.
8) He was very funny without being mean. Sort of like Cosby before we found out what Cosby was really like.
9) He was always happy. He loved his job and his family and he was nearing retirement (he told us this). His happiness was infectious.
10) He was always asking questions. Sometimes, I'd get to the train early and it would just be me and him. He'd always ask about my day, any interesting projects, etc. He would then comment on what he had for lunch ("Have you ever had the Chicken Vesuvio?" he asked) and go on about an experience he had at an awesome restaurant.
After two years I had to stop taking the train, but I'd sometimes hear about Gary from a friend. He did retire a couple of years later and moved somewhere warmer. I've always read articles about excellent speakers, but then I always think that I was fortunate to learn from Gary.
Congrats on landing a FAANG position! As long as the environment isn't toxic, you can find a way to be content.
Use this as an opportunity to learn how to adjust your thinking so you can thrive personally in a challenging environment. You may never get to a point where you love it, but you can probably get to a place where you are successful and can focus on the positives.
Learn how to work well with challenging people. You'll encounter more of them later in your career. Again, adjust your thinking. These people almost certainly have their positive qualities. Work with those positive qualities and become a master at mitigating or avoiding their bad qualities.
As far as working nights and weekend goes... do you really have to do that? Are other team members doing that? Big companies are not like startups. All the things will never get fixed, and you simply need to do your best with things in a permanently semi-broken state.
I understand that you don't want to coast. You don't have to even if others are. Focus on doing an excellent job on your corner of the world. Your projects, your code, helping others, etc.. Worry less about the bigger picture.
Also remember that it's not forever. This is an investment in your future career.
> VM to only run a browser in there, to keep the memory under control
For other Linux users out there — a VM is not needed for this, use a cgroup with memory limits. It's very easy to do with systemd, but can be done without it:
The kernel will prevent Firefox from using more than 2 GiBs of RAM by forcing it into swap (including all child processes). To quote systemd.resource-control(5):
> Specify the throttling limit on memory usage of the executed processes in this unit. Memory usage may go above the limit if unavoidable, but the processes are heavily slowed down and memory is taken away aggressively in such cases. This is the main mechanism to control memory usage of a unit.
If you'd rather have it OOMed, use MemoryMax=2G.
It's actually very useful for torrent clients. If you seed terabytes of data (like I do), the client quickly forces out more useful data out of the page cache. Even if you have dozens of gigabytes of RAM, the machine can get pretty slow. This prevents the client from doing that.
There are lots of other interesting controllers that can put limits on disk and network I/O, CPU usage, etc.
A whole new encryption scheme that will change my world. I’ll share it here when it’s polished up.
It allows you to encrypt anything and can be decrypted by anyone after a certain point in the future has passed. It uses the new NMA announcements (signed timestamps) from the Galileo GPS satellites to “prove” the time has passed and generate the decryption key.
Show up and do the work, consistently. Just this basic discipline puts you in the top 20% of performers, everywhere.
Make your superiors look good and in any case, not bad. They don't care what you do for as long as you do this. This does not require sucking up, just deliver.
Be reliable. Deliver on promises, likewise do not commit to a promise you can't fulfill and explain why. When you mess up, admit it and fix it.
Avoid politics, divisions, conflicts that put you in a camp. You have no opinion, or a very boring neutral one. Rather than share more than you know, share less than you know. Don't smear colleagues, even if they deserve it.
Do all of the above humbly and silently. It will get noticed. You'll be perceived a solid no-nonsense drama free worker that gets shit done. You don't even need to ask for opportunities because they will find their way to you.
Because you get things done.
To me living an honest life is feeding my family which I'll always do or I'll die trying. I refuse to do work that harms society, but other than that I'll gladly tell whoever in the office anything they want to hear if "that's how it works".
Ultimately I think it’s because the internet is just too big! Google were only able to do it because they had the right algorithm early in the age of the internet. They were then able to grow with it to achieve the scale required. Starting from scratch now on a general internet search engine would be close to impossible without 10s, if not 100s, billions of investment. And you would need that to build the index before even beginning to be competitive. No one is making bets that big on search, especially when the online advertising industry (which is the only way to fund it currently) is in danger of massive regulation.
I think there is massive opportunity for domain specific search engines though, imagine a search engine specifically designed for software engineers and developers, or one for academic research (not just papers but all online scientific content, news and discussion), or one targeting the arts. I think it’s these verticals that could be incredible.
You then potentially move towards a building “meta” search engines (if your are older than about 35 you will remember these) that work out what you are searching for and uses a domain specific engine.
Edit:
Just to add to this, people who say that “decentralised” search engines are the only way to compete with Google are not completely wrong, it’s just that it’s not about protocols and distributed indexes. It’s about a community of smaller search engines working within specific domains and collaborating (commercially) on meta search engines, prompting people to search on each others engines if it would be better for that search.
We almost need an “Open Search Co-Op” which smaller search engines can join to share technology and refers users to each other.
But they really haven't. We've not seen hide nor hair of the new process, only iterative improvements on the current process, and the attempt at big.LITTLE x86-style doesn't seem to have worked out terribly well.
ARM has taken out the low-power market that Atom and Pentium classes were aiming at. AMD APUs have long been a favorite of mid-power devices like gaming consoles and are now a desktop enthusiast favorite as well. The i5/i7 class is outmatched in every metric ($/FLOP, W/$, and W/FLOP) by the Ryzen series. IBM and Azure placed their big chip refresh orders with AMD as well, so the hyperscaler market is in danger. The only place Xeons are still superior is the scientific and high computing space, and Threadripper is making inroads there as well.
Intel still has great sales from existing cashflows and OEM agreements, but if you were buying a computer in 2022, why choose Intel? Why would its customers? I think they're going to have to come up with something new and soon.
I have had a hard time figuring out how to phrase this, but I think the problem is that everyone wants to be smart, and sometimes that subconsciously gets turned into "smart people are better," but what we really want other people to be is aligned with us. How capable they are is just the length of the vector, which could even point in the opposite direction making intelligence detrimental.
It doesn't work like that. You have to be "on" even if you aren't working. That means you feel like you can't commit to anything substantial since you feel like you should be working. Fucking off on the internet is a coping mechanism to numb the pain of being in this limbo where you aren't working; but, feel like you should be working because you are getting paid a lot. In retrospect it's easy to see that there's this spare time available to do other things; but, when you are in it, it's not obvious where the boundary is between this extra time and where the work time should be. I know it sounds like a first world problem; but, it actually feels really awful to be in this spot because you can't even admit you are there to anyone without feeling like a slacker/loser/failure/time-thief, a torturous trap.
The UUID specs use the terms "variant" and "version" a little funny; "variant" is essentially the revision (so all modern UUIDs have variant=0b10 to specify RFC 4122 UUIDs), and "version" is a 4-bit number identifying the sub-type within that variant:
UUIDv1 time-based
UUIDv2 legacy DCE security thing, not wideley used
UUIDv3 name-based with md5 hashing
UUIDv4 randomness-based
UUIDv5 name-based with sha1 hashing
This draft registers a few new sub-types:
UUIDv6 sortable time-based, Gregorian calendar
UUIDv7 sortable time-based, Unix time
UUIDv8 sortable time-based, custom time
In 2010 I went to prune trees in Australia. Immediately, my depression stopped. Almost as if using the full body made everything better than using only the brain and speaking to a computer all day.
There is another important niche I am particularly excited about: programming language research geeks and lisp geeks. The pervasive multiple-dispatch in Julia provides such a beautiful way to architecture a complicated piece of code.
I bombed an interview at a game company because I gave a right answer that I couldn't get them to understand.
I don't remember the exact problem they wanted me to solve, but the answer involved a dynamic collection and they wanted it to grow with constant time complexity. They were probably looking for a linked list. But I said I'd use a dynamic array because those have constant time when averaged over a series of appends.
I don't know if I remembered the term "amortized complexity" or not, but it was clear that they had never heard of doing amortized analysis across a series of operations and they absolutely did not get my answer. They got hung up on the idea that some appends force the array to grow and get copied. I tried to explain that that was only true for a predictable fraction of them, but they were stuck on the idea that this meant dynamic arrays had O(n) worst case performance. They clearly thought I didn't know what the hell I was talking about.
I'm pretty sure that was the point where they decided to pass on me.
But now I'm a senior software engineer at Google and I just finished writing a textbook that explains dynamic arrays including their amortized analysis, so joke's on them.
In the 90s I used to make money off shareware, and every time I release a new version hackers would release "cracks" for the license key. Eventually I figured out that these cracks are coming from Russia.
In the next version of my program, I added a check for system language, and if I detect Russian then I bypass the license key checks, and the program is free to use. This stopped hackers from releasing cracks.
Hendrick Bode (Bode Plot)
Harry Nyquest (Nyquist Frequency)
Barney Oliver (pulse-code modulation & founded HP labs)
John Pierce (Pierce Oscillator & science fiction)
Ralph Hartley (Hartley transform!)
Walter Shewhart (Statistical quality control / Shewhart cycle)
It was my honor to have met several of these people in sometimes odd circumstances.
In this case, cosine distance one would be in a case when it repeats word-by-word. It is not even a "similar thought" but some sort of LLM's OCD.
For anything else... cosine similarity says little. Sometimes, two steps can have opposite conclusions but have very high cosine similarity. In another case, it can just expand on the same solution but use different vocabulary or look from another angle.
A more robust approach would be to give the whole reasoning to an LLM and ask to grade according to a given criterion (e.g. "grade insight in each step, from 1 to 5").