Hacker News new | past | comments | ask | show | jobs | submit login

Sad news. Just recently Abraham Lempel [0] died, just days after I tasked my 16 yo daughter to implement an lzw compression as a part of her programming education. I chose this particular task for her because many years ago I have implemented an lzw compression myself, years ago, learning a lot about bits, masks and gifs in the process. R.I.P.

[0]: https://en.m.wikipedia.org/wiki/Abraham_Lempel




> I tasked my 16 yo daughter to implement an lzw compression as a part of her programming education

Kudos, to the both of you.

I'm sad we're starting to rapidly lose so many of our titans.


In other industries, the death of the inventor of a technology often marks the start of a further wave of innovation.

For all kinds of reasons, the inventor (who is sometimes by now rich and/or powerful), may have a specific vision or path they want to proceed down. When they die, other people start investigating other paths, often with more success.

I wonder if tech will see the same?


No. In tech when the creator quits or dies they’re replaced by MBAs that squeeze every penny out of the creation. (Like authors whose grandchildren direct the trusts which own the copyright a century after the work was written)

New creations in tech have to wait for patents to expire and the incumbents to crumble to the point where they don’t have the cash to buy out the competition any more.


A bit tone deaf considering the thread is about algorithms that are open.


LZW was claimed by Unisys for many years. It wasn't Ziv's fault, it wasn't even Welch's, but it does highlight that compression has historically been a garbage fire of patent harassment. I certainly think it has held the field back.

The patent harassment might even be a factor in the curiosity mentioned elsewhere in this thread, that a lot of practical progress in file compression has been published in a Russian web forum.


Well, plenty of compression algorithms have been patented or attempted to be patented - e.g. arithmetic codes and Microsoft's rANS patent


I personally wrote an implementation of lzw in Assembly in my late teens. It could deal with gifs... that was before 1999, when

Unisys[0] claimed the patent (for all kind of uses) and had the patent for many a year, PNG was created not to use lzw since it was patented. The algorithm was patented for the encoding part but not decoding.

[0]: https://eng.libretexts.org/Bookshelves/Electrical_Engineerin...


Plenty of things are totally open, yet innovation is still directed by the inventor.


Still not at all relevant to this case. Algorithms have no such gate keeping because there is no barrier to entry. Algo developers aren’t fighting for some tiny pot of NSF money allocated to particle physics to build a 100 million dollar algorithm detector.


This is only partially true. A great example is Arithmetic coding in compression where research pretty much stalled for almost 40 years (from the mid 1970s until the 2010s) due to patent concerns.


To be fair, Ayn Rand said basically the same thing about industry long before tech bros existed.


I noticed your username after reading your comment, and was not surprised.

For some reason, it seems the former USSR is highly prominent in compression algorithms. RAR, PAQ, encode.su, etc. and of course Andrey Markov.


Incidentally, the guy who wrote RAR (and an incredibly great file manager for Windows, FAR Manager), Eugene Roshal, has studied at the very same faculty/specialty as I did. However, he had graduated before I entered the university.


> For some reason, it seems the former USSR is highly prominent in compression algorithms.

I’d take a wild guess that it has to do with making more with having less, such as access to larger storage volumes or broadband.

Specific to compression, when you’re “tech poor”, the time you spend waiting for data to get processed is essentially free.


At the time those algorithms where developed even computers / networks in the West were painfully slow, compression always had its use.

zstd is developed at Facebook, not known for a lack of computing resources.


Still, even if you can reduce data footprint on Facebook by 1%, that's the GDP of a small planet right there.


I could take a wild guess as to your last statement. From a little bit that I've read, maths in the USSR were taught differently than in the west. I remembering reading somewhere that they were teaching kids discrete math in elementary/middle school. A topic that is big in CompSci and also a topic I didn't know anything about until my sophomore year at university. If that is true, I would say this may be why, but that is just speculation.


> the former USSR is highly prominent in compression algorithms

And, which is quite odd, a lot of proprietary Windows software.


If you're daughter can knock out lzw at 16, she's going to be an incredible programmer.

How do you go about teaching your kids? I don't have kids yet, but if they do have in interest in programming, I'd love to give them a strong head start like you have.


Thanks, I think she has a potential to become a great developer, unless we all aren't replaced by that chatGPT thing everyone's talking about.

Regarding teaching, I understood early that while I can program, I have very little understanding on how to teach it. So first, she underwent two Python courses (basic and advanced) on stepik.org [0], which had automated tests and have her an understanding of the language.

Then, I planned to start throwing tasks of increasing complexity at her until she solves them, giving her a more or less complete coverage of all things programming. So far, she has written such things as

