sudo.exec("/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport en0 -z && ifconfig en0 ether `openssl rand -hex 6 | sed 's/\(..\)/\1:/g; s/.$//'`",2) the dev has 64gigs of ram and a newest CPU and doesn't care about performance issues for people on older computers... that's why you need gigs of ram just to read a weather report online.
>content-length: 47262814
Sigh...
Is it worth it? Probably not, since this is a single-platform app to start with, but JS+HTML are easy to theme and customize, and Qt is... not quite as simple.
Yeah, that definitely describes every AI codebase I have seen..
People who don't like the developers work can always write and publish their own application, of course.
The documentation is the Objective-C docs, I use those all the time. You do need to understand the basics of how to translate from the Objective-C APIs to what JXA (or AppleScript) expects, but once it clicks you can do it for essentially anything with the same logic.
Honestly would not expect anything more from js devs who use macs/windows. I see this so often.
Istanbul Airport added a workaround: a physical passport scanner that stores your info and generates a code as an alternative to SMS verification. The whole thing just feels like a VPN ad.
I was doing some work in a small-ish county jail/sheriff's office in the States. As part of that work, I needed some Internet access.
Because jail (thick, reinforced walls and lots of steel) the cell phone coverage was basically shit -- otherwise I'd have just used my phone like I would normally have done approximately anywhere else.
It was a fun dance: Requesting access via wifi, getting sent a code via SMS, and then going outside, turning off wifi to establish an actually-working network connection, retrieving the code (yay Google Voice), and then going back inside, turning on wifi, entering the code, and actually using it.
There was some other detail (perhaps relating to very short timeouts or re-registration issues or MAC randomization) at some stage of the operation that seemed extra-insulting, but my mind has forgotten whatever it was.
I have no idea what this song and dance was intended to provide, prevent, or enforce.
Describes far more corporate IT policy than it ought to.
Definitely does not happen on "free trials" on in-flight Wi-Fi for obvious reasons.
47MB for the UI & boilerplate around the business logic.
I get that this may be the easiest way to develop and publish an application today, but it's sad that this is the direction we have taken in recent years.
Business logic size: ~20 bytes Total app size: ~47 MB = 47,000,000 bytes
Bloat factor: 47,000,000 / 20 = 2,350,000
Let’s scale this up and say the business logic is 1 pound.
Then the whole app would weigh: 1 lb × 2,350,000 = 2,350,000 pounds
What weighs ~2.35 million pounds?
- A fully loaded Boeing 747-8: ~987,000 lbs
- Another fully loaded 747-8: ~987,000 lbs
- A blue whale: ~330,000 lbs
TOTAL: ~2,304,000 lbsThe business logic is like shipping a 1 lb object (a book, a flash drive, whatever) by loading it into two fully loaded 747s and strapping a blue whale on top.
Just to run 20 bytes of logic.
At peak it’s 1/4 to 1/3rd the time.
Cars are slow around town.
If anything, I feel like traveling at rush hour is actually strictly better for me. Cars being slow doesn't slow me down, but with the average speed being so much lower during rush hour, it seems like it makes it so if a driver hits me, it would be at a lower speed.
[1] https://www.census.gov/newsroom/press-releases/2022/urban-ru...
1 year ago, I lived in San Rafael (Marin county, Bay Area). I occasionally needed to go to Palo Alto for work meetings. The fastest public transit option was to take a 40 minute bus to Larkspur Landing, then a 30 minute ferry to the SF Ferry building, walk for 20 minutes, and then take Caltrain for 45 minutes or more and then walk from there. With transfers, at minimum it was a 2.5h journey, but typically 3+h
All to cover a 60 mile / 100 km distance
Edit: Also Google Maps says San Rafael to Palo Alto will take 2 hours give or take a few minutes on public transit, with 3 buses, but the middle one you could easily cut out with a bike or a 4 block walk. That doesn't really seem absurd at all for an occasional trip. People do 2 hour drives for an occasional trip and no one bats an eye.
If you live directly next to the San Rafael central station, that'd be easiest/fastest. But San Rafael is much bigger than that. I'll get into that in a second. There are 2 basic options to do this trip:
Fastest option 1 was to go to San Rafael Station (I'll call it SR here on out) then bus to SF, then bike/walk to the Caltrain station, which was about a 25 minute walk. The buses from SR to SF ran often as rarely as once per hour, and occasionally they just don't show up at all. The ride took 30-60 minutes depending on traffic. There weren't always bike spaces on the bus, so sometimes you needed to lock your bike up in SR and you were going to be walking in SF to Caltrain. But because of the variability on traffic times, you have to leave incredibly early if you want to catch the fastest train to Palo Alto. And if you're going to California Avenue (which was where I was going to), the express option basically doesn't exist.
Here's how that plays out: 10 minute bike to SR station (or 30-40 minute walk, depending on your walk speed), you have hopefully timed things right to get on a bus leaving once every 30-60 minutes and that the bus is actually showing up: otherwise, you're waiting 30-60 minutes for the next one. Then a 30-60 minute ride into SF. Then a ~5 minute bike ride or 15-20 minute walk to Caltrain. Then a 45-60 minute ride to Palo Alto, but again the transfers aren't timed (they couldn't be, given the difference of where the bus dropoff is)
The second real alternative is replacing the first bus leg with a ferry leg by going to Larkspur Landing. There is the SMART train that goes there, but for some wild reason drops people off a 15 minute walk from the ferry and then has no timed transfer.
I did the journey dozens of times and never completed it in less than 2h 30m but more commonly was 4h and had more than 1 occasion where it took much longer than that.
Short errands are much nicer with a bike: less effort than walking, much faster than walking, no parking headache at destination, cool breeze in your hair, and free (no gas, insurance, parking, tickets…)
(I'm from Italy originally).
My wife and I left a meeting in a business park in Phoenix and decided to walk the 5 mins to the local shopping mall, have a look around and then get a taxi back to the apartment in which we were staying (We'd taken a taxi to the meeting).
We were about 2 minutes into our walk when a car pulled up and it was one of the people from the meeting. People in the office had spotted us walking and assumed there was some kind of emergency or our car had broken down.
We had to be very politely insistent that we didn't need a lift to the mall and were perfectly fine.
That being said, the fact that quick maths can give you a 6 orders of magnitude difference between functional code and the package is probably reason for concern.
When you have so many processes on a modern machine competing for resources, when every app chooses to be bloated and slow it really adds up.
How far we’ve fallen.
I think this is not the case. E.g., we replace our computers every few years, but not because the new ones can do things that you can't do with your current computer. It's because the software you use to do the same things keeps getting more resource-hungry.
Then multiply by the number of people who use a piece of software (eg slack) and we’d get a figure for the externalised cost of a piece of software.
The aggregate waste in battery wear and watts spent is pretty staggering when you think about it, all so google could spend a few cents less per 100 streams.
Not to mention the fact that a mobile radio would have to be kept on high power constantly to pull in that 1Gbit/s stream.
You can be snarky all you want, it was a terrible move by Google.
;)
Qatar might even give you a plane!
Upgrades shouldn’t ever break things, bugs and vulnerabilities never exist, and Rube-Goldberg machines should work 100% reliably day in and day out.
Unfortunately reality doesn’t work that way…
And to top it off, the dual flights and whale would need complex orchestration too!
We just call it Kubernetes…
Mass is a nonsense analogy that doesn't reveal anything useful.
Of course, the real cost-saving is in labour—web development presents a radically lower barrier to entry compared to even non-native, cross-platform UI/UX platforms such as Qt, or Flutter, or what-have-you, let alone simply managing multiple native applications.
So this is not a bill-of-materials kind of analogy, it's a statement about talent.
Web leaders have grown complacent; at times, it seems they don't take things seriously. I mean, just take a look at something like SvelteKit. I'm not a web developer, however I happen to like Svelte a lot, but also despise SvelteKit equally as much.
Every major release is like "fuck you."
Using Electron to package your application often saves time over writing a native app.
Giving a regular user a ready-to-use app saves them time, because they aren't googling "how to use terminal" for five minutes or trying to copy-paste the magic command out of their notepad app.
Under some circumstances; arguably, in only a handful of circumstances. The colloquial 10xer may as well as get the job done at a fraction of the labour cost associated with a 10-man senior (but really, comparatively junior) team, whereas the latter would spend months rewriting, refactoring, troubleshooting, triaging, bug-hunting, what-have-you...
Much can be said about inefficiencies of engineering teams.
The business logic for humans is a single reproductive cell.
A single sperm weighs 2.3 x 10^-11 grams. If the average male weighs 75kg the. The bloat ratio for a human male is 3.2x10^15
Getting back to the app there is huge value in not needing to run the command yourself. Sure it’s wrapped in a UI that comes with “bloat” but honestly who cares. When was the last time someone needed to worry about hard drive space, when it comes to a 40mb file.
All of which sucks up your compute resources and battery. Repeat for every such little utility app you have on your Mac. Some may implement that random stuff inefficiently (eg very frequent telemetry), which sucks even more. Some of it may even be wrong, vibe coded, or copy pasted.
Personally, puts me off installing random utility apps, even if the single utility would be useful.
Tk has no color management, unlike newer frameworks, which was good in this case because I asked for (255,0,0) and got (255,0,0). When I exported to JPEG and views on a web browser though I got something like (186, 16, 16) because on my wide gamut monitor the native primaries are more saturated than sRGB primaries so some white gets blended in to make them less saturated. Turns out in Windows, screenshots are in the color space of your monitor! It’s something you’d never notice unless you made stereograms because that little bit of green and blue goes to the wrong eye.
There are two obvious answers. The first is portability. And sure, but Electron provides an answer here, so why can’t we provide one with PWAs? We could even have OSes define this interface for different browsers to target in a standardized way. Yes, you need platform specific code, but that’s often the situation with Electron too.
The other answer is security. But how is Electron / any other installed app any better? Because we require more explicit consent before installing a “real” app than for installing a PWA? OK so, just let’s just do that for PWAs too.
I tried to build some of my tools without Electron, it's always a battle of multiple documentations for multiple systems and creating a bespoke system or having to deal with UI documentations that are glorified API references without examples.
The last few tools I built used PhotinoNET, which gave me an electron-esque framework but not bundling it's own chromium, instead using the browser already on the system. And even that required a complicated build script so I can just export a simple flatpak, exe and dmg...
ps: I love both space stations and Unix
That all said, a simple GUI API provided by the OS for simple programs like this would be nice, just to give the user better feedback on the process. Is it done? Is it doing anything? Did it run correctly? Etc.. Zenity on linux kinda does that but is not guaranteed to be installed...
This is not 'an app to change MAC address' but an app to 'overcome WiFi time limits'.
There's great power in abstraction. Disagree?
Your point is that an operating system, and its shell, all running on a machine, and a collection of apps, are somehow smaller than a wrapper application.
I'm curious the amount of bytes the entire stack, minus the chrome which is the complaint I believe, how many bytes that is. I would say probably a gig.
Thing is, most x-platform frameworks still require a big download. Java and Python runtimes are in the same ballpark as Electron.
alias randommac='sudo /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport en0 -z && sudo ifconfig en0 ether $(openssl rand -hex 6 | sed "s/../&:/g; s/:$//")'There is a `airportd.sb` file, which appears to be some permissions based thing in s-expression/LISP. Weird.
Edit: Spun up a macOS 15 VM and I got this:
WARNING: The airport command line tool is deprecated and will be removed in a future release. For diagnosing Wi-Fi related issues, use the Wireless Diagnostics app or wdutil command line tool.
I guess they weren't kidding.
`networksetup -setairportpower en0 on && [... set MAC ...] && networksetup -setairportpower en0 off`
I think it's pretty safe to assume that modern Macs will always have en0 as the WiFi adapter, but if you wanted, you could use `networksetup -listnetworkserviceorder` to find the associated device.
But you're unlikely to be taking one of the machines that has built-in ethernet to the airport or coffeeshop.
Can't seem to find a CLI command to do the same in macOS 26, but I haven't looked too hard either.
It will change every time you disconnect/connect
https://en.wikipedia.org/wiki/MAC_address#Unicast_vs._multic...
What would you use instead to build a macOS GUI program with comparable ease? SwiftUI? Python + Tk (using the ancient system Python)? Something like Red?
That would let you, for example, clone a MAC address or IP address between your computer and a phone, and maybe automatically resolve contention.
That way, you can split purchased WiFi (such as on a plane) between multiple devices.
You need a router for that, which fortunately is built in to most phones and computers these days.
For devices running Android 11 or higher, users can enable non-persistent MAC randomization globally for all Wi-Fi networks (that have MAC randomization enabled) through the developer options screen. The option to enable non-persistent MAC randomization for all profiles is found at Settings > Developer Options > Wi-Fi non-persistent MAC randomization.In practice people put fewer than 256 devices on networks (class C), so they have less than 1/65536 possibility of complete failure. And far less because they have a mix of OUIs.
But yeah, if you put a few hundred or thousand security cameras or other device from a single vendor, all on the same network, conflicts are certainly possible.
MAC conflicts are also a bit nasty to troubleshoot, and less obvious than IP conflicts.
MAC randomization does not have to constrain itself to the lower three bytes; you can randomize the OUI too.
What does Android MAC randomization do with the OUI?
According to this possible hallucination from Google Gemini 2.5 Flash, the OUI is partially randomized too:
- Locally Administered Bit (U/L bit): This bit (the 2nd LSB of the first octet) is forced to '1'.
- Unicast/Multicast Bit (I/G bit): The least significant bit (LSB) of the first octet is usually set to '0' to indicate a unicast address.
- Remaining OUI bits (and the entire lower three bytes): All the other bits in the MAC address, including the remaining bits of the first octet, the entire second and third octets (which are part of the OUI), and the entire last three octets, are randomized.
Me again:
So if two bits are fixed, everyone in the randomized space is randomizing 46 bits, which contains 7.03E+13 addresses.
Practically speaking, it seems that the only way you will ever see a clash arising from the above randomization strategy is if two devices are using the same very poorly seeded PRNG.
For MacOS (Sequoia+) you can just forget the network and reconnect to get a new MAC address [1].
Android's documentation for if it decides to generate a new address per connection is a little vague [2], but I'm guessing forgetting and reconnecting works as well, you may also need to flip the "Wi-Fi non-persistent MAC randomization" bit in developer settings.
On Windows, flipping the "Random hardware address" switch seems to cause it to generate a new seed/address for me.
[1] https://support.apple.com/en-euro/102509
[2] https://source.android.com/docs/core/connect/wifi-mac-random...
sudo ifconfig en0 ether 02:11:22:33:44:55
Just ran into this on icelandair.
It’s an illegal address, but most equipment will take it because test devices occasionally come from the factory with that MAC. But higher level stuff might barf on it because it’s technically illegal.
$ sudo ifconfig en0 ether 00:00:00:00:00:01
ifconfig: ioctl (SIOCAIFADDR): Can't assign requested address
edit: but this worked on my external NIC! Network wasn't happy though and DHCP didn't work. Ubiquiti had a funny note about this MAC: "Officially Xerox, but 0:0:0:0:0:0 is more common"As always, ymmv.
On some equipment this may cause a broadcast storm, depending on how they implement things. Cisco equipment with some configs will send a packet to all the ports if it receives a packet and can't figure out where it's supposed to go.
NEW_MAC=$(printf '02:%02x:%02x:%02x:%02x:%02x\n' $((RANDOM%256)) $((RANDOM%256)) $((RANDOM%256)) $((RANDOM%256)) $((RANDOM%256)))
sudo ip link set wlan0 down
sudo ip link set wlan0 address "$NEW_MAC"
sudo ip link set wlan0 up
You should replace `wlan0` with whatever you see in `ip link show` for your wireless interface, for me it is `wlp0s20f3`. I replaced the `openssl rand` command because it was generating some invalid MACs; this is hopefully only valid ones.Buy a coffee, get a new password, etc.
Their employees' time is more effectively spent making coffee than repeatedly providing low-level tech support for random password problems.
Is there a specific scenario where time limited wifi is common place?
A lot of airlines now offer free "messaging" - usually just text on common messaging apps like WhatsApp. I've been meaning for years to write some kind of server that could give me useful functionality over chat messages.
Already done:
WhatsApp: https://news.ycombinator.com/item?id=33568994
Facebook Messenger: https://news.ycombinator.com/item?id=9203946
The bigger problem is how utterly useless and unstable the connection is to begin with..
Stuttgart Airport has 60 minutes.
(Edit: punctuation)
I didn't realize you could spoof MAC addresses on....well....a Mac but it's not something I'd do lightly.
But be conscious and thoughtful when using it. Some terms to consider whether they apply to a particular use include "unauthorized access", "circumvention", and "theft of service".
cactusplant7374•7mo ago
myself248•7mo ago
jasongill•7mo ago
boston_clone•7mo ago
bapak•7mo ago