Show newer

why don't windows programs work on a mac, and vice versa? (long, serious) 

an operating system (OS), such as windows or macOS, handles a lot of low-level stuff. this means that developers don't have to worry about details like "how to scroll a page" or "how to read text from a file", because the OS handles it for you. a computer can't do anything without an OS - it's needed for even the most basic tasks.

the OS provides you with a huge amount of functions you can call to get stuff done. rather than worrying about the fundamentals of reading a file from a hard drive, the OS will provide you with a function that does the job for you. however, every OS does this differently. this means that you can't just run windows program on macOS because the functions it needs aren't there.

wine is a program that translates windows functions into ones that work with macOS or linux. this allows you to actually run windows programs on macOS. when the program asks for a windows function, wine performs the macOS equivalent and pretends it's running on windows. the macOS version of the sims 3 actually runs in a modified version of wine - it's the exact same code!

it's possible to make programs that work on windows, macOS, and linux. for example, games made with the engine "unity" can run on all three of these. however, the actual game file is still different for all three - unity just translates the code into versions that work *individually* with windows, macOS, or linux. this means that you can't run a windows version of a unity game on macOS.

a java program can run fine on all three of the above operating systems, but you actually have to install java first - and the installer is specific to your OS. it's not possible to make a program that truly works with all three of these operating systems from a single file with no installers or engines or other behind the scenes work, as the differences are simply too great.

one more interesting note: reactOS is an operating system based on wine technology. its goal is to completely simulate windows without actually using any windows code (as this is illegal) by using the same methods wine does. it's still in alpha, but it's really cool!

(i know there are other operating systems, i just didn't mention them for brevity's sake. sorry *BSD people.)

what would you like to see me make a post about?

for those who are unaware, these are medium to long posts that explain moderately complex computer-related terms and issues in simple language, such as what the "analogue hole" is, the DK64 memory leak bug, and gratis vs libre software. as long as i understand it, and it's not too technical, i'd likely be happy to make a post explaining it!

what is the "analogue loophole"? why do people say that removing the headphone jack would allow companies to restrict your ability to listen to music? (long, serious) 

the "analogue hole" refers to the idea that no matter how hard you try to make sure nobody can make illegal copies of videos, music, or text, there's always a "hole" in the protection that occurs when it's no longer digital. digital content can be protected - video files can be encrypted, music players can limit you to five devices - but analogue signals can't be. for example, itunes can disallow you from putting a song on more than five computers, but if you play the song through your speakers and record it, what you do with it is beyond apple's control.

one of the few remaining analogue outputs on a modern device is the audio jack. this is where you connect your headphones or speakers. your laptop only knows that something's plugged in. it doesn't know what's connected. you could be playing it through earphones or a massive speaker system and it wouldn't be able to tell. meanwhile, HDMI is a digital output format. it can tell if it's been plugged into a TV or a recording device, and can automatically disable output if you're recording it to make it harder for you to make copies of movies.

if the audio jack is replaced by USB-C or bluetooth, it becomes possible to tell what you're connecting to the laptop or phone. your phone might disable audio playback on anything but headphones to prevent you from hosting a public event with the music. it could also detect a recording device that you're using to (for example) make a copy of a song you're listening to on spotify and turn off the playback.

of course, at some point, digital needs to become analogue. humans can't watch electrical pulses, we need to see patterns of light. we can't listen to streams of 1s and 0s, we need vibrations in the air. this means that it's impossible to truly defeat the analogue hole - no matter what you do, someone can always just point a camera at their TV. it'll have worse quality, but it can never be stopped.

the analogue hole is one of many ways to circumvent DRM, or digital rights management. you can read more about it here:

what is "free software"? why do people say software isn't free, even though you can download it for free from the app store? (long, serious) 

there are a lot of ways you could define "free software". for example, you could say candy crush or CCleaner is free software, because you can install it for free.

when people say that software is "free as in freedom", or "libre", they mean something else. under these definitions, neither candy crush nor CCleaner would be free software. in order to be free by these definitions, software needs to fulfill these four criteria:
- the ability to run the software for any reason, without restrictions. this means that the free version of teamviewer is not libre, as it tells you that you must purchase a license to use it commercially.
- being able to study and modify the program's inner workings. this requires the source code being available. software that doesn't provide the source code thus cannot fulfill this term, and software like snapchat, which bans users for running modified versions, is definitely not one of these.
- being allowed to redistribute the software. if you buy a macbook, you can install updates for free, but you certainly aren't allowed to redistribute these updates.
- being allowed to distribute modified versions to others. if you're not allowed to download the app, make some changes, and send that to people, it breaks this rule. the youtube app is free, but google wouldn't allow you to do this.

all of the software mentioned in those four basic rules is "free", but not free. this distinction is often used by saying "gratis" or "libre" - gratis software is free as in "free donuts", but libre software is free as in "freedom".

as with anything, it's hard to make clear cut rules to define what is and isn't an example of libre software. the cooperative software license prohibits most companies from using the software, but is otherwise entirely libre. this violates the first rule above, but i would say it's still a free software license, although the free software foundation would disagree with me on that.

here's a link to the cooperative software license: - check section 4 for the restrictions mentioned above.

and finally, here's a link to the FSF's article on what is and isn't free software. this is where those four rules came from - the FSF calls them the four essential freedoms.

neither of these links are necessarily an endorsement of the contain contained within.

how does OCRbot work? (long, serious) 

after downloading the image, OCRbot uses tesseract-ocr to extract the text. this is a free (as in libre and gratis) program that uses neural networks to do the job. it's been trained on a massive dataset of text and has "learned" what letters usually look like. it knows that a lowercase h is a line with a smaller line connected to it on the right, for example.

tesseract first tries to split the image into chunks of what it believes to be text. it then splits these chunks into words by looking for spaces, and then tries to identify the letters making up those words. if any of these steps fail, the entire process fails.

neural networks work in a similar way to how a brain does, but on a much smaller scale - computers really aren't up to the task of simulating an entire brain right now. powerful computers are used to train the neural network for hours and hours, making it become more accurate at reading text. this has some drawbacks - if it was always trained on helvetica text, it'd only be able to read that, for example. thus it's important to make sure you train it on lots of different fonts. tesseract provides these datasets for you, but you can train your own if you'd like.

finally, after extracting the text, OCRbot does some rudimentary fixes (like replacing | with I, as tesseract thinks | is a lot more frequent than it really is) and posts the reply.

what does "decentralised" mean? (longish, serious) 

let's use twitter and mastodon for our examples.
twitter is centralised, while mastodon is not. this means that it's possible for twitter to disappear at any time - the CEO could (theoretically) shut it down and delete anything at a moment's notice. the company behind twitter has complete control over everything that shows up on twitter, and can do whatever they please with it.

even if mastodon's creator decided to shut down, all of the other instances would work fine. mastodon can't be blocked by the government or your school (individual instances can, but there's always more). mastodon can't be shut down. mastodon can't disappear. this is true of all decentralised software, from to pleroma to email. it's a lot harder for mastodon or email to disappear than it is for twitter or tumblr.

"why's does it show as" you might ask

URLs don't actually support many characters. you can have, but not пример.com. but what if you don't use the latin alphabet? well, you can use punycode. it allows you to store non-latin text in a special format. for example, is actually an encoding using cyrillic letters that look very similar to "apple". this can be used for good (such as having URLs in your native language) and for bad (such as this proof of concept, which could be used for an actual attack). some browsers support this, some don't. newer versions of chrome have specifically disabled the fake, while firefox leaves it on.

Show thread

how do those ebooks bots work? part 1 -- the interesting part 

in today's episode of : how do those ebooks bots work?

the ebooks bots (the ones i make, anyway) use something called markov chains. markov chains are a mathematical concept, and in computer science (computers are the only thing i know about), they are generally used for predictive text. when you type "how are" on your phone and the keyboard recommends "you", that's (usually) markov chains at work! as you type, your keyboard makes a database of everything you've ever typed and uses it to predict what you'll type next. keyboard generally come with a built-in database of common phrases, and then additionally learn from you as you type. this is why your brand new phone already knows to suggest "you" after "how are", before you've ever even said that before.

the bots use markov chains too! every time they're asked to post, they use a random selection of 10,000 posts (they use less if you haven't made that many) to learn from and use them to generate a new one. that means when you reply, they receive your reply, randomly select a huge chunk of posts, train a markov chain on them, generate a reply, and post it -- all in less than a second! technology!!