- Tetris, in the console, with keyboard input

- Snake game, with competing snakes which use wave algorithm to find path

- LZW algorithm to learn bits and compression and other things

Next my plan for her follows roughly this path:

- some GUI programming, using GTK and Windows Forms. Calculator or maybe Checkers or something.

- some web programming, backend and frontend. Most likely Django / jQuery

- maybe some neural networks since are all so hot now

- some hardcore assembler stuff, like maybe some simple game or visual demo

- some mobile development, Android or iOS

Once she'll be done with all that, I think she'll have quite a clear picture of most general areas of development and will be free to pursue the area she liked the most.

[0]: https://stepik.org


some hardcore assembler stuff, like maybe some simple or visual demo

Demoscene/sizecoding might be interesting, especially if she also likes artistic stuff.


Would you mind sharing:

1) sequence in which you gave her tutorials e.g. first tetris, then snake game, etc.

2) sources that you used to guide her through these tasks? e.g. youtube videos or other links.

Thanks.


First I have her the basic Python course, [0]

Then more advanced Python course [1]

Then we went for Tetris. I did provide her help in getting the initial loop running where you press the key and something happens, then she implemented the game logic by herself. I did ask her to explain the architecture to me in broad strokes prior to development, and gave her some feedback, so the architecture was adjusted a bit.

First version was built in a very direct way, so once it was done I told her about Object Oriented Programming and she rewrote Tetris using objects in a more elegant way.

Then she moved over to Snake game, and mostly did it by herself, reusing parts of the code that were used in Tetris (main game loop thing, mostly), I mostly provided feedback and beta testing. We had some interesting moments debugging the wave algorithm which computer player snakes used to find a target (a simple wave algorithm), and improving performance. Then, we moved on to this LZW thing and, unfortunately, its creators immediately started dying.

The reasoning why I chose these particular tasks is because they are all relatively limited in scope, so a studying task is not enormous in size so you never finish it and actually have a chance to ship a finished product to show it to friends/teachers.

[0]: https://stepik.org/course/67/promo

[1]: https://stepik.org/course/512/promo


Thanks for sharing.

I followed this teaching path: scratch > python > sqlite > javascript (web). I am missing algorithms and OOP, and will look for gradual learning resources in these area.

One recent area I tried was observability. With prometheus and grafana, they got into collecting more data points and creating visualizations for them. Bangle.js is another one.


And it seems to me, at least factoring in the upcoming projects, to cover different types of work, not merely progressive difficulty. So she'll get a taste of games, a taste of systems, a taste of web ui, a taste of embedded, etc. It sounds great.


> using GTK

Maybe Qt instead?

Suggestion that because the Qt docs tend to be much, much better + it's realistically cross platform, thus opens up more possibilities.


Maybe, that's not the point. I'd rather do a GTK because back in 2004 or so I had written some software that used GTK so I'm more familiar with it - back then QT still had those licensing issues so everyone who wrote non-free software considered it to be "good, but that license ..." .


I assumed the point was to get a taste of desktop ui app development along with a taste of 20 other kinds of developmemt, not to learn gtk or qt or any particular framework.


