The problem is it's hard to hold people accountable for their actions because the liberal court system doesn't allow for it. As a fellow sigma, I don't let anyone walk all over me anymore, learned that the hard way after my wife cheated on me and took the kids. I once bought a shirt from Facebook marketplace and it had a rip in it, I sued the seller for 10 million USD in damages, didn't win the court case. When I tried to get the money back he refused to give me it in Monero. This country is screwed.
Here's the core issue. The developer didn't know his rights, and made a mistake. I'm not criticizing, people make a career dealing with crap like this. But if you want to make a business out of something, it's worth it to do some research or talk to a lawyer. I believe the MIT license has its place but, from what the OP said, this isn't it.
I did not want to make a business out of this library. I don’t want money for it.
All I would’ve wanted is that the people at Apple would’ve given me a heads up beforehand, so I would’ve been prepared for it and not caught on surprise. And a that they do a version upgrade when I release a new bugfix release.
This is not a license issue. I was well aware of the consequences when I chose the MIT license. This is not about money.
You specifically said you chose the MIT license because you wanted to use it in commercial projects. That's business, no matter how small. As the owner of the property, you could have used any and all licenses available to you. Also, if you wanted to require users of your code to attribute or notify you, you could have. If you want to be disappointed in their behavior that's perfectly fine, too. Corporations usually disappoint if you have any altruistic expectations of them.
In this regard you are right. I could’ve chosen AGPL and use it in my commercial project nonetheless. I wasn’t aware of that at the time, and that was a mistake.
That said, I don’t expect all users to notify me. But if a company like Apple, with millions of users, exposes me to even a fraction of its users - then yes. I expect a mail beforehand. I did not sign up for this.
Agreed. Free licenses should NEVER be applied to Apple-specific tools. They don't want to help the FOSS community, so we shouldn't help them back. Make them pay for it, or make them make their own version.
You can use your library for commercial projects that you have. Just have dual license that requires payment for commercial use or something similar. You don't have to pay yourself
I think that's why Github suggests MIT as default. Unaware people will just put that. Most open source people just code things they want without thinking much on other aspects. We really need some sort of enforcement to stop companies banking on voluntary work done for the community.
It's probably a single dev that made the decision, then moves onto something else. They (probably?) don't have the ability to just raise a recurring PO etc to easily pay you and don't care enough to worth through the paperwork.
If you had a paid licencing model they may have done it, or just found another lib/ wrote their own.
I'm sure there's nothing wrong with the program at all =)
Modern webapp deployment approach is typically to have an automated continuous build and deployment pipeline triggered from source control, which deploys into a staging environment for testing, and then promotes the same precise tested artifacts to production. Probably all in the cloud too.
Compared to that, manually FTPing the files up to the server seems ridiculously antiquated, to the extent that newbies in the biz can't even believe we ever did it that way. But it's genuinely what we were all doing not so long ago.
Like anything else, it's good to know how to do it in many different ways, it may help you down the line.
In production in an oddball environment, I have a python script to ftp transfer to a black box with only ftp exposed as an option.
Another system rebuilds nightly only if code changes, publishing to a QC location. QC gives it a quick review (we are talking website here, QC is "text looks good and nothing looks weird"), clicks a button to approve, and it gets published the following night.
I've had hardware (again, black box system) where I was able to leverage git because it was the only command exposed. Aka, the command they forgot to lock down and are using to update their device. Their intent was to sneakernet a thumb drive over to it for updates, I believe in sneaker longevity and wanted to work around that.
So you should know how to navigate your way around in FTP, it's a good thing! But I'd also recommend learning about all the other ways as well, it can help in the future.
(This comment brought to you by "I now feel older for having written it", and "I swear I'm only in my fourties,")
Think of this like saying using a scythe to mow your lawn is antiquated. If your lawn is tiny then it doesn't really matter. But we're talking about massive "enterprise scale" lawns lol. You're gonna want something you can drive.
Shitty companies did it like that back then - and shitty companies still don't properly utilize what easy tools they have available for controlled deployment nowayads. So nothing really changed, just that the amount of people (and with that, amount of morons) skyrocketed.
I had automated builds out of CVS with deployment to staging, and option to deploy to production after tests over 15 years ago.
Yup. The libraries underneath will still allow nonsense at runtime, though, and it will now be harder to see, so it's a partial solution as done in standard practice.
An all-TypeScript stack, if you could pull it off, would be the way to go.
Most libraries have TypeScript types these days, either bundled directly with the library (common with newer libraries), or as part of the DefinitelyTyped project.
DefinitelyTyped is the exact kind of thing I'm talking about. You put TypeScript definitions over things, but under the hood it's still JavaScript and can fail in JavaScript ways.
It can’t fail in javascript ways that require specific sequences of code to be written, if those sequences of code aren’t in the range of output of the Typescript compiler.
If there was an easy way to use rust or something on webassemly and use that instead of JS. I'd be so happy, but I can't find how to do it without npm.
Doesn't look like it, unfortunately. But it's planned. Kotlin can also compile to JavaScript with DOM manipulation. I've not tried either scenario, myself.
Rust would probably be the wrong tool here. This is scripting, so pointers like Rust is built around aren't really meaningful. Kotlin or Python or something are more on the ticket.
Websites have grown beyond mere scripting.
Rust is about more than just nicer pointers, it has a very expressive type system that enables correctness rarely seen outside FP.
You can use WebAssembly today, but you still need some JS interop for a bunch of browser features (like DOM manipulation). Your core logic can be in WebAssembly though. C# has Blazor, and I wouldn't be surprised if there's some Rust WebAssembly projects. I seem to recall that there's a reimplementation of Flash player that's built in Rust and compiles to WebAssembly.
Yeah, ideally TypeScript would be natively supported. Or maybe just Python, which is sort-of strictly typed, and definitely won't do "wat". Alas, it's not the world we live in, and browsers take JavaScript.
Python supports type hints, but you need to use a type checker like Pyre or Pyright to actually check them. Python itself doesn't do anything with the type hints.
The libraries underneath will still allow nonsense at runtime
Only if you use a badly written library. Most libraries have types provided by DefinitelyTyped. Those who don’t are (in my experience) so tiny that you probably aren’t using them; or, if you really wanted, can check yourself.
In the end, if you encounter a bug, it’ still 99% of the time not a library’s fault, even if it’s written in plain JS.
Like I said to the other person, those are just types over top of JavaScript that can still fail if/when coercion happens under the hood.
I don't even know how to search it now, but a specific example came up on here of a time when JavaScript libraries will cause problems, and problems you can't even see very well if you're expecting it to act strictly-typed.
By that logic what we really need is a modernization of Ada, where there are no compiler warnings and anything that would generate one in another language is instead a compiler error, everything is strongly typed, etc, etc.
If you aren't familiar with Ada, just imagine Pascal went to military school.
That analogy was chosen for a reason. Ada was originally developed by DOD committee and a French programming team to be a programming language for Defense projects between 1977 and 1983 that they were still using at least into the early 2000s. It's based on Pascal.
It was intended for applications where reliability was the highest priority (above things like performance or ease of use) and one of the consequences of that is that there are no warnings - only compiler errors, and a lot of common bad practices that will be allowed to fly or maybe at worst generate a warning in other languages will themselves generate compiler errors. Do it right or don't bother trying. No implicit typecasting, even something like 1 + 0.5 where it's obvious what is intended is a compiler error because you are trying to add an integer to a real without explicitly converting either - you're in extremely strongly-typed country here.
Libraries are split across two files, one is essentially the interfaces for the library and the other is it's implementation (not that weird, and not that different than C/C++ header files though the code looks closer to Pascal interface and implementation sections put in separate files). The intent at the time being that different teams or different subcontractors might be building each module and by establishing a fixed interface up front and spelling out in great detail in documentation what each piece of that interface is supposed to do the actual implementation could be done separately and hypothetically have a predictable result.
Make your MIT-licensed library big enough that the corpos use it, then switch it to AGPL just before you add a really important and tricky feature they've been waiting for.
Oh that's interesting. I started poking around with a Gameboy emulator guide implemented in Python that intended to emulate a Z80. Got any good resource recommendation in case I decide to pick this back up and inevitably get stuck?
When I was young, we didn't have hex codes, we only had 1 and 0s. One time we where all out of 1s, and I had to code a whole Database system with only 0s!
If you want some modern day fun with this, try the Zachtronics programming games; TIS-100, Shenzhen I/O, and Exapunks.
Or, my personal favorite I only discovered somewhat recently, try Turing Complete. You start by designing all your logic gates from just a negate gate IIRC. You eventually build up an ALU and everything else you need and then create your own computer. Then you define your own assembly language and have to write programs in your assembly language that run on the computer you've designed to complete different tasks. It's a highly underrated game, although it takes a certain type of person to enjoy.
I would say it's very polished. It does everything you'd expect and has some nice QoL features. There was work on a big update that'd improve performance and things, but the last information about that was from Aug of last year as far as I can tell. That's not a big deal though. The game works fine without it.
Another interesting low-level interpreter/emulated system to look into for anyone else trying to get started with this type of thing is the CHIP-8! It's a pretty basic 8/16-bit instruction set (there are 35 opcodes, the instructions themselves are mostly simple) and there are tons of detailed guides on making one and writing roms for them.
Eh, sometimes I apply to jobs I don't really care too much about, just to go through the process and see what the market is like without any stress. I can recommend. And once that even turned out to be a good thing and I stayed, who knows.
Before anyone complains, the companies put out job descriptions they're not really serious about either, sometimes to just meet candidates they could maybe use elsewhere, sometimes just to make themselves look good towards their competitors. Play that game, get your time wasted for my "training", I don't feel to t bad about that.
I'm absolutely a dog person, still I wouldn't allow dogs in my bedroom, let alone on the bed. While the first is just a bit bothersome, I think the second one to be pretty icky.
For sure! Went to visit my cousin and she doesn't allow her puppy on her bed... well guess who had company sleeping all week? We snugle out every day! You crazy if you thin I'm gona lose the opotunity to sleep with a dog!
I hate dogs and would hate to be in an Air BNB where there was a dog about. But fuck yes, Kevin, if you're lonely you still deserve to be treated well. Let's go to bed, Kevin.
As a Chicago resident so do I. Just listen for the screams and shot reverberation off the nearby buildings. It doesn't take much practice to hone it down within 50yards or so. Don't need no app.
I've been to Chicago once (visiting a family member), it's absolutely crazy. I could never even imagine living like that. Never before in my life have I been genuinely scared that if I left the house at night, I wouldn't come back alive.
I've also been to Chicago once (going to an Anime con up there; was a meet up for AMV creators worldwide, and while I wasn't one my brother was), but it was a chill and nice experience for me. The last time I heard gunshots was actually this past new years, when my neighbor fired off like 12-15 shots during fireworks (GA, not in Atlanta but not too far either).
It's pretty normal during the day, but at night, once you hear gunshots a few blocks away, I would really avoid going out. I've never seen something like this before.
Statistically no, it's not very dangerous as far as big cities go. Its homicide rate is ranked 30-something in the USA. Pretty much every city has "bad areas", though.
Not an app, but here in Germany we have a public warning system that broadcasts an alert to all phones in an area in case of catastrophic events. Happened twice in my city since I moved here two years ago. Once for a mass shooting, and once for an accident at a chemical plant.
It's called Brook's Law. It takes a lot of time and effort getting people up to speed, and that takes experienced devs away from coding. You also have to get them credentialed, teach them the tools, need extra code reviews/testing/bugfixes while they learn the quirks and pitfalls of the code base, etc. In the long term you'll be able to get more done, but it comes at the cost of short term agility.
Maybe "credentialed" wasn't the right word. I was thinking of software licenses and access to third party tools and systems. Probably not as big a mess in game dev as it is in government.
You mean you didn't enjoy sitting there when your thumb up your ass while you wait 6 months for a background check and another 6 months to get your GFE? Crazy!
Yeah, it happens everywhere, all the time. And the main cause of it is, surprise surprise, people who have no technical understanding of the subject matter.
If you have a troubled project, and you add more people, you have a bigger troubled project.
It’s a common trap for project managers … and in fact some pretty high brow projects blew up because of this.
When you are called in front of the board, and they say:
“Hey, your project is late, we get it, it’s not your fault, but we have to deliver on the 1st of the month. - and so we’re giving you our 10 best men to get it done”
I can tell you, it takes a certain amount of testicular fortitude to say “That won’t work”. More than I had at the time , in fact.
My anecdote isn't quite the same since it deals with something a lot simpler, and lower stakes than stuff like this.
used to assemble bicycles for a sporting goods chain, and had to travel to a nearby city to build theirs because nobody there knew how. I had two days to get 300 done.
I got there and start, and about two hours in the store manager comes over and tells me he's pulling 2 of their operations employees to help and learn how to build. "they're the strongest guys we have so they should have no problem tossing these bikes around"
I straight up told him I have no time at all to train them on how to build and do the safety inspections correctly, not to mention the fact that I will still have to personally inspect every single one they put together anyway, so if they want to give me help I'll take it but they're on trash duty. Remove all the packaging, put the bike next to my work area, toss the trash. I will build. If there's extra time at the end I will be happy to instruct everyone in the store how it's done. Or even put me on the schedule for next week to do it.
Dude got pissy and wanted me to train people first, so I just called the district manager while he was talking and had him tell the guy to do what I said because I'm here at corporates request and if I don't get the bikes finished in time then "it will look bad on your store's next visit if the bikes are still boxed up"
In the end I got all of them done with about 3 hours to spare, so I spent the rest of the time teaching a couple people how to do it.
More like 12-14 hours, and with the experience I had I was able to build most in about 6-7 minutes.
There's downsides to speed building like that, because whoever has to inspect it when it gets sold has to spend a lot longer fixing minor problems.
If I were building at my own store, each bike took about 20 minutes because I made sure everything was as close to "ready to ride" as possible.
Nowadays I bulk build for many companies. They don't give a shit about quality but I spent years making sure my bikes were perfect, so I still like to make them good to ride out the door.
my quickest bike was one particularly well put together model. 3 minutes per bike and it was good enough that I'd ride one without tools to the nearest store a few miles away.
Big teams are faster on straightaways. Small teams go through the corners better. Upgrading from a go-kart to a dragster may just send your project 200mph into a wall. Sometimes a go-kart is really what you need.
Currently in a project, where for strategic and unrelated reasons, we ended up with 4 new juniors and had to hand off one senior. In a team that consisted of merely 3 people before.
So, it's just me and another guy having to constantly juggle these juniors to push them back into the right direction and review whatever code they ended up with.
It's so frustrating, because while I'll gladly pass on my knowledge, the project has basically ground to a halt.
There's so many tasks me and the other senior would like to just quickly tackle. Which should just take a few days, no big deal. Oh no, I rarely get a day's worth of work done in two weeks. The rest is just looking after the juniors, who cannot tackle many of the actual crucial tasks.
And it's not even like the juniors are doing a bad job. Frankly, they're doing amazingly for how little support we can give them. But that doesn't stop the project from falling apart.
Fair, though I guess my interpretation was that void* is kind of like a black hole in that anything can fall into it in an unsettling way that loses information about what it was?
sh.itjust.works
Top