a markov chain isn't intelligent. it doesn't know where sentences start and end, and it doesn't understand grammar -- it doesn't know anything apart from "when you say this word, you usually say this one next". markov chains don't care if the input is words or colours or images or DNA sequences, they just have a database of words and probabilities and use them to create posts. they often make things that don't make sense, or just feel like two posts slammed together, but occasionally, they come up with gold (such as "have these ancap nerds even played Super Mario 64").

what do all the various terms mean when i'm buying a new computer or laptop? (jargon, very long, serious) 

in this episode of : terminology to look for when buying a new computer!

if you're buying a computer or laptop or even a phone, there's a lot of jargon that might confuse you to look out for. it ranges from straightforward statistics to obscure facts to shitty "gotcha"s. this post aims to break them down.

here are the fundamentals:

CPU: the central processing unit. this is what your computer uses to crunch numbers, and the benefits of a fast CPU can be seen everywhere from decompressing a large zip file to processing a heavy webpage to converting an AVI to an MP4. a slow CPU can make an otherwise good computer into a laggy, unresponsive mess. we measure CPU performance in terms of instructions per second and cores. instructions per second are measured in hertz, for example, 3.2GHz. one hertz is one instruction per second, so a 4KHz CPU can complete four thousand instructions per second. instructions are very, very basic steps for a computer to do - think "add two numbers", not "open this file". the more instructions your computer can do per second, the faster it'll be. cores represent how many tasks your computer can work on at once. for example, if your video editor is using 100% CPU on your single-core machine, your computer will be unusable, but if you have more cores, you'll still have spare power, even when one of the cores is maxed out. many modern apps, such as chrome and discord, take advantage of multiple cores by dedicating groups of tabs to each core. "hyperthreading" is an intel technology that allows a CPU to act like it has more cores than it actually has, for example, a quad-core CPU with hyperthreading would be used as if it was an octo-core. the way this works is kinda complex, and i don't want to make this post TOO long.

RAM: also called memory. not the same thing as storage. memory is a measure of how much stuff your computer can do at once. when you open a document, picture, video, song, etc., some or all of it is loaded into memory. this is because memory is much, much faster than a hard drive or SSD. if you don't have enough memory, windows (or macOS, or what have you) will start chugging along and apps will start crashing as they all fight over the scraps. you can mitigate this somewhat by creating a swap file on your hard drive, which will be used as supplementary memory, but then you lose the speed benefits, and waste storage space.

storage: HDD, SSD, SSHD, hybrid drive, hard drive, hard disk, solid state drive, optane... all of these mean the same thing: storage. the more storage you have, the more files you can save. if you run out of storage, things start going badly, as your computer always needs a little spare storage to work with. everything you download or install or save goes uses storage space. so why are there all these different names? as technology marches on, we invent better methods for doing things, including storage. hard drives are slow and inefficient (they're one of the few parts of a modern computer that's mechanical), but much cheaper than SSDs. SSDs work like a flash drive (aka USB stick, thumb drive...) and thus avoid the speed issues of a conventional hard drive. hard drives need to be defragmented because as you create and delete files, they get ordered poorly, and it takes longer to access them, because the magnetic platter needs to spin more for the needle to read the files (yes, this is actually how hard drives work). with an SSD, however, there's no needle or platter, and files can be accessed "out of order" much more easily. one caveat: you might have noticed that when you buy an 8GB flash drive, it's not actually 8GB. this is because there are two definitions of a gigabyte (and a megabyte, and a kilobyte...): 1000 megabytes, and 1024 megabytes (because computers, which use binary, are good with powers of two). storage manufacturers use the latter, windows uses the former. to distinguish the two, you can say Go for 1000 kilobytes, and GiB for 1024. neither definition of gigabyte is wrong. all of this also applies to kilobytes, terabytes, etc.

GPU: this is the graphics processing unit. most modern CPUs have one of these built in, commonly known as an iGPU, the i standing for integrated (as opposed to a dGPU, which is a separate dedicated card). this is most relevant to gaming, and is also used for machine learning, cryptocurrency mining, etc. if your GPU is especially weak, it may have trouble decoding high resolution video, but with modern computers, this isn't something you'll have to worry about.

wi-fi: 802.11 is the technical name for wi-fi. ac is the latest standard, so if a device doesn't have 802.11ac support, it doesn't support the latest version of wi-fi. you probably won't notice the difference between devices that do and don't support it, but it'll be relevant eventually

technical terms, jargon, and gotcha's:

resolutions: full HD (sometimes FHD) means 1080p, 4K (aka UHD, ultra HD) is a name designed to make you think it's four times as good as 1080p (it isn't. 4K is 2160p -- 3920 wide, 2160 tall. they get the "4K" name because it's almost 4 thousand pixels wide). HD actually means 720p, but some mistakenly use HD to refer to 1080p. HD means 720p when you're buying a television, and it means 720p or higher when you're watching youtube.

display technologies: LED and LCD are the same. OLED (and AMOLED) use a more sophisticated (and expensive!) technology that has much higher contrast. this is because it doesn't have a backlight like LCD TVs do, so when something on the screen is supposed to be pure black, rather than being mostly dark, it's actually jet black. it's the difference between your (non-OLED) laptop displaying black and the screen being turned off.

optane: i've seen a few advertisements saying a laptop has "32GB of memory" and then clarifying that they mean "16GB RAM, 16GB optane". optane storage is essentially the same thing as an SSD, but faster. those laptops have 16GB RAM and 16GB of extremely fast storage (in addition to whatever hard drive or SSD it has).

USB-C and thunderbolt: USB-C is the type of port (and it's not compatible with what we all call USB today, which is actually USB-A. USB-B is mostly used for printers, so much so that many stores sell USB-A to -B connectors as "printer cables"), while thunderbolt is a set of functions a USB-C port has. a non-thunderbolt USB-C port does less than a thunderbolt one, mainly having much less support for external displays.

big.LITTLE architecture: a phone that uses this technology has two CPUs inside it, and the phone switches between them depending on battery level, performance, etc. a phone with two quad-core CPUs using big.LITTLE will often be (technically correctly) marketed as an octo-core phone, even though it's impossible to have all eight of those cores active at once.

these are the main things to look out for. thanks for reading!

why did go down? (SSL certificate stuff, long, serious) 

when you see a website that's HTTPS rather than HTTP, it means the connection is secure. most popular browsers will display a green padlock in the URL bar to symbolise that (and colour it yellow or red if something's wrong).

to verify that a connection is secure (and not just someone saying it's secure), you need a certificate, a file that verifies that you are who you say you are.

a certificate can be revoked at any time by anyone. you can deny facebook's certificate if you like, and facebook will stop loading for you. more importantly (and practically), the issuer of the certificate can deny it, and the site will stop working until they get a new one. this means that if facebook "goes rogue", the CA (certificate authority) is allowed to remove their certificate, guaranteeing (in theory) that if the site is HTTPS, it's definitely secure.

these certificates don't last forever. they need to be renewed, to prove that you're still there and still complying with them. gargron had certificate auto-renewal set up, which means the certificate will automatically get renewed when it's close to expiring. so why did the cert expire? why did .social go down? the answer is because while a new certificate was installed, it wasn't actually loaded. nginx, the server software that .social uses, was supposed to automatically load the new cert, but it didn't for some reason (computers are weird!), and thus .social went offline for about an hour.

Lynnestodon's anti-chud pro-skub instance for funtimes