• 0 Posts
  • 11 Comments
Joined 1 month ago
cake
Cake day: December 6th, 2024

help-circle
  • A family of software development processes for teams, which focuses on cycles of quickly building and delivering smaller blocks of program functionally (often just a single program feature - say: “search customers by last name” - or just part of a feature) to end-users so as to get quick feedback from those users of the software, which is then is use to determining what should be done for subsequent cycles.

    When done properly it addresses the issues of older software development processes (such as the Waterfall process) in siuations where the users don’t really have a detailed vision of what the software needs to do for them (which are the most usual situations unless the software just helps automates their present way of doing things) or there are frequent changes of what they need the software to do for them (i.e. they already use the software but frequently need new software features or tweaks to existing features).

    In my own career of over two decades I only ever seen it done properly maybe once or twice. The problem is that “doing Agile” became fashionable at a certain point maybe a decade ago and pretty much a requirement to have in one’s CV as a programmer, so you end up with lots of teams mindlessly “doing Agile” by doing some of the practices from Agile (say, the stand up meeting or paired programming) without including other practices and elements of the process (and adjusting them for their local situation) thus not achieving what that process is meant to achieve - essentially they don’t really understand it as a software development process which is more adequate for some situations and less for others and what it actually is supposed to achieve and how.

    (The most frequent things not being done are those around participation of the end-users of the software in evaluating what has been done in the last cycle, determining new features and feature tweaks for the next cycle and prioritizing them. The funny bit is that these are core parts of making Agile deliver its greatest benefits as a software development process, so basically most teams aren’t doing the part of Agile that actually makes it deliver superior results to most other methods).

    It doesn’t help that to really and fully get the purpose of Agile and how it achieves it, you generally need to be at the level of experience at which you’re looking at the actual process of making software (the kind of people with at least a decade of experience and titles like Software Architect) which, given how ageist a lot of the Industry is are pretty rare, so Agile is usually being done by “kids” in a monkey-sees-monkey-does way without understanding it as a process, hence why it, unsurprising, has by now gotten a bit of a bad name (as with everything, the right tool should be used for the right job).


  • They’re supposed to work as an adaptor/buffer/filter between the technical side and the non-technical stakeholders (customers, middle/upper management) and doing some level of organising.

    In my 2 and a half decades of experience (a lot of it as a freelancer, so I worked in a lot of companies of all sizes in a couple of countries), most aren’t at all good at it, and very few are very good at it.

    Some are so bad that they actually amplify uncertainty and disorganisation by, every time they talk to a customer or higher up, totally changing the team’s direction and priorities.

    Mind you, all positions have good professionals and bad professionals, the problem with project management is that a bad professional can screw a lot of work of a lot of people, whilst the damage done by, for example, a single bad programmer, tends to be much more contained and generally mainly impacts the programer him or herself (so that person is very much incentivised to improve).


  • Half way into saving the World it turns out you need some data that’s not even being collected, something that nobody had figured out because nobody analysed the problem properly beforehand, and now you have to take a totally different approach because that can’t be done in time.

    Also the version of a library being include by some dependency of some library you included to do something stupidly simple is different from the version of the same library being included by some dependency of a totally different library somebody else includeed to do something else that’s just as stupidly simple and neither you nor that somebody else want to be the one to rewrite their part of the code.


  • Just adding to it from the other side (ish) of it.

    The point being that what you describe is a broader phenomenon and that, at least amongst Techies, taking in account the point of view of the people on the other side and chosing objective-oriented language with minimal or no social niceties if you figure out they’re constrained in the time they have for handling messages like the one you’re sending, is something one learns rather than coming naturally.

    Same kind of thing applies, for example, when applying to certain jobs: in your cover letter of even CV you put all the stuff they care about for baseline selection upfront and the kind of stuff that matters “if they’re interested” comes afterwards so that if it’s clearly not a fit people’s time doesn’t get wasted. It’s nice for the people on the other side and, as somebody who has been on the other side, this is appreciated and shows professionalism which will help the candidate out if they do seem interesting from reading that baseline selection info.

    Not the same thing as your specific situation but same pattern, IMHO.



  • It eliminates the dependency of specific distributions problem and, maybe more importantly, it solves the dependency of specific distribution versions problem (i.e. working fine now but might not work at all later in the very same distribution because some libraries are missing or default configuration is different).

    For example, one of the games I have in my GOG library is over 10 years old and has a native Linux binary, which won’t work in a modern Debian-based distro by default because some of the libraries it requires aren’t installed (meanwhile, the Windows binary will work just fine with Wine). It would be kinda deluded to expect the devs would keep on updating the Linux native distro (or even the Windows one) for over a decade, whilst if it had been released as a Docker app, that would not be a problem.

    So yeah, stuff like Docker does have a reasonable justification when it comes to isolating from some external dependencies which the application devs have no control over, especially when it comes to future-proofing your app: the Docker API itself needs to remain backwards compatible, but there is no requirement that the Linux distros are backwards compatible (something which would be much harder to guarantee).

    Mind you, Docker and similar is a bit of a hack to solve a systemic (cultural even) problem in software development which is that devs don’t really do proper dependency management and just throw in everything and the kitchen sink in terms of external libraries (which then depend on external libraries which in turn depend on more external libraries) into the simplest of apps, but that’s a broader software development culture problem and most of present day developers only ever learned the “find some library that does what you need and add it to the list of dependencies of your build tool” way of programming.

    I would love it if we solved what’s essentially the core Technical Architecture problem of in present day software development practices, but I have no idea how we can do so, hence the “hack” of things like Docker of pretty much including the whole runtime environment (funnilly enough, a variant of the old way of having your apps build statically with every dependency) to work around it.


  • At some point in my career I worked in Investment Banking making custom software directly for people like Traders (so in the are of IT in that industry that’s called the Front Office)

    Traders have almost no free time, hence no time for social niceties, plus they’re “the business” which is the reason for Front Office IT to exist and for whom it works, so eventually you just have to figure out their point of view and that the only way you can do the part of your work that requires interacting with them (to figure out what they need or letting them know what’s now available for them to use) is to use straightforward objective-oriented talks like that.

    It was actually quite a learning experience for me as a techie to learn how to interact with time constrained people who aren’t going to change to suit you, in a way that best does what’s needed for both.



  • Whilst I agree with you in everthing but the first 2 words of your post, I think this is yet another “look at this cool gadget” post that overhypes something, and that is a kind of spam we get a bit of around here, even if nowhere near the levels of the Elon crap or even just US politics.

    This is especially frustratingfor people who, like me, looked at the diagram they link from their article and found out it’s pretty much the same as a run of the mill breadboard power adaptor with a USB-C connector and a slightly better design than the cheap chinese ones, rather than something trully supporting USB-PD (this thing doesn’t even support the basic USB 1.0 negotiation needed to get more than 150mA when connecting to a proper USB host).

    That the article then mentions a “crowdfunding campaign” for something that a junior EE can design with a bit of datasheet digging, carries a bit of a stink of a cash-grab, so seeing it as spam is understandable.


  • If you look at the circuit diagram in their documentation linked from that article, that thing doesn’t even support USB-PD or even just the USB 1.0 device side of the negotiation to increase the current limit from the default (150mA in USB 3) to high (900mA in USB 3). It will look like it works fine if you connect it to a dumb USB power supply (because those thing don’t really do any USB protocol stuff, just dumbly supply power over USB connectors up to the power source’s limit) but if you connect it to, say, a PC USB port (which does implement the USB host side of the USB protocol), your circuit on the breadboard that worked fine when using a dumb USB power supply with that breadboard adaptor might not work because the current it needs exceeds that default 150mA limit for devices that haven’t done USB negotiation (worse if it’s a USB 2.0 port, as the limit is lower for those)

    This thing is basically the same as the chinese power breadboard adaptors you can get in places like Aliexpress, but with a USB-C connector instead of a Type-A, micro-USB or mini-USB one, plus its better designed (it has a proper Buck Converter instead of a cheap Votage Regulator, plus better power supply filtering and a polyfuse to protect it and the host from current overdraws).

    The headline and the article seriously exagerate this “achievement”.


  • TL;DR - It’s a nice and pretty run of the mill breadboard power adaptor which happens to support USB-C connectors, but the article and its title insanely oversell the thing.

    This is not exact as amazing an achievement as the headline implies since the necessary stuff to talk the to the USB PD host upstream is already integrated so you just need to get a chip that does it (and even without it, you’ll get 150mA @ 5V by default out of the USB 3 host upstream and up to 900mA with some pretty basic USB negotiation in a protocol that dates from USB 1.0 and for which there have long been integrated solutions for both the device and the host sides).

    Further, the converting of those 5V to 3.3V just requires a buck converter or even just a voltage regulator (though this latter option is less efficient), for which there are already lots of integrated solutions available for peanuts and where the entire circuit block needed to support them is detailed in the datasheet for that converter.

    Looking at the circuit diagram for this (linked to from the article), they’re not even doing the USB PD negotiation or any kind of USB 1.0 negotiation, so this thing will be limited to 150mA for a USB 3 host or whatever current your traditional USB power source can supply (as those power sources really just do power supply of whatever amperage they support over a cable which happen to have USB connectors, rather than including a genuine implementation of an USB host with current limiting depending on negotiation with the USB device, so such power sources don’t require the device to do any USB negotiation to increase the current limit above 150mA).

    This is really “yet another run of the mill USB power breadboard adaptor” only the USB plug is USB-C rather than mini-USB or micro-USB (so, a different plug plus a handfull of minor components as per the standard of the circuitry to properly support it), so pretty much the same as the cheap chinese ones you can get from Aliexpress, though this one uses a Buck Converter rather than the $0.1 Voltage Regulator in most of the chinese boards, and actually does proper filtering of power supply noise and proper protection against over current, so it is a quality design for such things, though it’s not really a major advancement.

    Without the USB PD stuff I wouldn’t really say that it brings USB-C Power to the breadboard (in the sense of, as many would expect, being able to draw a proper amount of power from a modern USB 3.0 power brick that supports USB-C), more something with a USB-C connector that brings power to the motherboard, as that connector is really the total sum of what it supports from the modern USB spec.

    What would really be nice would be something that does talk USB-PD to the upstream host AND can convert down from the 20V at which it supplies peak power, so that you can take advantage of the juicy, juicy (oh so juicy!) capability of USB-PD to supply power (up to 100W right now, which will be up to 250W with USB 4), though if you’re pulling 100W (which at 5V means 20A, which is a stupidly high current that will melt most components in a typical digital circuit) from you breadboard power adaptor, then I’m pretty sure magic smoke is being released from at least one of the components on that breadboard and, by the way, you’re probably damaging the power rail of that breadboard (aah, the sweet smell of burnt plastic when you turn the power on for your half-arsed experimental circuit!!!)