fantastic list! although obviously no such plan can really cover the whole space, i cant help but want to suggest adding some languages representation to the list; a simple interpreter or compiler project, or alternatively some symbolic computation eg algebra or differential calculus. being exposed to this stuff via Racket was hugely transformative for me (e.g. https://beautifulracket.com/stacker/why-make-languages.html), but if lisps arent your thing theres plenty of great projects in e.g. java as well: https://craftinginterpreters.com/contents.html


yes, the idea is to do these tasks using a variety of languages, not just Python. With this LZW task, for example, she has already created a compression and decompression in Python and is now working on doing it in C so that it can take a file compressed by a python script and decompress it back with C program.

Regarding Racket, it looks interesting. While I never did anything like it myself back in the day, it looks like it'll be an interesting task for my daughter further down the road.


> unless we all aren't replaced by that chatGPT thing everyone's talking about.

Yes. Bravo to you and your daughter for your perseverance in spite of the looming "disruption" coming for all human knowledge workers.


You are awesome and your daughter is awesomer


I hope that an LZW compressor was something she would have naturally wanted to hack on herself, rather than something she’s only coding because she was “tasked” to.

The most surefire way to kill a young hacker’s spirit is to force them to hack on things they don’t care about. This goes with anything, not just computing. To whit, a childhood friend of mine was a gifted pianist who really loved jazz. His parents forced him to study with a classical teacher. Guess who doesn’t play piano anymore?


Well, she seems to be interested in programming and I don't force it on her. So far I think she does quite good. I have chosen lzw for her since my strategy is to give her quite a few diverse tasks to give her broad (albeit not very deep) understanding of general areas of development. I have covered this topic in more detail in a sibling comment here https://news.ycombinator.com/item?id=35318995


another anecdote to balance :

as a kid who played chess, the kids who were 'forced' to play chess -- the ones who came from a long chess playing family and had different scenarios drilled into their head from the day they could talk -- were much more talented at chess than I.

Their talent persuaded them to continue pursuing it far longer than I ever did, with many of them still involved.

The most involvement I have now is a friendly lichess game every few months.

It was their talent that allowed them to find more enjoyment within the pursuit than I ever did, and that talent was essentially forced by their immediate family.

So, essentially, I am just saying that forced persuasion thing that parents' sometimes do is a double-edged sword; it can create animosity and bitter hatred but it can also create the drive and motivation for boundless talent and personal satisfaction.


I’m pretty good at computers but had no real guidance. I now hire young people with a genuine interest, then gift them equipment and guidance that will last them their entire lifetime (Even if they get a career in something else).

There’s such thing as pushing too hard, but nobody got buff without being pushed by those around them


> nobody got buff without being pushed by those around them

This is completely contrary to my experience. The successes I’ve had were my own motivations and drive.


This made me a little sad. I remember my parents pushing water colors, carving sets, parks and rec, trumpets, books, computers, you name it in front of me to help me find something I was interested in. They didn't force any particular thing on me, but definitely exposed me to many things to help me find my path. Then they supported my interest in ways that boggle my mind looking back. There is no way they could afford to provide me many of the experiences I had.

I sincerely hope that you were just ignorant of the help you received along the way. A child with absolutely no support or encouragement is a very depressing thought.


I think you are misinterpreting "push". In the comment you replied to, it is (I believe) being used in the sense of "pressure, force, compel", rather than "provide with opportunity". My reading of TedDoesntTalk's comment does not indicate that they were provided with no support or opportunity - merely that the motivation to persist with those opportunities, once they ceased being easy fun distractions and required dedication for improvement, arose internally.


Precisely. Thank you.


You had a very priviledged childhood then. The only response to my interests I got from my parents was "you are already good at school why are you straining yourself doing these unnecessary things".

And I did not have bad parents. Many actually hinder their childrens development, instead of being ambivalent to it.


The only reason I got into development (and have a successful career) today is because I was able to work on what I wanted to prior to starting said career. If a parent had 'tasked' me with anything, it would have turned me off. Not because I'm disobedient or anything, but because I have disabilities that don't agree with that method of learning.


For the record, 'tasked' is probably not the best word to describe for what exactly happened (English is not my native language). In fact, what happened was this:

- Dad, I'm so done with this Snake game, give me some other task?

- Ok, how about making that LZW thing we talked earlier?

- Cool.


Can you explain more? My whole life I felt the same. If I have to do something, I just hate it and can't move forward. But if is my choice Im really good a it.


Heh Heh Heh

Isn't the general term for that a "problem with authority"? ;)


The most extreme example of this is the Polgár sisters:

https://en.m.wikipedia.org/wiki/Judit_Polgár

Judit Polgár (born 23 July 1976) is a Hungarian chess grandmaster, widely regarded as the strongest female chess player of all time.

Polgár and her two older sisters, Grandmaster Susan and International Master Sofia, were part of an educational experiment carried out by their father, László Polgár, in an attempt to prove that children could make exceptional achievements if trained in a specialist subject from a very early age. "Geniuses are made, not born," was László's thesis. He and his wife Klára educated their three daughters at home, with chess as the specialist subject.


Isn't this just assuming the "forced" students didn't in fact want to keep playing?


I don't think it works that way.

I picked up skills after my parents because I was curious and they were both knowledgeable in their respective fields(my dad, a medical equipment engineer, could repair a TV, which for a five year old amounted to a superpower).

I was never forced to do anything and yet had the exact same headstart you're talking about, but in e.g. school math.

Of course that did a lot of damage to my work ethic, but the point is that kids are naturally curious and, at least initially, want to do what their parents do.


I get where you are coming from and yet when I was introduced to LZW I wasn't that interested and yet by the end it was the coolest thing I had ever seen. By having control over the entire input and output stream you can embed within that the very properties you are trying to achieve. That was a game changer.


All the people with computer science degrees working in the field who also had to take common core courses that they 'didn't care about' seem to serve as a counterexample to this general claim.


There’s a local jazz musician named… Jaz. His father was a big fan of the genre and it stuck.

I’ve seen him play at SF Jazz a few times and it seems like his loves his job.




Consider applying for YC's Fall 2025 batch! Applications are open till Aug 4

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

Search: