* Posts by Dr AntiSol, astrophysicist

29 posts • joined 28 Jan 2020

25 years of Delphi and no Oracle in sight: Not a Visual Basic killer but hard to kill

Dr AntiSol, astrophysicist

Re: Still use Delphi

Well, I'd love to take credit, but I'm ethically obliged to confess that I don't deserve the praise. I wasn't 100% sure that Dunning–Kruger was the name of the phenomenon I was thinking of, So I asked wikipedia, and while I was there I got lazy and copy-pasted the name to be sure I'd avoid spelling mistakes. :)

However I do (sincerely, not mocking) commend you on your commitment to pedantry in even noticing. I absolutely would not have. Truth be told I didn't know the difference in usage until you compelled me to look it up just now. So I learned something today. yay!

yes, the GUI is only for Windows, sadly

Which pretty much kills the claim that it's cross-platform (dammit, now you've got me pausing to consider whether it's correct every time I type a hyphen) for me. If I was going to use .net I would only consider using it for writing GUI desktop apps, because I think there are better tools for all other use cases (I mean, there are better tools for GUIs too, but if there is one area where perhaps .net might have an edge [in terms of making a dev's life easier] it would be at rapid development of desktop software).

Is the GUI library a part of .net core, or is it something else? I'm guessing it's something else? And not open source? That pretty severely limits the usefulness as far as I'm concerned. Yeah, technically it's cross-platform, but they've ripped out all the interesting parts to make it so. If MS is so in love with open source these days why not free the gui library, too? My reaction to this is "a-ha, so that''s the catch, they've only open-sourced the uninteresting half of it") I'm coming right back around to my previous use of "pointless". Python and Lazarus and even the reviled java can all do it better and easier, not to mention more safely (from an "am I going to have to rewrite this in 3 years because of an incompatible change or the tech being deprecated or whatever" point of view).

Which I think exemplifies the attitude of a lot of people towards anything MS does and in particular this whole "we love open source" shtick. They have such a long track record of evil that it's going to take a long time doing good before somebody like me is going to even consider trusting them. I remain extremely, extremely skeptical that this is anything other than a particularly slimy "embrace" phase of that famous old strategy - I don't even need to tell you the names of the other two phases I expect to be a few years down the road once this has a userbase in the server space, do I? (no, not "???" and "profit")

And given the track record, I don't think you can reasonably say "oh you're just being paranoid". Maybe in a decade I'll start thinking about throwing a little trust their way. Maybe.

So, sure: .net core is now cross platform. Asterisk. The emulation layer is now able to run on a machine other than the one it's emulating. For the moment. nearly 20 years after it came out (and now that that machine is no longer the dominant one). After they ripped out the (very slightly) interesting parts. I think my initial statement holds water, even if it is "lightly" sprinkled with hyperbole and sarcasm and disregards this latest ploy (if that's the right word. It's not impossible that my assumption is wrong. Just statistically unlikely).

ASP has moved on a little to become ASP.NET, and isn't quite as evil as it used to be

I actually worked with early asp.net, too. It got worse when it became asp.net IMO

means an identical DLL can be used on any platform

Oh right. Bytecode. duh. And I totally knew this, too, I've seen dlls in unity games on Linux a bunch of times. That is kind of nice. But nothing that Java wasn't doing in the 90s.

it's possible to build a platform-specific thing that includes all the libraries with it

Also kind of nice

as of .NET 3 people in general are getting quite enthusiastic about the whole thing

I've heard a couple of people tell me about how .net is popular in open source circles. But I've never met (or, to be fair, discussed this with) an OSS person who didm't share my skepticism.

have admittedly done with other things

You could just hear me getting ready to say "VB6", couldn't you? ;)

it would be continued/forked by volunteers, what with it being open source now.

I'm sure it would. But MS deciding to cut it off isn't really the real concern (granted, it is the only one I outlined, that's shorthand for a bunch of ways it could go). The real concern is when ".net core Plus!" comes out (extend). And does a couple of things a little better. And isn't open source. And oh btw it's not cross platform, either, guess you'll just have to switch those machines to windows if you want this (extinguish). We built a handy tool in azure to help you do just that. Or, if they're playing the longer game, it starts out as cross-platform and then "certain other environments" get dropped once it has a userbase.

Smalltalk

I think I might have seen it on a mac OS ~7 machine back in school. Never had any other exposure to it.

it was just an absolute pleasure to debug

Debugging is one of the things I loved about VB back in the day. The ability to make a change in code during break and then grab that execution arrow and move it back or forward to skip or re-try an operation was awesome.

Dr AntiSol, astrophysicist

Re: Still use Delphi

the autocompletion stuff is a really good point, Delphi always had quite a nice, helpful IDE. But on that front, many IDEs will give you the closing brace for free, so to be fair it's really just shift-[.

I'm sure that if/when I decide to go back to Delphi/Lazarus I'll get used to it in short order. I'm absolutely not saying it's crap, I still rank Delphi as one of the nicest languages and development environments I've ever used. Just giving my impression as someone who hasn't used it very much lately.

Dr AntiSol, astrophysicist

Re: Still use Delphi

That is very nice of you :) It sure is scary. And it's missing the nuances of verbal and/or in-person communication. no body language. It's easy to interpret the tone differently to how it was meant, which can lead to things like taking offense when none is intended. Which isn't nice for anybody.

Anyway. I'm actually pretty impressed by the sizes you give. Sounds like it hasn't grown much. Which runs contrary to everything I know

Eew, ASP. Is that still a thing? You poor bastard. You need a hug.

I get about 100mb for python3 with pretty much every packaged library and addon that's available. Note that this includes multiple GUI libraries including GTK and two separate versions of QT (4 and 5), opengl, and a whole bunch of other stuff. But for a barebones install of python 3 I get 818 kilobytes.( dpkg-query -Wf '${Installed-Size}\n' `apt-cache depends python3 | grep 'Depends' | awk '{print $2}' ` | awk '{total = total + $1}END{print total}' ). There's also a 'python3-minimal' package which weighs in at 120kb.

(I'm not sure, but I may not have included docs in the 100mb figure, so that could be your missing ~50mb. but docs are certainly not necessary to run stuff, so i think it's fair to exclude them)

It's difficult to compare this apples-and-apples. One could scream "less than one meg!" shrilly, but I expect relatively few things are going to be able to run on that. Basically you just have the standard library. TBH I don't even really know offhand what that gives you because I tend to just install it all on my machines (which are invariably development environments). I could look it up, but effort. I expect that in a real-world scenario, you're going to have a bunch of the libraries installed, so perhaps closer to the 100mb end of things than 1mb. But very rarely would you ever need it all. I'm very dubious that there are many python programs out there that would need even 58mb. Certainly not with equivalent functionality. In particular you're only going to use one of gtk, qt4, and qt5 for any one project. (qt4 and qt5 bindings weigh in at 15mb each. gtk3 is 635kb). And that's broken up into 88 separate packages, so it's much easier to do a minimal install of just what you need. So I'm willing to accept that .net and python are maybe within the same order of magnitude for real-world usage, though I would assert that python is much more flexible and granular and allows only installing what's necessary to get the job done in a way that's not possible with .net.

(You mention "if you want to make a Windows UI". Is that cross-platform and "windows" is a euphamism for "GUI", or is it windows only and therefore the thing isn't really cross-platform? How many gui libraries has .net been through now, anyway? I seem to recall someone bemoaning some fancy new-and-incompatible way of doing GUIs a while back. I'd also be curious to hear about the experience of cross-compiling for a linux target)

But we were talking about Delphi, not python. I already said I object to java so I'm just going to go with your 300mb figure. it looks about right.

I don't have a windows machine handy these days to test actual Delphi on (though I do have my delphi CDs somewhere still), but I can attest that it did produce very small executables, and there was no runtime. Also it only compiled in what you needed. A Hello, world would be very very small, and a useful application pretty small. I recall working on a few large-ish programs which were on the order of 1-2mb. We had one which was 150k LOC and the executable was something like 3mb IIRC. There was probably an embedded bitmap or two in tall hose figures, by the way. The whole thing bundled with an installshield installer with data files and whatnot was definitely under 20mb, maaaaaybe 35 by the time you decompressed it. We're talking ~25% the size for my complete application, and you haven't written a single line of code yet. Approaching an order of magnitude.

I fired up Lazarus and quickly compiled the last thing I was playing around with there, a little opengl thing. Really not large. on the order of 100 lines. It produced a hideously large executable - 20mb. But again, that's the entire thing. No runtime. Everything included in the executable. I expect that wouldn't grow much until I had a very large application. And Lazarus is not delphi, doesn't quite do all the same magical things. But we're only at ~15% of .net here.

Have you worked with Delphi? One of the most beautiful things about it IMO was the really nice place that it found between speed and power and having to deal with things like memory allocation and pointers and stuff (you basically never *had* to deal with pointers but you could if you wanted to). It has a nice string type that you don't allocate or free. Dynamic arrays weren't particularly painful IIRC (it's been a while since I used it seriously). You do have to use create and free when you're working with objects that you instantiate in code, but in my experience that's rarely problematic because object lifespan is pretty well-defined in most cases (yes, there are exceptions, but generally a little bit of good practice can make a lot of that stuff a non-issue). I found Delphi to be a language where you could pretty easily just think clearly about your object model and get stuff done. And it had some really neat ideas and conveniences that .net...shall we say..."borrowed", almost certainly due to the defection of Anders Hejlsberg (things like anchoring controls at left/right/top/bottom to have them resize or move as your form resizes, and seriously awesome data forms). And delphi programs ran FAST. It wss suitable for moderate-to-heavy lifting. I would use it to do heavy-ish lifting in a heartbeat. I'd choose it over C unless I had to. I'd absolutely choose it over .net, which felt so much like a horrible kludge that it pushed me to move to open source languages. As I said elsewhere, though, these days Delpih does feel a bit dated and verbose with its declarations sections and begins and ends if you're coming from something like python.

TL;DR: Delphi has .net beat on size by a pretty serious margin. And I remain unconvinced about how good/complete .net core's multi-platform support is and whether it can be trusted to stay around for the long-haul and not get deprecated in a few years.

One thing I expect we can agree on, though, is that VB(A) is horrific.

Haha. You know, very early in my career when the Dunning–Kruger effect was in full force, I used to love VB and defend it against its detractors.

These days I think it's pretty horrific.

Dr AntiSol, astrophysicist

Re: Still use Delphi

Fine. Except there's this weird thing that keeps happening: people keep changing the subject on me mid-discussion. Almost as if they had no response to my points - It's difficult to distinguish from that old, super-transparent debating technique of shifting the goalposts and derailing the discussion by focusing on irrelevancies. If I'm honest, I find it kind of... rude? That's not really the right word, it's not really that big a deal, but it's the best word I could come up with.

Thanks for checking in, though, I appreciate it :)

Dr AntiSol, astrophysicist

Re: "VB did have classes"

Oh, yes, Good point :)

I was pretty new to the idea of OO when I still used it, and I haven't really used it since. Memory is hazy, apparently. I did like it back in the day, but going back to it to write a thing in msaccess about 5 years ago was pretty nightmarish.

Dr AntiSol, astrophysicist

Re: Still use Delphi

That's a 404. maybe try that preview button next time? I'd make some quip about attention to detail and people who use microsoft tech, but that would just be too easy. :)

And, no, There's an open source implementation of .net which was made by not-microsoft. That's not the same thing as .net supporting multiple platforms.

Or maybe you're talking about .net core, which I'm told has had support a platform that isn't windows for a whole 18 months or so. So .net came out about 18 years ago, and gained support for a platform that it wasn't already emultaing about 18 months ago. Yep, that's a great track record of support right there, and not at all likely to vanish at any moment.

And you're touting the virtues of multi-platform support for the web now? And claiming it's .net somehow?

Dr AntiSol, astrophysicist

Pedantry

did not support object-oriented programming

VB did have classes. It was possible to do OO with VB. Just not pretty. Though it's possible this was added in a version >3, I don't recall the timing offhand.

Unfettered access to the Windows API

Unfettered? No. Access? Yes. If you knew what you were doing and had the documentation you could roll your own windows API calls in VB. Doing just that sort of became my speciality very early in my career, I was doing all kinds of things which conventional wisdom said "weren't possible in VB". There was even a tool to help with it included with certain versions/editions. Again, it wasn't pretty (not much about VB was) but it worked.

Delphi was seriously great, though - coming from VB to Delphi where you could just use the windows API was a real joy. I loved it immediately. I still consider it to be one of the best tools I've ever used. Such a great place in the RAD / speed / simplicity / capability tradeoffs.

It is kinda difficult to go back to all those begins and ends and declaration sections and whatnot from something like python or ruby, though. Seems really verbose these days.

Dr AntiSol, astrophysicist

Aah, good, someone already mentioned Lazarus For me it was the true successor to Delphi 7. :)

Dr AntiSol, astrophysicist

Re: Still use Delphi

Your only valid point remains the requirement for the .NET Framework

Which, back in the .net 1.0 days, was somewhere around the 100MB mark IIRC. And I can't imagine it's shrunk since then. But what's an order of magnitude between friends?

You'll need to qualify your reasons for calling it a "horrible fucking kludge"

It's a virtual machine built to emulate exactly one machine which only runs on the one machine that it emulates. Sounds like a horrible fucking kludge to me. I'd also add in "pointless" if I was describing it.

I do object to java, but at least it supported multiple platforms, making it not-entirely-pointless-in-all-conceivable-circumstances.

Astroboffins may have raged at Elon's emissions staining the sky, but all those satellites will be more boon than bother

Dr AntiSol, astrophysicist

Re: Nuts

And yet again you talk sense.

I should just stop posting anon, you find my posts and reply to them anyway.

At last, the fix no one asked for: Portable home directories merged into systemd

Dr AntiSol, astrophysicist

Re: Next RC codename ...

wow, that is fortuitous! It'll make it very easy to say and totally unambiguous!

Dr AntiSol, astrophysicist

Re: Jeez

Carcinoma would be even better.

Dr AntiSol, astrophysicist
Thumb Down

Re: Next RC codename ...

You're underestimating a certain ego. It'll be PoetteringOS. Duh.

Petition asking Microsoft to open-source Windows 7 sails past 7,777-signature goal

Dr AntiSol, astrophysicist

Re: Security Lawsuits

Of course it's a joke. It boggles my mind that people here are treating it like it's a serious suggestion.

Security. Can you imagine if people could nose around the source of Windows 7 and actually inspect whether it's safe?

...and submit patches to make it safer. Hmmm. Sounds like not a bad idea to me. And strangely reminiscent of how certain other, more secure operating systems do it.

Lawsuits!!! A cottage industry of consultants and lawyers mulling whether the design was inherently insecure and if the company knew it all along. "My client was exposed to untold risks by using this product which was sold as an enterprise-class solution..."

Somebody hasn't read their EULA. Specifically the part about no warranties express or implied and no guarantee of suitability for purpose. Good luck with those lawsuits.

Yikes, that would be embarrassing.

Yeah. Somebody recently suggested somewhere else that the main reason thet don't open source it is out of embarrasment. I think they might be onto something.

Dr AntiSol, astrophysicist

Re: Why not set an easier goal?

Windows 7, 8, and 10 32 bit can easily run MS-DOS and Windows 3.11 applications

Lol! I love a good joke. And that's a damn funny one.

Dr AntiSol, astrophysicist

Re: This is about as deluded..

Soy contains phyto-estrogens. Excess estrogen in women can cause real serious problems, and in men, well, "chemical castration" and "gynecomastia" come to mind.

I'm just going to leave this here. He even went to the trouble of putting sources in the description if you'd like further reading. And then he did an experiment by going on a soy diet, which he reports on here.

The short version is that just because it has "estrogen" in the name doesn't mean it's the same chemical. And I'd really appreciate if people would stop saying this because it has no basis in fact. Unless you have some studies you'd like to point me to?

As to the rest of what you say, yes, I for one think the best solution to the vegan problem is to legalise hunting and eating vegans.

Thunderbird is go: Mozilla's email client lands in a new nest

Dr AntiSol, astrophysicist

Re: Thanks for the clarification, Smooth Newt

it depends on how you're doing it and exactly what you're doing. Most of the ones I've worked with are indeed a script. But yes, doing analytics on your access logs will also mostly get the job done.

Dr AntiSol, astrophysicist

Re: "a fork will come along that does it better"

So why it wasn't forked already?

Because forks don't happen magically, and right now there's an email client which is perfectly adequate to the task and hasn't (yet) been turned into dogshit per Mozilla's MO.

Dr AntiSol, astrophysicist

Re: Oh God No

Yeah that's what I said: they're going to turn it into dogshit.

Dr AntiSol, astrophysicist

Re: Thanks for the clarification, Smooth Newt

Lightweights. Just use vim on your Maildir :P

Dr AntiSol, astrophysicist

Re: Thanks for the clarification, Smooth Newt

Remember them? When loading a web page didn't involve downloading a megabyte of javascript? Aaaah.

But OTOH, to be fair, 56K.

Dr AntiSol, astrophysicist

Re: Other email clients?

I'd have to take a look at our metrics to be sure, and I can't be bothered with that (it's a PITA, I'm not touching that database for free), but IIRC:

* The majority of iThing users run apple mail. However on mobile there's a significant number who use the gmail app. Which is a nightmare because of the ridiculous rules about "no HTML rendering engines except ours" that are decreed from on high in the lovely walled iGarden. So the gmail app renders stuff differently on iThing and Android. Which makes building and debugging responsive email just oh so much fun.

* Many of those who are using apple mail use it to access gmail accounts. I think probably the majority but this is very much an "IIRC" and gut-feel-from-experience type of thing. I might be wrong, I wasn't looking for that figure last time I looked at the numbers (I only cared about the client/OS). There's also some apple account thing which gives them an email address which is pretty common among ios users, but for the life of me I can't remember what it it's called. iCloud or iLife or iMail or iGotRippedOff or something like that. I'd look it up, but I don't care ;)

* Android outnumbers iOS fairly significantly. Overall, the single biggest segment of all opens are gmail for either web or Android. IIRC the app beats out web pretty significantly.

So to answer your question... yes? kind of?

Dr AntiSol, astrophysicist

Re: It works

it doesn't tell you anything useful like which folder it's in

There's a little icon that looks like a window with a downwards pointing arrow in the header of the search results at the right hand side. If you click on that you'll get a list of available columns. One of them is 'Location'. HTH.

But, yes, searching could be improved. But you just know that won't happen until after they add new emojis and a new theme that makes it incompatible with the existing themes - they'll totally work on the important stuff first ;)

Dr AntiSol, astrophysicist

Re: Thanks for the clarification, Smooth Newt

yeah, text-only is the best way to do it.

Dr AntiSol, astrophysicist

Re: Other email clients?

Gmail on mobile does indeed account for the majority of all opens these days. Hotmail and outlook.com are still fairly significant, too, and a significant share of their users are on mobile too. After those guys, you'll see lots of local ISPs and a bunch of big employers (people signing up for your whatever from their work email) in your stats. ~17% sounds about right to me.

And, yeah, IMHO these do count as an "email client" - people are using them to view and manage email. It's just that it's a web app rather than a native one.

But as others have noted these numbers are essentially worthless where thunderbird is concerned because it blocks remote images by default. It's not even counted as an open, let alone an open from thunderbird.

Dr AntiSol, astrophysicist
Mushroom

Oh God No

They've talked about doing work on thunderbird a bunch of times. I for one hope it doesn't happen.

After all, we all know the old saying that they have at mozilla: "If it ain't broke, redesign the UI with a terrible "modern" look and hamburger button while removing most of the customisability, and rip out some of the most important core features of the software, replacing it with something less powerful and incompatible, ignoring the cries of our users".

I guess on the positive side when they inevitably do turn thunderbird into dogshit, a fork will come along that does it better - the email client equivalent of waterfox. And maybe then we'll actually see some sensible development and an email client that's actually better than what we have at the moment.

Dr AntiSol, astrophysicist

Re: Thanks for the clarification, Smooth Newt

It's an age-old technique from before the days when "telemetry" was a gleam in a data-harvester's eye - It's been a thing since the 90s when HTML email became a thing. How it works is you embed an image tag in your HTML email pointing to e.g http://yourwebsite.com/tracker/tracker.gif?uniqueid=blablabla.

tracker.gif is actually a script which logs your IP address, user agent, unique id, etc so they can tell you've viewed the email and what client you're using, and then spits out a gif image.

The image that it spits out use might be a single pixel of transparency, so a user doesn't even see anything and has no idea that the sender has just tracked your activity and positively associated your IP address with a specific person (they also have a record associating the unique id with your email address / user account / name, depending on what info you've given them).

Any email client that doesn't block remote images by default is not your friend.

Free Software Foundation suggests Microsoft 'upcycles' Windows 7... as open source

Dr AntiSol, astrophysicist

if your memory is so bad that you need me to re-explain my points and you can't scroll up to re-read them then I'm afraid I'm not going to be able (technically, willing) to help you understand.

