I think Microsoft coming out with XAML/WPF created too much complexity for most of the developers that were working with WinForms. Although the code had better separation from the interface, it also took quite a bit more effort to get an application up and running quickly. They took the "R" out of RAD, and then kind of put both WinForms and WPF on life support, while continuing to tout cross-platform on .NET Core without a first-party GUI platform. Now it just looks like Azure was always going to be the solution, to tie users into a platform they don't fully control.
It always seemed to me that a lack of gentle “WPF for Windows Forms developers” documentation was more of a problem here than WPF itself, which no more enforces the separation of presentation and execution than Windows Forms does, it just gives you more and higher-level options for how code interacts with the layout.
I ran into all of this with the first few years of my career. Even after years, MAUI has struggled to gain traction and Avalonia has grown and is far more the de-facto choice for .NET cross-platform GUI. Both work collegues and myself have ran into XAML/WPF Styling horrors where it's all one giant aggregation/inheritance nightmare generated by Blend (and done by someone that didn't quite know what they were doing)
In the mid-2000's, I built a lot of applications replacing Access. I always met with the actual users of the system, and made sure they understood that once I took over development, they weren't going to be able to build out their own forms anymore. A few clients were turned away, but most could live with paying for myself to make any future edits, so that they could concentrate on the business objective rather than coding in Access. I never really had the same success with replacing Excel, except for a few systems where it needed to be true multi-user.
I worked with a physician's office in 2006, and the lead physician had cobbled together a system for patient tracking using Visual FoxPro. It was a monstrosity, and using it over a network drive gave all sorts of file locks and issues with multiple people changing the same record (usually the physician and front of house staff when checking the patient out).
I finally got the physician to switch to a proper client/server architecture using .NET WinForms and ASP.NET RPC calls. All issues went away, and I was even able to allow staff members to edit the interface to set what mattered to them most at the top of the application, by building the lab testing form in XML so they could move the X/Y coordinates to where they wanted them. It wasn't even a feature I had thought of, just a physician looking through the technology and figuring out how it worked (luckily the business and security logic were on the server, so a bad actor could only have destroyed their own local copy of the app).
When networked PCs and rapid application development platforms became popular there was a "Cambrian explosion" of custom electronic health record and practice management applications built by doctor hackers who knew exactly what they wanted, and had just barely enough technical skill to sort of make it partially work. Those have gradually died off because commercial products kept improving, and the cost of complying with security and interoperability requirements kept escalating. But I predict that the cycle will now repeat because the combination of AI coding tools plus headless EHR platforms (built in security, storage, and APIs) has made it easier to build a custom EHR that actually works.
Yes, I am seeing exactly this at my own workplace. Two things have happened close together: low code and LLMs. I don't personally like using low code solutions (such as PowerBI and Power Automate), but for many knowledge workers this is all they have. Now you can just ask your favorite LLM how to do stuff and it can help you. It's not exactly vibe coding because these people really understand what they have and what they want, they just don't know the syntax to get there.
Low code solution have a fairly steep learning curve, and when someone got into it in anger, the complex electrical diagrams that result are even more impenetrable than spaghetti code.
In a large enterprise environment I have seen business users getting burned by vibe coding already, as they often don't even read the comments and warnings that the LLM gives them. But I think it is inevitable and should enable software to automate the millions of manual processes that are too bespoke to pay an IT team to automate.
For a solo entrepreneur, it should enable to get so much done before having to hire the first employee. Hence less risk to go bust, easier to take risks, pure value added.
DBase/Fox Pro were born when local networks weren't common, it excelled as a single-user batteries-included IDE. Now that you mention this, I understand why it couldn't work these days as it is.
I also think it won't be that hard to make it multiuser, that's a long-ago solved problem these days.
It wasn’t that hard to make it multiuser back on the day, either. But as OP discovered, FoxPro also made it very easy to write shit multiuser code. Pessimistic/optimistic locking, etc.? It was in there, but you had to use it.
One fear I saw manifest in a job was before AI, and an associate was doing a screen for a request in dot net and it let the user read the record, edit the record and write the record. Last person to write the record won of course.
At this tier of small time company IT, I am hoping that AI will actually improve the quality of code, because people who write racey nolock code that occasionally "drops a few records" are probably hopefully not posting their code to forums or alternatively getting roasted to pieces if they do so its my hope they are only represented in training data as "what not to do."
Just antidotal but I don't know how many times I've had to help developers fix their vibe coded code to account for concurrency problems. LLMs don't seem to be very good at picking up on this today unless you call it out.
I fixed a lot of Windows machines, especially partition issues, with Knoppix up until around 2014. I used to also use the wireless tools to detect rogue access points in hotels where my employer was providing internet access. Those were some good times, and helped me learn quite a bit about networking and security in general.
I'm definitely not arguing that SUVs and trucks are killing people, and as someone that drives a Ford F-150, I wouldn't mind having to be licensed for a commercial drivers license (although would like that to be based on skill, rather than charging more for that license).
I am constantly having to dodge these e-bikes in the streets, mostly driven by children/teenagers, who do not follow traffic laws (I'm in upstate NY). They don't even follow standard bicycle traffic laws. Driving in the city, I regularly have e-bikes coming at me against traffic in my lane. I would be absolutely devastated if I hit someone with my truck, and I honestly usually drive lower than the speed limit in these areas. It's even worse in the suburbs, because these people don't have the same survival instincts when riding these e-bikes as those in higher traffic areas. It's constantly on my mind that if I hit one of these children, not only will my conscious be filled with guilt, but I will probably be charged with manslaughter charges.
Upstate NY is starting to create laws and restrictions around e-bikes, but that is not stopping parents from being uninvolved. In the cities, there are rentable e-bikes being used everywhere, and it only requires the ability to pay to use it. I'm all for making transportation easier for those of lower income, or that prefer to use something that doesn't spew emissions like a gas-powered vehicle, but beyond being able to pay for the e-bike there is little being done to regulate or enforce how they are used.
I'm glad I kept using an Audioscrobbler since 2008. Right now I have it hooked up to Spotify, but I've used one with foobar2000 for non-streaming, and have found other players to have the functionality for the most part (at least the ones I've made use of). I even had an extension for Chrome and Firefox that would send the data from YouTube's website when I used to listen to music on there.
Happy they are independent and allowing access to their API. Seems like it may be time to work on a personal project to track the data in a way that matters to me, rather than just what you normally get built in.
I've worked with mostly PHP from this era, or at least developers that are from this era. The code still runs fine, and not having things like return types don't make the code less able to run (just not as easy to catch bugs).
I haven't used Zed, but can you choose the PHP version, or point to a PHP executable for warnings/errors? I know in VS Code, you point to the PHP executable for the version you are using, to catch errors. I haven't created a new PHP project in quite some time, but I did work on many older PHP projects, and never had this issue with VS Code. I suspect even if you don't go about it this way, there has to be configuration to specify what is and isn't an error vs. warning.
I can't remember which album it was, perhaps "With Teeth," or the mentioned "Ghosts I-IV," when Trent Reznor offered the GarageBand files for the album. I thought it was amazing for an artist to offer their work up for people to remix and view, as long as they weren't profiting off of it. I've done the same with my artwork over the years, hoping that someone would come along and collab or "remix" my art into something new and interesting. I don't do promotion, so it hasn't occurred, but the idea was inspired by NIN and I think it's an amazing idea that can really build a community.
As an early teen when Broken came out, and I happened to be connected to some people into the 90's emerging industrial scene (not to take away from earlier scenes), NIN has always been a huge inspiration and got me into the grittier side of metal music.
> I've done the same with my artwork over the years, hoping that someone would come along and collab or "remix" my art into something new and interesting. I don't do promotion, so it hasn't occurred, but the idea was inspired by NIN and I think it's an amazing idea that can really build a community.
You know, right this second I am listening to a MIDI recreation of the soundtrack to a very obscure German Atari ST puzzle game from '84. Something somebody recreated where I would be surprised if more than 500 people in the world ever heard the original.
Even though you might never learn of it, given the vast number of people out there, it is entirely likely that what you did already touched somebody out there. You do not need to have built a community in order to have done something of significance.
Sorry to get back to you so long after you posted, but I really appreciate your comment! Also a huge fan of Atari computers (I learned my first programming on my dad's Atari 130XE 8-bit around 1990, quite a while after it went out of popularity).
Since most won't actually deal with fintech (I don't know the stats on HN, but I'm talking devs as one industry), your first "a" example might actually be better than your first "b" example, depending on the complexity of the software. In lots (probably most) of industries, having a good codebase would mean architecture decisions were solid, but the domain/service layer is bad. Maybe my experiences don't match most of the HN crowd, but usually I get stuck with very detailed domain/service rules, but the architecture is a problem where too much memory or CPU is being used, just to abstract away the actual rules of the application (the purpose). Usually when I've been brought in to rebuild an application, the client is fine with the results, but they are upset over performance and/or cost to run the application. For anything of actual complexity, it's usually the supporting code that is the biggest failure, because complex apps usually have decent requirements. Now, if the requirements were bad, and the architecture was bad, AND the domain/service layer is bad, I don't know if there's anything to fix that.
I mean, hasn't it learned from reading other's code? I don't think it can be any better than the common patterns and practices that it has been trained on. Some outlier of amazing code is probably not going to make much of a difference, unless I am completely misunderstanding LLMs (which I very well may be, and would gladly take any criticism on my take here).
Yes, but, that’s a low bar, no? I mean, when they first started talking about AI, were you envisioning a mediocre AI that is just average, or were you imagining an expert?
reply