1,161 karma · joined March 16, 2009
Before that, I'd been very happy with the Canon Pixma inkjets, and so I upgraded to the Pixma all-in-one (MX860, and later MX870), and I've sworn by this line. Reasonable ink/printing prices, great performance, fantastic network support.
Two years ago, we moved temporarily, so I bought a bargain basement Pixma TR4550 that checked off all of the boxes, but it was terrible. The first time my wife used it, she thought it was garbage. We made do, but I knew I wanted to change.
A year ago (after moving again), I had to add a requirement to the list. My new daily computer was a chromebook, which doesn't have scanning support, so I wanted a printer with some sort of scan-to-cloud solution. I was also eyeing color laser printers, which are now at reasonable prices, since I used to prefer laser printers before color became a requirement.
Enter the Brother MFC-L3750CDW, which I bought for $340. It's a color laser all-in-one with everything I wanted (including ethernet)... and it supports both scan-to-Google Drive and scan-to-email! This printer is nothing short of amazing. I've never printed from my phone before, but my wife and I both do this regularly now. I have two shortcut buttons in the interface, one for scanning directly to my email, one for my wife's. I have never installed a printer driver, every OS I've tried just prints directly to the thing (it's autodiscovered when adding).
In short, Brother laser printers for the win!
Go-based software is smaller, faster, easier to deploy, easier to update, easier to contribute to.
I find that the installation footprint of a Go-based service is usually in the 10s of megabytes or less, where the installation footprint of pretty much anything else starts in the hundreds of megabytes.
In the classic world of one or two servers for a small company, sure, the disk space is meaningless, but with containerized workloads, small images are great for quick deploy, and quick iteration.
T&G, the New Zealand kiwi company (founded in 1897 by an England-born immigrant to New Zealand) started marketing their fruit as the kiwi in the US in 1959. This was presumably to get a leg up on their Chinese competitors and to associate the fruit with New Zealand instead of with China.
* Source control for workflows/DAGs (using git-sync)
* Tracking/retries with SLAs
* Jobs run in Kubernetes
* Web UI for management
* Fully open source
I also use Argo Workflows, because I like its native handling of Kubernetes objects (e.g. the ability to manage and update a deployment as one of the steps), but it just doesn't have the orchestration/tracking side of things very well managed yetThe single best reason to use airflow is that you have some data source with a time-based axis that you want to transfer or process. For example, you might want to ingest daily web logs into a database. Or maybe you want weekly statistics generated on your database, etc.
The next best reason to use airflow is that you have a recurring job that you want not only to happen, but to track it's successes and failures. For example, maybe you want to garbage-collect some files on a remote server with spotty connectivity, and you want to be emailed if it fails for more than two days in a row.
Beyond those two, Airflow might be very useful, but you'll be shoehorning your use case into Airflow's capabilities.
Airflow is basically a distributed cron daemon with support for reruns and SLAs. If you're using Python for your tasks, it also includes a large collection of data abstraction layers such that Airflow can manage the named connections to the different sources, and you only have to code the transfer or transform rules.
They support plaintext tunnels for free, and encrypted tunnels starting at eight dollars a month.
I cam across the service when learning how to accept incoming traffic on kubernetes.
Right now, your DNS provider has a list of every website you visit (just not how many times you visited it). The shorter the DNS cache, the more closely this list matches your browsing behavior.
This definitely complicates the protocol, whether you put the burden at the resolver layer (needs larger cached) or at the level of authoritative servers (where'd they be effectively cooperating with root servers), but it's the only way to truly safeguard browsing data.
isolation layer: the piece that limits privileges and resource usage. (On linux, this is usually handled by cgroups and the kernel, but could also be handled by something like kvm for vm-based containers)
raw container configuration: Given an image and some metadata (like cpu limits), launch an isolated process. (On linux, this is usually handled by runc when working with cgroups)
container api daemon: Manage the list of container processes and available images. Provide a unix socket based API for manipulating isolated processes, launching, deleting, connecting, etc. (In the case of docker, they provide a daemon which abstracts the containerd daemon, or you can use containerd alone without docker)
container command line tool: Provide a user/developer interface to the three things above. This is the docker command. When you install containerd without docker this is the ctr command.
Docker, which is probably the most famous container distribution, pairs the docker command with the docker daemon to abstract away the containerd daemon, runc, and cgroups.
If you use containerd alone, you get ctr/containerd/runc/cgroups.
There's a standalone command line tool (crictl) which replaces both ctr and docker and can be used on top of either the docker daemon or containerd.
[1] Container systems seem to have a relatively complex abstraction over what is a relatively simple architecture.
It's measurable. Whether in total number of computers sold with an unlocked bootloader on that platform, or percentage of computers with unlocked bootloaders on that platform.
Or, if not in terms of devices, measure in terms of drivers. The number of board types with working open source drivers (or, lacking that, at least open specifications on the hardware) is much higher on x86.
And the, finally, look at Apple hardware specifically. They started x86 with a completely open platform (w/ Windows drivers shipped), and have slowly been addiing proprietary hardware (and software) to the platform to lock it down. Since the x86 launch, Apple has shipped many ARM platforms, not one of which was open.
However, I am now watching from the sidelines, as Apple computers are no longer an option for me. I cut my teeth on DOS (3.1 maybe?), then Windows, and started using Linux occasionally in 1996. As I was weaning myself off of Microsoft platforms towards Linux full-time, Apple introduced the x86 Mac (2006).
At that time, it felt like Apple cared about the "engineers" again. (Whether that be software development, scientific computing, etc.). Previously, all of the designers I knew swore by Apple, but serious computing happened on Windows or Linux.
But finally, this was Unix, with a beautiful GUI, on the open platform I cared about. (I've written in assembly, written an assembler, my own boot sector, gui toolkit in the VGA/MCGA days, so I care about x86). From 2006-2019 my primary computer has always been a Mac of some kind (always Linux on the server, Mac on the desktop). The last couple of years, I've felt pushed away from the Mac (hardware limitations, keyboard issues, locking down of hardware/software) and started experimenting off-platform again.
Apple seems to have forgotten lessons from it's own history (whether that be the initial problems with the Lisa, or the great success of the first open/unix version of its OS, or how iPhone usage exploded with the comparative opening up of the platform for development).
Don't get me wrong, this isn't anti-ARM sentiment, I now run an ARM linux server alongside my x86 server cluster. If Apple releases an open ARM Macbook, I'll be truly surprised, because I think Apple has been saying for awhile now that it no longer cares about an open computing platform.
So, goodbye Apple, thank you for the good years. I hope that this is just another wave, and you'll come back to open computing in my lifetime.
Luckily, this should be relatively simple. Anyone who wants to make this should be looking at the Chromium touchpad code (runs linux, and my Pixelbook touchpad is as good as a macbook touchpad. For example, the touch input filter: https://chromium.googlesource.com/chromiumos/platform/touch_... )
I think you'd get most of the quality with a kalman filter (A really cool filter that takes unstable input, and corrects it based on probabilities to give very high quality output).
[1] http://douglas.mayle.org/files/synaptics-two-finger-click.di...
I think Khan Academy is fantastic, and was going to donate until I saw this figure (verified). I think that it's entirely inappropriate to extract that much from the donations.
It's true that I left that out. It's not entirely clear to me whether the budget is unlimited or not in the God Box. Back in 2004 you could go higher budget than they did with the Opteron 850, but the market wasn't as clearly segmented as it is today.
> Threadrippers (as is the case for all mainstream and HEDT processors from AMD) can only use unbuffered DIMMs
I hadn't realized that. There are 32GB ECC UDIMM's on the market (e.g. https://memory.net/product/m391a4g43mb1-ctd-samsung-1x-32gb-...), but that raises the price to around $2k.
> If it's a capacity play, you can easily get more than 3x8TB if you install into the tower directly
Yes, but we're talking smart money, At the time, the NAS didn't exist, and with 10Gbe, the bandwidth is high enough to make it not worth keeping in-case.
I personally think the sweet spot is somewhere in the $2k-$3k range. That gets you 16 cores, 128GB ECC, 2TB NVME, 10Gbe, RTX 2070/2080
It's interesting looking at the breakdown, because in some cases prices are similar, and I think in some other cases, the smart money has changed.
For instance, a really high end motherboard (X570 or threadripper) will still be in the $500 range, but there are now available options going up to $800.
The closest CPU option is 32 cores 3970X TR, but it runs $2000, not the $2400 they spend (again, 2020 dollars)
256GB of DDR4 ECC RAM (instead of 4GB) will cost about $1200, not the $1350 spent.
GPU options, however, will run into $1200 for an RTX 2080 Ti rather than the $800 they spent.
SCSI cards are no longer necessary, as NVME is the smart play, and PCIE 4.0 is the high-end play.
They only spend $600 on the system drive ($827 if you include the controllers), but for a God Box, I'd put in an Optane PCIE card for $1300.
For $1440 in storage drives, you're either looking at dual 4TB SSDs if you want SSD speed, or an external 4-bay NAS with 3 8TB drives.
Optical drives are out, which just leaves backup and case. I know nothing about tape storage, so I won't comment on that, but in the case world, you now have interesting options like the TureMetal UP10 which allow you to run this system entirely fanless, but for somewhere in the $700-$1000 range.
Credit transaction fees actually make lots of sense and are grounded in the actual cost of the financial product. As a merchant, you can choose to accept only debit cards to avoid the cost
If you look at this as a series of consecutive operations, every odd operation grows by a little over three, and is guaranteed to be followed by an even operation. Even operations shrink by a little more than three, so all that's required is to compare the cardinality of those two offsets to see whether continued operations are growing or shrinking. In the case of odd operations, as the infinite series of operations continues, the offset gets smaller and smaller. In contrast, the size of the offset for even operations doesn't change as the series of operations continues, which should mean that numbers shrink more than the grow, just ever so slightly.
(To understand the even operations, you have to look at expected values. 1/2 of all even operations will produce an odd operation after dividing by two, 1/4 after dividing by four, 1/8 after dividing by eight. The infinite sum (1/2)^2n converges to 1/3, with an actual value of 1/3 - (1/3)*(1/2)^2n.
As such, they should make the salary requiement something like twice the rate of whichever is greater: market rate for the role, the highest salary paid to any non-H1B employee at that company in the same role.
At that point, you can relax (not remove) the H1B cap, because it makes it cheaper to hire locals, so companies will only seek out H1Bs when there really are talent shortages.
While it's quite possible that among all news sources, Jonathan Cook seems to have worked for the one horrific news source in the world, and is doing us a service by constantly exposing their acts, Occam's razor would suggest otherwise.
I've read a sampling of his articles, and he seems to be either an extremist, or someone who wishes to profit by appearing to be one. His posts seem mostly to be lacking a bit in rational discourse (with gems like "As far I can tell, none of the facts in the Guardian’s story is untrue. But that does not stop it from being a blatant lie"), and without much diversity in subject.
Et-tu brute?
In any case, an actual response to the idea of an ad hominem attack:
Reputation matters, so does context, and words do not stand alone. When taking in speech, it is important to understand the motives of the speaker, to be aware of their level of credibility. This isn't anything new or special, I learned it in high school history. People are biased, and you need to be aware of those biases when evaluating their speech.
Some examples: 1) If someone tells you, "Come in, I'd like to have you for dinner", there's a difference if that person is your father-in-law or Jeffrey Dahmer. 2) If someone tells you that some person X should be freed from charges, there's a difference if it's coming from that person's lawyer, or from the victim of the alleged crimes. 3) If you're about to cross a bridge, and one person says it's not safe to cross, and a second says it is, it makes a difference which one of the two is a structural engineer.
In the case of this particular article, I began to read it and came across several statements that were attempting to gloss over or ignore reported facts. At this point, I wanted to know if it was the result of sloppy reporting (maybe this was some personal rant), or perhaps part of a structured agenda, which is when I started to research the author. I found out that the author is a regular columnist for a company run by a known funder of racist hate groups that itself funds racist and hate speech, with poor journalistic practices.
I personally believe that we have a choice in how we earn a living (google death star contractors), but even if you don't, I think it's only fair to the reader to be aware of the writer's biases.
There were two women who both filed similar complaints with the police, and neither of them has changed their allegations.
You can read the facts of the charges yourself, and the established timelines. Whatever you feel about the charges, the timeline of events is well-established and credible. Whether or not he is guilty of rape is for the courts to decide.
You have a few major camera systems to work within, but aside from that variable, body, storage, mount, flash, lenses are modular and exchangeable in a very usable way.
When it comes to computing, most IO could be made readily modular, as PCIe is quite stable, and the bandwidth needs are easily exposed.
Where the problem comes, however, is making compute and RAM modular. Connecting multiple compute units with multiple RAM elements is a completely different problem than IO expansion, as the devices are much more sensitive to trace length and layout, and much higher bandwidth.
If the expected/desired Mac Pro is truly going to be fully modular, then I suspect it will have to be NUMA, and have a compute backplane separate from IO.
I'm imagining compute blocks that have RAM plugged directly to CPU that can be connected to the compute backplane (something like QPI, UPI, or InfinityFabric) that also has an IO block attached. One big problem is that these interconnects are proprietary, which means any IO unit plugged into that backplane will only be useful for that brand of processor.
The problem with this, however, is you lose access to CPU-exported PCIe bandwidth, which is very valuable (e.g. for GPU links). If you don't want to lose that, than you're back to a compute unit with one point of modularity, the RAM, a second point of modularity, PCIe/USB4, and a third point of modularity, CPU interconnect/backplane.
It's probably possible to deliver a design that enables this, but it's a very tough problem, and hasn't yet been solved.
Motherboards used to be pretty standard fare: CPU socket, RAM slots, expansion slots, with differentiation coming from peripheral, BIOS, and stability/overclockability. Nowadays, CPU manufacturers have taken over a segment of the differentiation (chipset, or platform capabilities), so most of the differentiation is in aesthetics and branding. In this world, the grab bag of peripherals become a tradeoff, the cost per unit versus the percentage of market share it opens. Manufacturers have to increase their overall cost per unit in order to get access to the users who each have their own must-have peripherals.
Something like this moves things in the right direction by removing a lot of the overhead in motherboard manufacturing. If you look at the bandwidth required for todays peripherals, even in the most maxed out possible configuration, you won't be able to saturate an x16 PCIe 3.0 link: * 1.2 GB/s 10Gb Ethernet * 3.0 GB/s 6 SATA ports * 9.6 GB/s 8 USB 3.1 ports * 0.2 GB/s Wifi 6 * 0.1 GB/s Audio
The Utopia concept allows for multiple mini-PCIe blocks, but you could simplify it and just make the case one big PCIe device that handles IO.
USB4 goes a bit beyond that, with each port using up to an x4 PCIe 3.0 link, so you might want have direct access to motherboard USB4 slots (especially since this allows exposing integrated graphics cards via alternate mode).
I hope one day to see the motherboard simplified to a plug-in card which holds CPU socket and RAM sockets, and exposes PCIe and M.2 slots for connectivity.