And I said "unity engine". Is it virtue signalling if I call you a fucking retard for not knowing the difference?

Microsoft: 14 January patch was the last for Windows 7. Also Microsoft: Actually...

Dr AntiSol, astrophysicist

Re: This won't be popular...

It's really sad and pathetic to see a human debase themselves like this. Particularly when it's done for a corporation. Even moreso a corporation like Microsoft.

This post basically amounts to "you are only a small creature. Microsoft doesn't care about you. You'll just have to accept their treadmill of forced obsolescence and having zero say in what they do to you. I didn't like it either at first, but you get used to it. You should just bend over and try to learn to enjoy it".

This attitude saddens me. I find it genuinely upsetting that a human being would have such little dignity and self-respect that they would accept this "reality". My personal position is that I would resort to violence before I ceded that kind of self-determination to a company that has demonstrated that it doesn't have my best interests at heart.

So they need to focus on NEW and THE FUTURE, not keeping past users happy.

See? They don't have your best interests at heart. There is no reason why you should upgrade that computer that works perfectly adequately for you, except that Microsoft needs you to so they can post a profit this quarter.

why does everyone believe that Microsoft should /needs to accommodate their legacy hardware based upon the legacy user's ideas?

I think it's probably because there's an innate sense of self-worth and self-respect in most humans. People realise intuitively that planned obsolescence is evil and want no part of it. Or maybe they just don't like being forced to shell out money to replace something that isn't broken and does what they need perfectly adequately. But I'm an idealist, I tend to go for the "self-worth" and "inherent good in people" explanation.

PSA: There are alternatives, people. There are even a few different alternatives. The most popular alternative is called Linux. And once you get over the initial learning curve (yes, there will be a learning curve, I'm not going to lie. It's hard to say whether you'll find it difficult or not, everyone is different. But it's not a huge and immediate learning curve, you can just click on familiar icons and use the web like you're used to. Some of the most popular software like chrome and firefox and VLC is the same on Linux. I believe that the vast majority of humans are smart enough to use it, if they try. There's a huge community who will be happy to do what they can to help you if you ask nicely and aren't rude), it's a much better OS. For one thing it's super-configurable and puts the user in absolute control, the way it should be - when Snake talks about how he wishes there were 2 intefaces choosable from the get-go, with linux there are probably hundreds of interface options. Maybe thousands. Of course many of those are obscure and a lot of them are really bizarre and/or terrible as far as most people are concerned. But if you want a touch interface or an interface that is purely keyboard-driven and doesn't use the mouse or one that looks as close as possible to windows 95 or XP or vista or your old Amiga, we've got you covered. In reality there are 3 or 4 "normal" interfaces (called "desktop environments") that are the most popular, most people use one of those. If you want my recommendation, I like the xfce interface, the default interface for xubuntu. It's a familiar, slick, powerful interface that runs well on older hardware.

Another thing is that Linux is totally free, there's no risk to trying it except your time. You can try it out without messing up your computer - if you don't like it just pop out the USB stick and reboot back into windows, no harm done.

It's even used by some professional content creators - I was just talking to a couple of photographers who swear by it :)

It runs quite well on older hardware. There are versions specifically designed for slower machines (a bonus of these is that they run really fast on high-end machines) You can even run it on really old and/or weird hardware if you're a nerd and into that kind of thing

they know that most current Windows users will stay Windows users

You could make this statement wrong. Take back control. Regain your dignity. At zero cost (ok, a little time learning some new things).

To be clear, I'm not actually suggesting that you try it. You're free to choose to try it or not. I'm not saying that you must try it, or insisting that you must like it if you do try it. I'm especially not calling you stupid (or anything else) if you don't try it or decide you don't like it for whatever reason. I believe in freedom. This includes the freedom to ignore this information and to willingly jump on that obsolescence treadmill if you think that's the best option for you. Only you can decide what's right fro you. Not me, and not Microsoft. All I'm doing here is making sure that everybody knows there are options that don't involve debasing yourself to the corporate machine. Snake's post seems to resign itself to a lack of alternatives and a ceding of one's dignity. There are alternatives. Your dignity can remain intact. If you choose to try.

SUBSCRIBE TO OUR WEEKLY TECH NEWSLETTER

Biting the hand that feeds IT © 1998–2020