Live data from Hacker News

My 20 year career is technical debt or deprecated

blog.visionarycto.com

121–130 of 585 posts

Re: My 20 year career is technical debt or deprecated

#121
post #62
post #56

Earlier quoted context omitted.

Most people use pdfLaTeX or XeTeX, which may have some basis in the original Tex82 but have since moved on, at least in code.

aren't pdftex and xetex just patched versions of tex82

> pdfTEX is based on the original TEX sources and Web2c

So it at least ties back to original code. XeTeX appears to be similar but with even more extensions, but other of the "TeX" tools are complete rewrites.

Re: My 20 year career is technical debt or deprecated

#122
post #58

I guess I was lucky: I started 15 years ago doing web development using python and django on linux, which is still my toolset today ;)

Nice. I was a less smart person who wanted to learn, like everyone does these days it seems (but not back then), the latest and the greatest. My Django projects of 10-15 years are running fine in production and get updates in their respective companies. All the rest I've written has all kinds of issues. And Django is still relevant, just not hip. Should've stuck with it.

Re: My 20 year career is technical debt or deprecated

#123

I feel like this is heavily connected with the idea of legacy. I grew up in Scotland, and lots of the buildings, culture, etc, have been around for hundreds of years. It would be nice to feel like something I was building would last as long and outlive me. It doesn’t though. Sometimes I think that this is just the nature of software development. Most of the stuff I build is built to solve an immediate business proble…

I think this is by far the most common outcome for work. A chefs product only lasts an hour at most. Most jobs don’t create anything other than a temporary service.

> A chefs product only lasts an hour at most.

A chef's recipe, which is also something the chef creates, may last hundreds of years.

Re: My 20 year career is technical debt or deprecated

#124

I think it's normal. Some systems I've built were quite sticky in the sense that they started as prototypes to be scrapped once we figure out the "real" system architecture, and 8 years later they're still in use and integrated into dozens of business processes, so hard to replace. In general, looking back at old code I wrote it seems my solutions were better when I was more naive / less experienced, as I would often…

I've taken the opposite lesson to you, I now keep everything super simple and am quite conservative on adopting new concepts.

It's because I've so often seen the cycle here of "X is brilliant" and then 2 years later "how we switched off X and saved millions of manhours!".

Re: My 20 year career is technical debt or deprecated

#125
post #32

Earlier quoted context omitted.

My coworker and I were pair programming some Rust today. We were working on a convenience wrapper whose whole purpose is to reduce boilerplate. So, by its nature there's a lot of internal generic traits, thread safety, etc. He knows Rust well but software design not so much. I know software design well but Rust not so much. My experience can be summed up with: let &mut writer = Writer ::writer::new( connection.clone(…

See as someone who knows Rust fairly well. let &mut -- Essential keywords. writer = -- Duh Writer -- Generic types. Important. ::writer::new -- Boilerplate. (connection.clone()).clone; -- Relentless cloning is a big problem. ... .unwrap -- "Consistent names for optional types," is an issue in Rust. Every module has different jargon for Some(x). Rust certainly isn't perfect. The borrow checker creates... awkwardness,…

Asking as someone who has tried learning Rust but didn't get very far, doesn't unwrap essentially mean "this might panic but I don't care to implement error handling here"?

Re: My 20 year career is technical debt or deprecated

#126
post #104

Earlier quoted context omitted.

My coworker and I were pair programming some Rust today. We were working on a convenience wrapper whose whole purpose is to reduce boilerplate. So, by its nature there's a lot of internal generic traits, thread safety, etc. He knows Rust well but software design not so much. I know software design well but Rust not so much. My experience can be summed up with: let &mut writer = Writer ::writer::new( connection.clone(…

I'm sorry but that doesn't look normal. Code smells with all those clone()'s and unwrap(). It allocates a new Writer and then clones it?! "let &mut writer=" isn't right. The new'ed Writer is a struct; why is there a need to get a reference to it? Why is data being clone() and then immediately de-referenced to create a copy of the clone? A normal writer API would look like one of the variations: Writer ::new(&connecti…

You're interpreting my example more literally than I intended. :-) What does it say about the language, when parody is indistinguishable from poorly written code?

The actual code we were working on involved functions returning closures with mutable captures, so the borrow checker was especially persnickety.

Re: My 20 year career is technical debt or deprecated

#127

I’ve worked on the same website for 20+ years. Recently we were informed that the site was being shutdown and we would be reassigned to other teams. On the one hand, as long as they are still paying my exceedingly well, do I really care what I am working on? On the other hand, it is a bit painful seeing 20+ years worth of work being deleted.

I've been doing this for over 30 years. Not only have I seen years of my work deleted, I've also seen large fractions of the rest of it never even used.

> I've also seen large fractions of the rest of it never even used

These were some of my favourite as a young freelancer (long time ago): they'd pay me $90/hr to write stacks and stacks of code with our small parents-garage team and when we finished, we demoed to the client who were very happy. But instead of having to wait for bugs, fixes and addition, we just got a new assignment after learning 'great job, but this is no longer needed'. Now I find it painful, but back then we could just focus on 'new things' like that. It didn't happen often, but there were a few large ones that I remember well.

Re: My 20 year career is technical debt or deprecated

#128
I think looking only at technologies is the wrong approach.

The underlying concepts stay the same. Your own experience is much improved.

Some old technology gets replaced? I celebrate the demise of Flash.

I am not Flash or even a Flash developer. I am a software developer.

I am a bit sad Dlang is not more used? Yes, I am. But I am not a "Dlang" developer.

Tying yourself to some technology seems self limiting.

Re: My 20 year career is technical debt or deprecated

#129

https://phrasegenerator.com/ , one of my first web projects, has survived since 1996 (almost 30 years, wow). It's definitely required a few "tech debt collections" - the original was in ColdFusion, the hot stuff of the time. Then an asp.net / xml phase when that was cool. Now hopefully a boundless future of stability and modernity with python and JavaScript. At least until the world sunsets any pre-4 python versions,…

This is what blows my mind about web stuff. You needed to completely change framework and even languages 3 times in not even 30 years?! Just to keep things maintainable? I don't feel that it's the same for other area's of programming: desktop apps, embedded stuff. Maybe I'm wrong...

Sure it is.

Win16 -> Win32 (only partly backwards compatible) -> .NET WinForms -> WPF -> WinUI 2 -> WinUI 3 (with of course Java and Electron being in the mix too)

... or ...

Motif -> GTK 1 -> 2 -> 3 -> 4 (all backwards incompatible)

... or ...

macOS Classic -> Carbon -> Cocoa/ObjC -> Cocoa/Swift

The browser is actually one of the more stable environments out there with a lot of the churn being on the server side and optional JS frameworks as people oscillate around trying to figure out the best way to wrangle a document renderer into being an app platform.

Re: My 20 year career is technical debt or deprecated

#130
post #32

Earlier quoted context omitted.

See as someone who knows Rust fairly well. let &mut -- Essential keywords. writer = -- Duh Writer -- Generic types. Important. ::writer::new -- Boilerplate. (connection.clone()).clone; -- Relentless cloning is a big problem. ... .unwrap -- "Consistent names for optional types," is an issue in Rust. Every module has different jargon for Some(x). Rust certainly isn't perfect. The borrow checker creates... awkwardness,…

Asking as someone who has tried learning Rust but didn't get very far, doesn't unwrap essentially mean "this might panic but I don't care to implement error handling here"?

Yes, it would panic. Typically you handle the Result rather than unwrap directly.
Post reply on HN