Stories
Slash Boxes
Comments

SoylentNews is people

Log In

Log In

Create Account  |  Retrieve Password


Heavily armed bowman kills five in Kongsberg

Posted by Runaway1956 on Thursday October 14 2021, @03:08AM (#8846)
41 Comments
Code

Assailant with bow and arrows kills 5 people in Norway
By JAN M. OLSEN yesterday

COPENHAGEN, Denmark (AP) — A man armed with a bow fired arrows at shoppers in a small Norwegian town Wednesday, killing five people before he was arrested, authorities said.

The police chief in the community of Kongsberg, near the capital of Oslo, said there was “a confrontation” between officers and the assailant, but he did not elaborate. Two other people were wounded and hospitalized in intensive care, including an officer who was off duty and inside the shop where the attack took place, police said.

“The man who carried out the act has been arrested by the police, and there is no active search for more people. Based on the information we have, there is one person behind this,” Police Chief Oeyving Aas said.

Acting Prime Minister Erna Solberg described the attack as “gruesome” and said it was too early to speculate on a motive. The prime minister-designate, Jonas Gahr Stoere, who is expected to take office Thursday, called the assault “a cruel and brutal act” in comments to Norwegian news agency NTB.

Police were alerted to the attack around 6:15 p.m. and arrested the suspect about 30 minutes later. The community of some 26,000 inhabitants is about 66 kilometers (41 miles) southwest of Oslo.

According to police, the suspect walked around downtown Kongsberg shooting arrows. Aas declined to comment on reports that the man used a crossbow, saying only there were “several crime scenes.”

The man has not been questioned yet, Aas said.

Norway’s domestic security agency PST was informed of the assault.

Town officials invited people who were affected by the attack and their relatives to gather for support at a local hotel.

Mass killings are rare in Norway. The country’s worst peacetime slaughter was on July 22, 2011, when right-wing extremist Anders Breivik set off a bomb in the capital of Oslo, killing eight people. Then he headed to tiny Utoya Island, where he stalked the mostly teen members of the Labor Party’s youth wing and killed another 69 victims.

Breivik was sentenced to 21 years in prison, the maximum under Norwegian law, but his term can be extended as long as he’s considered a danger to society.

When assault bows are outlawed, only outlaws will have assault bows!

https://apnews.com/article/oslo-norway-bow-arrow-attack-24095a6b0e2bd26d08a145078d242529

Another source with vidya https://www.dw.com/en/norway-bow-and-arrow-attack-leaves-5-dead/a-59497283

One more source, with an extra detail or two - the bowman lived in the town, and he is 30-something. https://www.theguardian.com/world/2021/oct/13/several-killed-bow-and-arrow-attack-norway

A hint that police are looking for "other weapons" here. https://mycampusgist.com/2021/10/13/norway-bow-and-arrow-attacks-live-five-dead-and-several-injured-as-man-goes-on-gruesome-rampage-in-kongsberg/

SSL Redux

Posted by mcgrew on Wednesday October 13 2021, @02:25PM (#8845)
25 Comments
Code

Back in March I asked you guys if I should put SSL on my mcgrewbooks.com site, since it appeared that it would raise my hosting cost by $25 a year, and there was no technical reason to have it; there is no personal information collected whatever.
        I gave a lot of thought to the comments for months, and yesterday decided to go ahead and spend the money; I just put three grand on my mortgage principal. So I went to R4L’s web site to find where I could add SSL. I couldn’t find it.
        However, their help is actually a Canadian who helps through text chat, who informed me that paid hosting came with SSL, I simply had to turn it on.
        Well, it wasn’t that simple, as they’re upgrading their tools and I ran across a couple of 404s. But I finally found the correct widget to click, so the unnecessary lock is no longer broken.
        My other site still has a broken lock, but it’s a “free” site. Registration there is $15, but you get ten megabytes of hosting. Those are the kind of site that an extra $25 buys SSL, and you might as well pay for hosting. It isn’t much more, and it isn’t hard to fill ten megs. Almost all of the images at mcgrew.info are either on Wikipedia (which reminds me, I should donate again) or mcgrewbooks.
        I wish I would have known that five years ago! But I’m still more than happy with R4L.
        Since R4L is Canadian, whose internet laws apply? America’s? Canada’s? Both? Neither?

VM, much?

Posted by Runaway1956 on Monday October 11 2021, @03:09PM (#8822)
14 Comments
Software

Playing around with VMWare and virtual machines, I literally stumbled over VMWare Operating System Optimization Tool. It appears that this tool is free - that is, I wasn't required to create an account, or to sign in, or anything at all.

https://flings.vmware.com/vmware-os-optimization-tool

The VMware OS Optimization Tool helps in preparing and optimizing Windows 10 and Windows Server 2019, 2016 systems for use with VMware Horizon. For Windows 7, 8.1, and Server 2012, 2012 R2, an older version (b1130) of the OS Optimization Tool is available for download.

At a high level, the process of creating a golden image VM consists of the following steps. A step by step walkthrough of the complete process, is given in the Creating an Optimized Windows Image for a VMware Horizon Virtual Desktop guide.

The OS Optimization Tool helps with key steps in this creation process and also with applying Windows updates to optimized images:

Optimize – Analyze, select optimizations, and apply them to the Windows image.
Analyze - compares the settings of the template against the machine settings.
Common Options - quickly and easily choose and set preferences to control common functionality.
Optimize - applies the chosen selections.
Generalize - helps in running the system preparation tool (Sysprep) by generating a customizable and editable unattend answer file.
Finalize - automate and help with some of the common clean up tasks that are typically run just before using the prepared image.
Update - re-enable Windows Update functionality on an image that has previously been optimized and had this disabled.
Additionally, the OS Optimization Tool comes with a Microsoft Deployment Toolkit (MDT) plugin to allow the whole golden image build process to be automated. This includes the installation of Windows, VMware Tools, Horizon agents, and applications. See Microsoft Deployment Toolkit Plugin for more detail.

For more information on how to use the OS Optimization Tool see the VMware Operating System Optimization Tool Guide.

Doesn't matter if you set a Windows machine up for gaming, for office, for hacking, or whatever, you probably want to optimize your machine. Basically, this is the ultimate optimizer. For instance - firewalls. You're creating a machine inside of a machine, probably using NAT, behind a router, behind a modem, and you may or you may not ever connect to the internet with the machine. Why enable a firewall at all? This optimization tool disables firewall, and it does so thoroughly. It steps through group policy and the registry, ticking off one after another policy and/or HKEY.

I looked at one set of keys when I got to the end of the optimizations list, regarding "repair corrupt windows installers". There were 7 separate HKEYs to turn off for that one "feature". Seven keys governing one little item. And, the optimizer set all 7 of them when I told it to finalize.

The optimizer can be run pretty much automatically, if you've a mind to do so. Just select the 'common' optimizations, tell it to analyze, then finalize the settings. By default, you'll get all of Microsoft's silly apps, you'll nail telemetry, advertising, useless background services, Windows update, Windows animations, Aero, and so much more.

To grasp the capabilities, you need to download it into a Windows VM, fire it up, and walk through the menus. Just look at all the stuff it offers - no changes to your system will be made unless and until you order it to make changes. And, it only makes those changes you specify.

It takes awhile just to walk through the menus - there are that many of them. Given that you know what you want from your machine, and given that you've mucked around with optimizing machines in the past, you'll see that this tool goes further in depth than you've ever gone before!

The site's main page, https://flings.vmware.com/

Flings are apps and tools built by our engineers and community that are intended to be explored.

EDIT: After a test drive, I believe the VM is faster than it would be installed on bare metal. A couple of applications were slow to launch, but once launched, it's just zoom-zoom!

https://www.youtube.com/watch?v=O0ikW7pVa_I
And, I think I'll watch all those commercials - again, lol!

Enjoy!

EDIT: When run against Windows 11, the "compact select Windows executables" option hangs. Workaround is to go through all the preparation, then on the finalize page, scroll down and unclick the compression option. The optimizations then proceed as normal.

Make Your Own Umbrella Skirt

Posted by cafebabe on Monday October 11 2021, @10:17AM (#8813)
10 Comments
Hardware

(This is part of an occasional series which began with Make Your Own Camera Tripod and Make Your Own Boxes With Rounded Corners.)

Tools: Scissors, needle.

Materials: Broken umbrella, elastic, sewing thread, (optional) glue.

A while back, I invited my friend to a beginner ballet class. I hoped my friend would become a regular and that we could meet often but unfortunately not. My friend was satisfied to attend one class and never repeat it. Unfortunately, this one class remains notable. My friend wore a home-made circle skirt during the class. Furthermore, my friend chose to wear this with the most incongruent velor leggings. It was very anomalous and it obviously made an impression. About 16 months after this class, the dance teacher asked me "How's your friend? Pieris? The one with the skirt?" Oh, jeepers. Said teacher had seen hundreds of new people since Pieris and yet few, if any, had made an equal impression.

Pieris is obsessed with making circle skirts. When Pieris isn't making circle skirts afresh, Pieris is often making retrospective improvements or repairs. Pieris has identical length circle skirts in 15 plain colors and various designs which are striped, checked and patterned. If the material is available, Pieris has a circle skirt in Gingham black, red, yellow, green, blue or purple - in 1/4 inch, 1/2 inch, 3/4 inch, 1 inch, 1+1/2 inch and 2 inch widths. I've made four circle skirts with Pieris and, unsurprisingly, I've received a circle skirt as a Christmas gift from Pieris. I'd be only mildly surprised if Pieris made circle skirts in all official tartan clan patterns. Indeed, Pieris had at least five tartan patterns in a collection of more than 160 designs. It would be fair to say that my friend's primary interest in life is circle skirts and it is possible that my friend has only appeared in public wearing a home-made circle skirt for at least ten years.

My friend, Pieris, now looks beyond pristine fabric for clothes-making. A bonkers example came, at a bus garage, in the rain, when Pieris saw a broken, discarded umbrella in a litter bin - and salvaged it to make a leopard print circle skirt. When you only have a hammer, every problem looks like a nail. When you're obsessed with making circle skirts, anything may be the next circle skirt. Unfortunately, this type of insanity is contagious. I mentioned umbrella skirts to friends and they thought it would be funny to make a skirt from a stereotypical red, yellow, green and blue golfing umbrella. It was rather uncanny to find such an umbrella on the way home; especially when the weather wasn't wet or windy. That's how and why I started salvaging discarded umbrellas. After this bizarre incident, I've collected more umbrellas; mostly large black ones. I intend to use them as material for a junk couture beginner sewing class but opportunities to teach have been limited. Given it has now become a trendy activity to recycle unlikely materials into clothes, I'd thought that it would be worthwhile to forward some wisdom.

Firstly, very large umbrellas are preferable unless you are making child size clothing or a very short skirt. A zipper is rarely practical with thin plastic and therefore the skirt is likely to be elasticated. This requires a waistband circumference which fits snugly over hips - or wider to prevent tearing. This is likely to reduce length by 6-8 inches (15-20cm) - or significantly more if the elastication is to be hidden within the material. Actually, elastic is likely to be visible unless you begin with a particularly large umbrella.

Secondly, a dark or highly patterned umbrella is preferable. For example, leopard print. White or pink umbrellas tend to be too revealing - and especially so when wet. Short or bright umbrellas work as an underskirt to add volume but they are not suitable on their own. A bright underskirt may be preferable with dark elastication to avoid unsightly seams. In all cases, 3/4 inch, 1 inch, 2cm or 2.5cm wide elastic is highly preferable.

Thirdly, an umbrella is invariably discarded because the frame is busted. The covering may have light scuffing but is otherwise in good condition. If the pattern is quite busy then minor holes can be repaired with glue. One exception to covering quality - which I have discovered the hard way - is that an umbrella discarded by a fence, wall or tree may be covered in dog urine. If the urine has dried, this may not be immediately apparent. A busted umbrella found on a park bench or in a litter bin is very unlikely to have this problem.

Fourthly, in the season when discarded umbrellas are most plentiful, it may be prudent to carry sharp scissors. This eliminates awkwardly carrying a broken umbrella frame. Removing the material from the frame is a relatively dangerous operation which may be hazardous to eyes. I've found that a relatively safe method is to hold the umbrella handle under one arm while cutting the fabric from the frame with the other arm. Furthermore, cut at the bottom of the umbrella. This keeps your head near to the fulcrum of the umbrella rather than the most dangerous stray ends. The material in middle of the umbrella can be cut very sloppily because a larger hole will be made for the waist.

Fifthly, opinions differ regarding umbrella trimmings. Pieris removes plastic or metal ends which affix the covering to the ends of the umbrella spokes. I prefer to keep them because it weights the skirt and reduces inadvertent blustery moments. Likewise, Pieris removes any strap which is used to keep an umbrella furled. I believe that straps remain convenient for storage. However, it should be noted that I'm vastly less experienced and it should be particularly obvious that I've spent less time considering umbrella skirts in detail. For a beginner, leaving the strap eliminates one source of error and, anyhow, if you're going to wear an umbrella, own it and don't leave any doubt. (Who knew that umbrella skirt manufacture had ideological differences?)

Finally, an umbrella skirt is very suited to wet weather given that it is invariably water-proof and/or quick drying. Plastic material also matches water-proof nylon and vinyl clothing. A particularly suitable combination is red nylon jacket, black umbrella skirt, red leggings, black boots and, of course, a black umbrella in good condition to match the skirt.

Seventy Six Broke Bones

Posted by mcgrew on Friday October 08 2021, @01:45PM (#8788)
5 Comments
/dev/random

Apologies to Willson Meredith, The Music Man
To the tune of 76 Trombones

Seventy six broke bones at the hippie raid,
With a hundred & ten Black corpses close at hand.
They were followed by rows and rows,
Of wounded pimps and whores,
The stoned of every famous band.

Seventy six cell phones caught the morning fun,
With a hundred & ten cop cars right behind.
There were a thousand creed,
All of them smoking weed,
There were horns of every shape & size.

There were copper bottom timpani in horse platoons,
Thundering, thundering, all along the way.
Double bell euphoniums and big ass loons,
Each big loon having its big fat way.

There were fifty mounted canons in the battery,
Thundering, thundering, louder than before.
Clarions of every size,
And strumpets who'd improvise
A full scream higher than the whore!

Seventy six broke bones hit the counterpoint,
While a hundred and ten cop guns blazed away.
To the rhythm of Harch! Harch! Harch!
All the kids began to march,
And they're marching to the courthouse today!

My foray into the walled garden (macOS)

Posted by Runaway1956 on Wednesday October 06 2021, @11:15PM (#8766)
11 Comments
Soylent

I've made mention that I have virtual machines on my computer. VirtualBox, and VMWare Workstation are work environments for some of you, but for me, it's kind of a hobby. Meaning, I'm not an expert, but I enjoy dabbling with these machines.

I've attempted to get a macOS running in the past, and always met with failure. Partly because I don't understand the virtualization well enough, partly because I have no Apple hardware, partly because of licensing issues, and most especially because I run AMD CPUs. Apple has never used an AMD CPU it seems, so macOS is not at all happy when it senses an AMD in the hardware.

This latest attempt has taught me quite a lot about the virtualization magic. Like, never put the eye of newt into the cauldron before the 1/2 pint of comodo dragon slobber, or it will blow up in your face.

So, I got Big Sur 11.0.1 booted up, was greeted with a graphical installer, and from there followed the directions in several videos on Youtube. (What's with all those people with Indian accents doing the same tutorials again and again?) After several hours, I actually booted into the desktop. Geez, LOUISE!! It lags and drags, and is pretty much unusable. Spend more time trawling the inert-net, failing to find useful information. It's very much inert when searching for information on macOS and virtual machines. If you happen to own an Apple machine, then VMWare Fusion actually supports you, with Apple's blessing. But, home brew hardware has zero support, anywhere.

Eventually, I found a .dmg of Big Sur 11.5.1, and got that loaded into my existing VM. Hours pass, and I'm finally booted into 11.5.1. It's a different world. It seems that Software Updater was the primary culprit causing all the CPU race conditions inside the VM. With 11.5.1 the Sofware Updater is better behaved, limiting itself to about 25% of CPU usage. That is, I can do stuff. (Failed to mention that the VM is provisioned with 1 processor with 8 cores, and 16 gig of memory.)

Oh yeah. Did I say "walled garden"? You don't simply browse around the web, downloading random installers to build your own flavor of macOS. Visit the Apple store, select some random thingy to install, and you are halted in your tracks. You've got to have an Apple ID to download even free stuff. OK, well, I think I have an old ID laying around. Think hard, come up with an email address that was probably associated with it, and try to log in. Huh - my account is frozen. No explanation why, it's just frozen. Try the recovery methods to get into it - whoops, nothing works. Three attempts, and I give up. Just create a new Apple ID.

So, I'm on the Apple page, signing up, and it wants a cell phone number. I don't HAVE a cell phone. Apple don't care, my new ID can't be created until I go buy a phone - or something. Oh yeah - wait a second. I have a Google Voice account! Use that phone number? HEY - IT WORKED!! Cool.

So, I'm in the Apple store, using Safari. For those who don't know, Safari has a lot of suck built into it. Not sure if there's as much suck as Internet Explorer had. Seems to be nearly the same suck that Microsoft Edge has. So, my first "purchase" will be an internet browser. Or not. Can't find Firefox, in any flavor. Chrome is there, in an official Google version - nothing that has been de-googled. I don't even recognize most other options. Oh, Maxon is there, but I can't remember it's strengths and weaknesses on Windows, don't really want to mess with it.

Back to the inert-net. Do a search for 'macOS firefox .dmg'. What do ya know, I found it! While it's downloading, I do similar searches for other browsers. I haven't become a fan of Brave browser, so I skip over that one, and grab Vivaldi.

At this point, I discover a major problem with virtual machines and disk storage and mac. I gave 250 GB of disk storage to macOS. Vivaldi is almost a gig, unpacked. Firefox is a little over 1/2 gig. At this rate, I can run out of disk space pretty quickly!! And, at this point, I notice that Software Updater is nearly finished downloading Big Sur 11.6, and put everything away, prepared to reboot several times, etc. Thankfully, I'm not seeing CPU race conditions anymore - the desktop is stable, if not snappy. It's good that I can fall back on my "real" desktop to do things.

Updater failed, for some reason. I guess I'll have to figure out how to download the .dmg and update manually. But, first . . .

Neither Firefox nor Vivaldi look especially familiar. Both conform to the Apple windowing system, maximize and minimize are done like all other macOS windows. I guess I could get used to it, but I'm not going to be here all that very long. Firefox unusable, using 305% of a CPU . . . wait it out for a bit. After boiling over, Firefox settles down to using 98% of one CPU. WTF is it doing behind the scenes? It's already told me that it's up to date, and I only have two tabs plus settings open. Probably going to dump it for being a resource hog!!

Vivaldi is much better behaved. 7 threads appear in activity monitor, totalling about 115% of a CPU. Excessive, maybe, but far less than Firefox grabbed for itself!

Off to the app store, again. Damn, I just gotta have 'Turnip Boy Commits Tax Evasion'!! /sarcasm The app store is filled with stupid drivel. I guess other app stores are as well.

Oh, a file manager. I stumbled across Fork Lift in the app store. Dual panel Norton Commander-like that many Windows users and virtually all *nix users will readily recognize. The free version lacks features available in the paid version, but it makes a pretty decent file manager/browser. The file system on macOS matches the file system on any other Unix-like system. You won't gain that clarity using Apple's finder app. Finder, or Spotlight, or whatever name it goes by is an abortion as file managers go.

Oh, cool find here, https://imageoptim.com/mac I pilfered an image for my Apple account. Of course, the image is tagged with "this image was stolen from www.randomsite.nut". Imageoptim is totally free, licensed under GPL2. Now someone will have to do a reverse image lookup to learn that I stole my account image. Also available for Linux and Windows. Also installed it on my Linux machine from stable repo, I may want it in the future.

I suppose I should put a disclaimer here: Doesn't matter what OS you run, downloading and installing random applications from the internet is not a really good idea. Do your due diligence before you download something. It's best to download from known, trusted sources, don't trust the myriad of Cnet-like sites that claim to have scanned for viruses.

That said, the Walled Garden is somewhat less walled than I thought it was. With little effort, I've installed multiple applications from non-official sources. I suppose that I could get used to a real macPRO. If someone offered to buy me one, or I won some stupid online lottery, I'd take it. But, almost any decent laptop or desktop with Linux installed will perform better, IMO. In fact, Youtubers have built their won Hackintosh computers that beat Apple's offerings on any benchmark one cares to use.

As mentioned, I've spent hours on this VM already. I'm not terribly impressed with macOS, nor does my VM perform very well. I'll keep it around, and when I find time, I may dive into the workings of VMWare again. With improved performance, it could be almost enjoyable. But, no way will I join the hordes of Apple Fanbois who willingly fork over real money for mediocre hardware, and mountains of near-useless apps.

Gangsta Biden

Posted by Runaway1956 on Friday October 01 2021, @06:15AM (#8700)
92 Comments
News

Chipman says his ATF nomination was a ‘gangster move’ by the White House
During his confirmation process for ATF director, David Chipman said very little publicly – even turning his Twitter account to private. Now that the White House has withdrawn his nomination, Chipman can’t seem to shut up, and he’s got nothing good to say about Biden’s team, who he claims left him hanging out to dry.

In a recent interview with The New York Times, Chipman said he felt abandoned by the administration and on “an island” when pro-gun groups began attacking him. No one from the White House, he claimed, even bothered to call.

“Either this was impossible to win, or the strategy failed,” Chipman told the newspaper, adding, “This was a failure.” Later in the interview, Chipman described nominating someone like him – a lifelong anti-gun activist – as a “gangster move” by White House staff.

Once his nomination fizzled, Chipman found it “unusual” that no one from Biden’s team offered any options. “In the back of my mind, I always thought that there would be a Plan B, but so far there hasn’t been,” Chipman told The New York Times.

In the interview, Chipman confirmed he has returned to work at Giffords – which we revealed in a story published Monday. The story also showed how Giffords are using Chipman as a fundraising tool.

Delusional

Many pro-gun groups contributed to Chipman’s demise, including the National Shooting Sports Foundation but, ultimately, his nomination was killed by hundreds of thousands of American gun owners who contacted their senators and told them to reject Biden’s pick.

Still, Chipman remains fixated on the NSSF and its senior vice-president for government and public affairs, assistant secretary and general counsel, Larry Keane.

“Larry Keane put up a photo of me that he knew was false, trying to get me killed,” told the newspaper.

The photo purportedly showed Chipman posing on the burnt remains of the Branch Davidian compound after the bloody siege in Waco, Texas. Once NSSF and dozens of other websites discovered the agent in the photo was not Chipman, the photo was taken down. Keane told the Times Chipman’s death threat allegations were “categorically false.”

Personally, I believe the allegation that Keane, the NSSF or anyone else tried to get him killed is evidence that Chipman is in dire need of serious psychological help.

Gangster?

To be clear, nominating a paid anti-gun activist to oversee the lone federal agency tasked with regulating the firearms industry was not gangster. It was stupid and meant to send a message.

Chipman’s nomination – likely the brainchild of Susan Rice – was intended as an insult to American gun owners, and that is exactly how it was received. Of course we responded forcefully – what did the White House expect? This is our lifestyle they have chosen to attack.

The Chipman saga reminds me of when I was a young boy on my uncle’s farm and accidentally touched an electric fence. I got zapped and learned never to do that again. By nominating Chipman, the Biden-Harris administration touched the fence and got zapped hard. Unfortunately, I doubt they learned a lesson. If they continue to target gun owners, they’re destined to get zapped again and again.

https://www.saf.org/chipman-says-his-atf-nomination-was-a-gangster-move-by-the-white-house/

Well, come on Dave! We've known for years that the Godfather takes 10% of everything his gangsta son takes in. Or is it 30%? Maybe it's half. China is busy making the Biden Family rich enough to rival the Genovese or the Gambino families.

But, Chippy don't get off the hook that easily. He's spent most of his adult life whoring himself to the gun lobby. He's just lucky that Gabby Gifford is almost brain dead, and is willing to hire his ass.

Video Codec: 1000 Walsh Tiles

Posted by cafebabe on Tuesday September 28 2021, @05:10PM (#8665)
3 Comments
Software

For previous unconventional ideas regarding video codecs, see:-

My plan for a video codec is quite vast. Ultimately, it is a replacement for XWindows and Wayland. However, I like to keep it real. Therefore, I've been thinking about the minimal subset. I believe this would be known as MVP [Minimum Viable Product]. In my case, the MVP runs on a Commodore 64.

There are a few fundamental concepts about video encoding and I question some of them. The first concept is lossless/lossy compression. The quantity of video is usually too vast to store, transmit or display without whittling it down somehow. Traditionally, this is described as a lossless or lossy conversion. However, this misses a more fundamental concept of content aware and content oblivious compression. Only content aware compression can be lossy. Indeed, video compression is often arranged into two tiers which cover both cases. The interesting tier is the content aware compression where several liberties are taken with the raw data. The boring tier is often mentioned in passing as "entropy encoding". This will do the tedious task of, for example, Huffman compressing the quantized DCT [Discrete Cosine Transform] wave amplitudes.

This leads to the second concept: image kernels. Images have spatial coherence and video additionally has temporal coherence. One pixel looks like its neighbors. One frame looks like the next. Such properties can be used for many types of trickery. A fundamental concept of many video encodings is that individual pixels cannot be updated. Unfortunately, resolution has often been the enemy of quality. Cinepak AVI allowed 2*2 pixel blocks to be updated. Unfortunately, the specification of Cinepak is vague and the color-space is a bodged binary approximation of YIV. Regardless, it is possible to play Cinepak AVI on a 8MHz ARMv1. By the time we get to JPEG and MPEG1, the H.261 DCT is commonplace and the 8*8 transform is often used with 16*16 macro-block subsampling. HEVC moved to 2*4 and 4*4 blocks (and popularized a natty variant of a quad-tree) and we might get back to 2*2 blocks in future codecs. (There is no need for a 1*1 kernel because that would be lossless and therefore redundant.)

Via the tile mosaic theorem, a two dimensional variant of the hand waving Central Limit Theorem, it is possible to construct a tile agnostic image/video codec such that tiles are chosen to minimize or eliminate encoding error. Furthermore, subsets may be selected for particular applications, such as low bandwidth encoding, low latency encoding, symmetric encode/decode, minimal energy consumption, maximum resiliance or compatibility with legacy formats. More choice means a better fit. However, more choice does not imply over-choice.

This leads to the third concept: block transforms. I've recently discovered a very crude 16*16 image kernel which can be encoded and decoded on 8 bit hardware. It comes from questioning the prevalence of H.261 DCT. When the Joint Photographic Expert Group crowd-sourced an image encoding, the result was used extensively in JPEG, MJPEG, MPEG1, MPEG2, MPEG4 and elsewhere. This trick has only recently fallen out of fashion after more than 25 years of use. There are many ways to encode waves and they are very loosely equivalent. This includes Maclaren expansion, Taylor series, Fourier Transform, Discrete Fourier Transform, Cosine Transform, Discrete Cosine Transform, various techniques involving waves, chirps, wavelets and chirplets - and Walsh functions. Many of these only work in one dimension. Thankfully, in all cases, two dimensional data can be reduced to one dimension with a zigzag or spiral transform. Maclaren and Taylor are useless for image/video because they don't work with discrete pixels. Nor do they lead to any useful reduction of data.

Fourier has the disadvantage of producing two sets of co-efficients: one set for sine and one set for cosine. Some audio codecs, such as early versions of RealAudio, solved this problem by discarding all phase information. This reduces data by a factor of two while leaving one set of ordered co-efficients. Unfortunately, trumpet and drums sound particularly horrendous after this reduction. While this is borderline acceptable for low bandwidth audio, it doesn't work for imagery. DCT solves this problem. The half steps of cosines leads to one ordered set of small, integer co-efficients which preserve phase information. Technically, DCT could be applied to audio but more advanced techniques had already been discovered. Indeed, you probably wouldn't apply DCT to audio because the processing power requirement is O(n^2) for n audio samples. Predictive encoding is preferable for audio. Meanwhile, image compression with chirps, wavelets and chirplets were a minority interest due to the required processing power. Although, admittedly, chirplets are extremely useful for photo stitching. It is mainly through JPEG2000 and the Red One camera that lossless wavelet spirals went from a spy satellite image format to a film industry intermediate format.

Starting from the question "Can I play video on a Commodore 64?" the answer is "Yes, but the quality will be appalling." A Commodore 64 doesn't allow independent choice of background color within each tile. This will result in horizontal banding; similar to the limitations of Cinepak. Ignoring the Commodore 64's four color per tile, half resolution mode, the remainder falls into the neglected case of Walsh tiles. Quality is going to be terrible for multiple reasons. Firstly, it can only represent the most prominent wave whereas JPEG DCT can represent a collection of waves. Secondly, Walsh tiles can only represent hard edges. In the general case, smooth edges are preferable. Thirdly, pixel ordering determines fringing artefacts and there is no good ordering which eliminates all cases of fringing. Minority cases where a hard edge is preferable, such as titling, will also be bad because the fringing is bad. The easiest way to minimize these undesirable interactions is to have a hierarchical encoding; much like hierarchical JPEG. Unfortunately, this isn't possible on the target hardware. Fourthly, There is also the problem that an 8*8 transform only leads to 64 encodings. That's six bits per byte. That's highly undesirable because it discards 1/4 of the potential video bandwidth. That's something which should definitely be avoided when playing video on a low power system.

The encoding limitation can be overcome with one of many ugly hacks. For example, it is possible to store four tiles in three bytes. This is the opposite of uuencode or binhex encoding where three bytes of binary data are held in four bytes of text. Unfortunately, the target hardware is very poor at unpacking bit fields due to only having single bit rotate instructions. Single bit rotation adversely impacts more advanced encoding schemes, such as Lempel-Ziv or Shannon-Fano compression. Therefore, it is preferable to use the remaining two bits for an unrelated purpose. For example, different schemes to minimize fringing or text symbols for titling.

A Commodore 64's 8*8 tile size is the major limitation. While the byte wide tiles and a square ratio seem suited to 8*8 DCT encoding (or a substitute), the choice of JPEG DCT was a compromise between image quality and compression ratio with the available processing power. If more processing power was commonly available, JPEG DCT might have been 16*16 pixels. Or maybe something unusual, such as 12*12 pixels. This would have led to 144 or 256 quantized co-efficients being entropy encoded with a different scheme to handle the potentially larger steps between non zero co-efficients.

Asking the question "Can I play video on idealized hardware and map it down to a VIC20 or Commodore64?" is a productive line of thought. I had already chosen 16*16 tiles and the ability to set foreground and background independently within each tile. Now I have 256 tiles and I can redundantly define tile bitmaps on lesser hardware. However, I have yet to define a zigzag/spiral encoding. Nor do I have a set of 256 Walsh functions. I hadn't taken into account that Walsh functions have their own ordering problems. However, after staring at the Wikipedia and Wolfram diagrams for about one hour and then faffing a script, I generated a subset of one dimensional Walsh functions as follows:-

# perl -e '$w=8;for($y=1;$y<=$w;$y++){for($x=0;$x<$w;$x++){if(($y*$x+$y/2)%($w*2)<$w){print"1"}else{print"0"}}for($x=$w-1;$x>=0;--$x){if(($y*$x+$y/2)%($w*2)<$w){print"0"}else{print"1"}}print"\n"}'
1111111100000000
1111000011110000
1110011100011000
1100110011001100
1101101100100100
1001011010010110
1010010101011010
1010101010101010

where $w must be even and should be a multiple of four, +$y/2 is a fudge factor to increase orthogonality and %($w*2)<$w is a shader idiom to produce stripes. (See Christmas 2020 JavaScript archive for example stripe shader.) The fudge factor is particularly important. It ensures that half of the bits flip with each increase of frequency. This is a very minimal requirement for a set of Boolean orthogonal functions. It ensures that encodings are not bunched and are chosen with equal probability.

This is encouraging; in part because PETSCII already has a subset of Walsh tiles. Specifically, a dithered tile, squares in opposite corners and half filled tiles vertically and horizontally. Actually, this led to the next question "Can I encode video on a Commodore64?" and the answer is yes for specific encodings. The insight comes from PETSCII. It is possible to encode the horizontal and vertical frequency of each tile separately. For the horizontal frequency, the average of each column is reduced to 16 RGB values and the nearest pattern is found. This process is repeated for the vertical frequency. When the frequencies have been found, the 256 pixels can be partitioned into two sets of 128 and the average color for each partition can be determined as a linear sum before being right shifted by 7 bits (divide 128). None of this requires multiplication and, assuming 8 bit per channel video, none of this requires handling anything larger than 16 bit integers.

So far, I've only defined 8 of the 16 Walsh functions. I require another 8 Walsh functions. If we consider Walsh functions as a Boolean version of Fourier, we've only got the cosines. We also lack zero frequency (described in JPEG as the DC co-efficient). Staggered pairs of Walsh functions allow textures to be approximated as integer waves with 90° offsets. (This approximates positive sine, positive cosine and - by reversing foreground and background - negative sine, negative cosine.) This doesn't work well for diagonal textures or textures which aren't an integer frequency. In particular, like JPEG, it doesn't handle waves which are longer than the block size. The preferred solution, like JPEG, is a 2:1 hierarchical encoding to trivially increase the block size. Increasingly detailed passes encode residual data and, possibly, a final entropy pass allows lossless encoding. The entropy pass is common in audio codecs, such as MLP [Meridian Lossless Packing] but absent from JPEG.

A Walsh tile is encoded as two nybbles where each nybble represents a frequency and phase. For display only, the arrangement of frequency, phase and nybble field is immaterial. Encodings map to bitmap patterns which raster to display. No further processing is required. For downward compatibility, encoding choice is very important. Firstly, I choose alternating bits as encoding zero and all ones as encoding one. The remaining 14 encodings are frequency pairs for 1-7 full waves. Secondly, I choose a discontiguous field arrangement such that the top bit for the horizontal and vertical nybbles are in bit 6 and bit 7 of a byte. The reason for this is extremely non-obvious but has historical precedent. 6502 peripheral chips, such as 6522 VIA and 6551 ACIA have the most important flags of the status register in bit 6 and bit 7. When a peripheral chip status register is copied to 6502 accumulator, bit 6 is copied to the oVerflow flag (also in bit 6) and bit 7 is copied to the Negative flag (also in bit 7). From here, opcodes such as BVC [Branch oVerflow Clear] do not require any preceding bit test. This only works with the top two bits and is typically used between 6502 and 65xx series peripheral chips. However, it works equally well with nybble encoded Walsh tiles stored as discontiguous fields. This is very much like my 8 bit floating point proposal. Although, rather than storing an IEEE754 style exponent and mantissa as discontiguous fields, we store two frequency nybbles as discontiguous fields.

This awkward arrangement has no performance impact on video decode to 16*16 tile display. However, it offers two decode strategies when downsampling to 8*8 tile display, as commonly provided by the VIC or VIC-II chip found in a VIC20 or Commodore64. The first strategy is redundant tile bitmaps such that all horizontal or vertical encodings specifying five or more waves display alternating bits in the horizontal or vertical axis. The second strategy is to use BPL and BVC opcodes to skip bit mask operations. This correctly clips all encodings which exceed the resolution of the 8*8 tile while reducing 8 bit Walsh tile encodings to the contiguous range 0-63. Or 192-255, if that is more convenient. This is a classic time versus space choice which saves 1.5KB RAM allocated to tile bitmap. It also allows other uses for the remaining 192 tiles, such as window decoration.

Commodore64 video in window? Are you mad?

This is the most sensible part. A standard benchmark for 8 bit video is the quality of rendering the Bad Apple cartoon which mostly features line art of a witch, the moon and a rotten apple. One particularly sneaky trick to render it a 640*512 on an Acorn BBC Micro with 2MHz 6502 is to encode the video as an executable binary. In this case, the "codec" is a raw sequence of 6502 instructions to update the screen buffer. An extension of this technique would be to transcode 640*400 video to 40*25 Walsh tiles. I believe that the cool kids call this 16:10 aspect ratio. I call it Commodore 64 aspect ratio. The laziest way to achieve this is by splitting frames with ffmpeg:-

# ffmpeg -i foo.mp4 -ss 20 -t 40 -vf scale=1600:900 -vf crop=1440:900:80:0 -vf scale=640:400 frame/%08d.png

This example starts from 20 seconds and limits output to a duration of 40 seconds. It will scale, crop and re-scale video of any resolution (ideally 16:9 or wider) and dump frames at the original frame rate to a directory with film industry eight decimal digit numbering starting from 00000001.png which is suitable for further processing with a prototype encoder which invokes libgd which invokes libpng which invokes zlib. For very rudimentary testing, modified frames may be assembled into a GIF animation using GIMP or re-assembled into a video with the original, unmodified audio using ffmpeg. For playback in a window on a Commodore 64, render to an off screen buffer using a raw instruction stream. Using a dynamically generated instruction sequence, the visible part of a window may be copied to screen. Assuming you aren't moving windows around the screen, this process gets *faster* as the video becomes more obscured.

There is a further trick. A full video exceeds available RAM and therefore frames of video are loaded into RAM in bundles. One or more bundles may be loaded while another is played. Within each bundle, common elements across frames may be grouped into subroutines - and the common elements do not have to occur in successive frames. Indeed, we get a birthday paradox where there are n(n-1) opportunities to find an exact match for each channel of each tile. Using increment and decrement instructions, there is also opportunity to encode near matches and none of this excludes a B+ tree of key frame diffs writing to a 1000 byte buffer. With 256 Walsh tiles and in ignorance of temporal coherence, 16 frames of unrelated video are overwhelming likely to share tile data and duplication *must* occur by frame 257. This is the principle of a de-duplicating filing system: create an environment where collisions are inevitable. In the case of Walsh tiles, any attempt to find duplicates is compounding and the ability to store an additional frame delta is extremely non-linear. The major penalty is that subroutine call and return incurs a total of 12 clock cycles. It also requires three bytes of RAM for each frame to call each subroutine and one byte of RAM to terminate each subroutine. There is opportunity to tail call but finding the tightest arrangement may be a combinatorial explosion. In the trivial case, a buffer will be populated non-consecutively. The section unique to each frame will be written first. Even here, writes are not sequential. Horizontal strips of high noise can be block copied in a loop. The remainder may aggregate sequential ranges of constants. For example, it is possible to LDX #0 and then write all bytes which should be zero then INX and write all bytes which should be one. These idioms may be repeated within each subroutine and the last subroutine invocation may be JMP rather than JSR. Only frames with no commonality end with RTS. It is possible to increment or decrement values before, during or after subroutine calls. This provides additional scope to pattern match and compact the binary, although it increases complexity.

You may think that it is crazy to implement a codec as arbitrary code execution. However, there has been a move within the 6502 community to implement a 65816 system with memory protection running at 20MHz or more. 65816 is 6502 with 8/16 bit extensions. This means more opcodes, more compact programs, more bus cycles moving data and the ability to index 64KB as a linear array from an index register. All of this is potentially beneficial for 1000 Walsh tile video. In particular, it may be preferable to encode with the 16 bit extensions while keeping decode 8 bit compatible. Whether or not a system has (or uses) 16 bit extensions, a privilege bit would be beneficial. With minimal privilege, arbitrary execution of the "codec" is restricted to its own address-space. The buffer can then be selectively copied to display by a kernel. This only requires two context switches per frame of video. Therefore, 60FPS video only requires 120 context switches per second. A 2MHz 6502 can handle 50000 interrupts per second. So, 120 context switches per second at 20MHz is a very minor overhead. Audio and retrieval from storage may incur significantly more context switching. However, audio does not require arbitrary code execution. Indeed, in the trivial case, it is possible to play uncompressed PCM audio. This is, of course, more secure and stable than the recent buffer overflow found within GStreamer's NES music player. The music player requires 6502 binary execution. This was implemented in C without safeguards and deployed on millions of computers. As one wag noted, "Poettering strikes again!"

If you want to run this codec on a 4GHz computer - and do so more competently than Lennart Poettering - load one bundle of frames into Mike Chambers' 6502 implementation (or similar) and execute 6502 bytecode until it reaches the correct nesting of RTS or exceeds a ridiculous instruction count. Then render buffer to screen using native software. Repeat for each frame then load next bundle. Your operating system probably provides read-ahead and therefore latency to load the next bundle is minimal. Although we are "executing" the codec, there is no sane opportunity for malicious code to escape a virtual machine. Executed code isn't native, isn't JIT, cannot perform Rowhammer, cannot poison a cache hierarchy, cannot perform timing attacks and has no operating system or I/O during execution. Further safeguards may include wiping temporary variables, subroutine/branch limits, disallowing read/write above the highest loaded address and making write/execute mutually exclusive. This prevents data leak between bundles, prevents self modifying code and prevents another level of bytecode execution. I would nuke it from orbit but such action is incompatible with a good frame rate. Although the codec is explicitly Turing complete, much of the cleverness is in the encoder and this is mostly restricted to a XOR of horizontal and vertical Walsh functions, a mechanism for downsampling, a target rich environment for birthday paradox collisions and generation of CPU instructions rather than conceptual blitter instructions. Indeed, the major concerns for decode are correct implementation of the audio/video container format and timing for smooth playback. Surprisingly, Turing completeness is not the major concern. Indeed, giving that there is a formal execution model, it is possible to perform static analysis of codec output using general purpose analysis software.

Ideally, I'd like to implement Walsh tiles as a complement or replacement for JPEG tiles within an agnostic quadtree codec and, ideally, I'd like to use this as a general network windowing system. However, this requires a significant amount of work. The minimal implementation is executing 6502 bytecode to obtain a flat grid of tiles. This can be scaled up to any desired resolution by assigning, for example, 256*256 pixel tile encode/decode to separate cores; possibly 500 or so GPU cores. Yes, with very little modification, this system can be adapted to render 8K video with CUDA or a multi-core CPU. In this case, 40*25 Walsh tiles retain downward compatibility. 40*25 also works as a 16:10 video thumbnail.

Been seein' you for too long already

Posted by c0lo on Tuesday September 28 2021, @05:01PM (#8664)
43 Comments
/dev/random

Plus ça change plus c'est la même chose.
Time to move on.

All the best guys

4 Accused of Plotting School Attack on Columbine Anniversary

Posted by Runaway1956 on Monday September 27 2021, @12:27AM (#8642)
13 Comments
Code

4 Accused of Plotting School Attack on Columbine Anniversary
Authorities say four teenagers have been charged with a plot to attack a Pennsylvania high school in 2024 on the 25th anniversary of the massacre at Colorado’s Columbine High School.

By Associated Press

DUNMORE, Pa. (AP) — Four teenagers have been charged with a plot to attack a Pennsylvania high school in 2024, on the 25th anniversary of the massacre at Colorado's Columbine High School, authorities said.

A 15-year-old girl and 15-year-old boy are charged as adults and two other teenagers face juvenile charges in the plan to attack Dunmore High School, outside Scranton, on April 20, 2024, authorities said. Investigators said the girl's mother told police that her daughter was “obsessed with Columbine," The Times-Tribune reported Friday.

“While the investigation is ongoing, I want to assure the parents, students and staff at Dunmore High School that we do not believe there is any active threat at this time,” District Attorney Mark Powell said in a statement. “We are relieved that this plot was uncovered before anyone was hurt and urge anyone who has information about potential threats of school violence to contact police immediately.”

A Molotov cocktail, components for bombs, writings on how to make bombs, and handwritten lists of guns, ammunition and tactical gear complete with prices were found at the girl's home, investigators said in a criminal complaint.

The Times-Tribune reported that the girl’s mother and defense attorney Corey Eagen declined to comment, while the other teen charged as an adult had no lawyer during Friday’s arraignment. Powell declined to comment on the juvenile charges.

The mother of one of the teens charged as a juvenile discovered text messages on her child's cellphone July 6 in which a group discussed plans to “shoot up the school," investigators said in the complaint. The teen told investigators that he thought it was bluster until he saw 20 to 30 Molotov cocktails under the girl's porch.

Dunmore schools Superintendent John Marichak told the newspaper he was appalled but relieved by the arrests. A statement on the district’s website said authorities had assured officials that there was “no current danger to students or staff.”

Principal Timothy Hopkins, who was one of the officials targeted, said he knows the two teens charged as adults and described them as quiet children who weren’t troublemakers. He said he had no idea why they would seek to harm him, other than his position as principal.

“It’s a little bit disturbing to find out something like that was being plotted,” he told the Times-Tribune.

The two teens charged as adults were taken to the Northampton County Juvenile Justice Center following their Sept. 16 arraignment on weapons of mass destruction, terroristic threat, aggravated assault, criminal conspiracy and possession of explosive material charges. The girl is also charged with risking catastrophe because of the threat the explosive devices posed to family members and neighbors, police said.

Preliminary hearings are scheduled Oct. 4.

Whoa. I'm shocked. Flabbergasted. Floored. My amazement knows no bounds. Authorities actually acted on a tip? The FBI didn't interview the kids involved, and turn them loose? Authorities actually acted before the violence took place?

Mom found stuff she didn't like on her kid's cellphone, and called the authorities. The authorities did an interview or six, maybe investigated cell phones, satisfied themselves there might be a danger, and took action!

I am almost speechless. The system worked for once!

https://www.usnews.com/news/us/articles/2021-09-25/4-accused-of-plotting-school-attack-on-columbine-anniversary

After a search, I only find the same AP story on multiple sites.