Mahmoud
Shared posts
SJ #3 Most Diverse U.S. Big City
Mahmouduh, you're welcome??
In a recent survey of US cities in terms of diversity, WalletHub ranked San Jose as the #3 most diverse of the U.S. big cities, with New York at#1 and Oakland at #2. Compared to all 500 U.S. cities in the survey, San Jose came in at #8. WalletHub is personal finance website, and their survey compared U.S. cities in terms of ethnoracial diversity, linguistic diversity and birthplace diversity.
Diversity Ranking of US Big Cities – WalletHub
San Jose scored 15th in ethnodiversity (Oakland, Calif., was #1) and 2nd in linguistic diversity (Jersey City, N.J. was #1).
The survey points out that this is just a snapshot in a fast-changing environment, and by 2044 no single ethnic group will constitute the majority in the U.S., for the first time.
With immigration reform still in flux and under active debate, we may see additional changes in these measures of diversity. What won’t change, however, is the San Jose tradition and benefit of being a richly diverse city, with the multiple cuisines, languages, art and music drawn to the city from all over the world. As we found when we surveyed influentials throughout the community as part of developing our San Jose identity campaign, a good idea doesn’t respect language barriers, and San Jose is all about developing, fostering and improving on good ideas, wherever they come from!
Get all the details from WalletHub’s full report.
The post SJ #3 Most Diverse U.S. Big City appeared first on City of San Jose.
Double Diamond
Mahmoudlol i mean, i've heard of a dog being wagged by its tail but this is like a flea on the tail of the dog
ESR's Newest Project: An Open Hardware/Open Source UPS
MahmoudESR's badness/creepiness aside, this is actually a good idea.
Read more of this story at Slashdot.
Researchers Provide Likely Explanation For the 'Sonic Weapon' Used At the US Embassy In Cuba
Read more of this story at Slashdot.
Local News Anchors Now Have to Read Pro-Trump Propaganda
Every news station under Sinclair's umbrella is required to syndicate commentary that comports with its owners' ideological views.When Trump took office, Sinclair was on the cusp of purchasing Tribune media, a merger that would give the firm ownership of enough local stations to reach 70 percent of U.S. homes. But there were two obstacles to such a deal: Federal rules put a cap on the number of local news stations any single entity could own, and also prohibited any company from owning a newspaper and television station in the same media market. Taking on Tribune's assets would put Sinclair in violation of both those laws.But by the end of Trump's first year in office, his appointees to the Federal Communications Commission had abolished both of those regulations. [...]
Now, Sinclair is taking its "covert state media" game to new, Orwellian heights: By the end of this month, Sinclair will require all of its local news anchors to condemn "national media outlets" for publishing "fake stories" and "using their platforms to push their own personal bias," according to internal documents obtained by CNN. Those documents instruct local news directors to air these criticisms of "biased and false news" -- criticisms that, of course, echo the president's own -- over and over again, so as "to create maximum reach and frequency."
Sinclair's new media-bashing promos rankle local anchors:
The instructions to local stations say that the promos "should play using news time, not commercial time." Like the Epshteyn commentaries, this takes away from local news time."Please produce the attached scripts exactly as they are written," the instructions say. "This copy has been thoroughly tested and speaks to our Journalistic Responsibility as advocates to seek the truth on behalf of the audience."
The promos begin with one or two anchors introducing themselves and saying "I'm [we are] extremely proud of the quality, balanced journalism that [proper news brand name of local station] produces. But I'm [we are] concerned about the troubling trend of irresponsible, one sided news stories plaguing our country."
Then the media bashing begins.
from: Patricia E. to: "tiangotlost@gmail.com...
Mahmoudi could absolutely see someone getting a tattoo that says "miso soup"
Thoughts and Prayers and NRA Funding
Mahmoudstuff like this bothers me even more than intended bc like, looking at those numbers, it's not even that much money. it's nuts.
What Congress Has Accomplished Since the Sandy Hook Massacre:
More than five years have passed since the shooting at Sandy Hook Elementary School, where 20 children and six adults were killed. In that time, dozens of gun control proposals have been introduced in Congress attempting to fix glaring issues with gun safety and regulation. More than 1,600 mass shootings have taken place in America since then.Here is a guide to what Congress has -- or, more accurately, has not -- accomplished during this time.
Or this, from a few months ago:
Thoughts and Prayers and NRA Funding:
Most Americans support stronger gun laws -- laws that would reduce deaths. But Republicans in Congress stand in the way. [...] Below are the top 10 career recipients of N.R.A. funding -- through donations or spending to benefit the candidate -- among both current House and Senate members, along with their statements about the Las Vegas massacre. These representatives have a lot to say about it. All the while, they refuse to do anything to avoid the next massacre.
- John McCain, Ariz. -- "Cindy & I are praying for the victims of the terrible #LasVegasShooting & their families." $7,740,521
- Richard Burr, N.C. -- "My heart is with the people of Las Vegas and their first responders today. This morning's tragic violence has absolutely no place here in America." $6,986,620
- Roy Blunt, Mo. -- "Saddened by the tragic loss of life in #LasVegas. My thoughts are with all of the families affected by this horrific attack." $4,551,146
- Thom Tillis, N.C. -- "Susan and I send our deepest condolences and prayers to the families of the victims of this horrific and senseless tragedy in Las Vegas." $4,418,012
- Cory Gardner, Co. -- "My family and I are praying for the families of those injured and killed in Las Vegas last night." $3,879,064
- Marco Rubio, Fla. -- "I'm praying for all the victims, their families, and our first responders in the #LasVegas #MandalayBay shooting." $3,303,355
- Joni Ernst, Iowa -- "My prayers are with all of the victims in Las Vegas, and their loved ones affected by this senseless act of violence." $3,124,273
- Rob Portman, Ohio -- "Jane & I mourn the loss of innocent lives in this horrific attack in Las Vegas last night. We are praying for those taken from us, their families & all those injured in this attack." $3,061,941
- Todd Young, Ind. -- "We must offer our full support to the victims and their families as our nation mourns." $2,896,732
- Bill Cassidy, La. -- "Following closely the horrendous act of violence in Las Vegas. Our prayers are with those who were injured, killed and their families." $2,861,047
Call Them Like You See Them.
Mahmoudme @ u for not sharing enough on here
The AR-15 is the officially-designated "rod of iron" from Revelation.
School officials told parents that their children will be relocated for the day Wednesday to accommodate a nearby church planning a wedding-like ceremony involving AR-15 semiautomatic rifles. [...]The World Peace and Unification Sanctuary, also known as the Sanctuary Church, is led by the son of the late Rev. Sun Myung Moon, a self-professed messiah from Korea who became a symbol of the 1970s cult wars by holding mass weddings for couples who often were strangers. Moon, who founded the Unification Church, became a player in a segment of the American conservative world through business interests including the Washington Times, and his son Hyung Jin Moon has woven gun rights into the religious community he leads in Pennsylvania, according to the Southern Poverty Law Center, which tracks hate groups and calls Hyung Jin Moon an "anti-LGBT cult leader."
The church's website calls for "heterosexual couples" who believe that Hyung Jin Moon is the representative and heir of his messiah father to participate in a historic "Perfection Stage Book of Life Registration Blessing" - either in Newfoundland or "at other locations via the Internet." The site calls the service at 10 a.m. Wednesday the "Cosmic True Parents of Heaven, Earth and Humanity Cheon Il Guk Book of Life Registration Blessing" ceremony. "True Parents" was the term Sun Myung Moon's many followers called him and his wife. The SPLC site says "Cheon Il Guk" is the church's name for "a sovereign kingdom of heaven on earth" - that must be defended, "which is where the assault rifles come in," the center's site says.
"Blessed couples are requested to bring the accoutrements of the nation of Cheon Il Guk, crowns representing the sovereignty of Kings and Queens, and a 'rod of iron,' designated by the Second King as an AR15 semiautomatic rifle or equivalents such as an AK semiautomatic rifle, representing both the intent and the ability to defend one's family, community and 'nation of Cheon Il Guk,' " the church's site says in a statement. Hyung Jin calls himself "Second King," the SPLC reports.
If couples can't bring the guns because of legal problems "or other reasons," they are "invited to purchase a $700 gift certificate from a gun store, as evidence of their intent to purchase a 'rod of iron' in the future," the church's site says. "These actions to participate with crowns and a rod of iron/gift certificate are signs of attendance, sovereignty and vigilance to protect God's coming nation."
You know, you can't have a strip club anywhere near an elementary school, but they'll let you put a church just anywhere.
Update: Most of the other articles left out the second half of the grift! They actually sell them the guns:
Hyung Jin "Sean" Moon is pastor of the World Peace and Unification Sanctuary in this small town in rural Wayne County, 120 miles north of Philadelphia. His brother, Moon Kook-jin, also known as Justin Moon, owns Kahr Arms, a firearms manufacturing company 30 minutes away in Pike County. [...]Anyone without an AR-15 could buy one at Kahr Arms. "I actually purchased my weapon there yesterday because, although I have several rifles, I didn't have an AR-15," said David Konn, a follower who had driven from Florida earlier in the week. "I think it retails for $689." [...]
On Monday, Justin Moon told the Inquirer and Daily News that his firearms company, which has sold weapons to police departments across the country, was merely a sponsor of the Festival of Grace. He attends the church.
"We sell a few guns," he said. "That's no secret. That's my profession. I'm a gun manufacturer, so I support the Second and First Amendment."
Previously, previously, previously, previously, previously, previously, previously, previously, previously, previously, previously, previously, previously, previously.
There's no good argument against letting 16-year-olds vote, but there are plenty of good arguments for it.
People who are 16 and 17 are as qualified to vote as anyone in the 80s or 90s:The Republican Party likely would crumble as a national force tomorrow if seniors in nursing and retirement homes stopped voting. Meanwhile, their their entire agenda serves to undo the biggest victories of the "War on Poverty" -- which primary benefited the elderly. You can argue that teens cognitive abilities on average do not match adults in their "peak" years, but you could make the same case against some older voters. The difference is, only one group has to live with the consequences of their current choices for generations.Any argument against teens voting makes more sense when applied against older seniors voting.
Don't think a 16 year old has enough "life experience" to vote? Put her up against twenty 78-year-olds and let's see who figures out which stories in their Facebook feed are real first. You could easily argue that Americans who grew up without computers and smartphones are not equipped to participate as citizens in this society.
First of all, we already do that. Young defendants are already sentenced to life in prison by a government they had no hand in choosing. Second, as a society we see the wisdom in meting out the privileges and responsibilities of adulthood in pieces. 18 year olds in Florida can buy AR-15s but not beer. 23 year olds can drive tanks but not rental cars. Believing that young people deserve a say in our democracy is not to say that 16 year olds are full-fledged adults. They're not! That some of these distinctions are arbitrary and hard to draw doesn't absolve us of the moral harm of denying capable teenagers a voice.
I see from my previouslies that 14 years ago there was a proposed California amendment to give 14 year olds "half a vote". I never heard anything about it again because it died in committee and never came to a vote or debate.
Those kids would be 28 by now.
Inside The Federal Bureau Of Way Too Many Guns


By law, the system must remain intricate, thorny, and all but impenetrable."I get e-mails even from police saying, 'Can you type in the serial number and tell me who the gun is registered to?' Every week. They think it's like a VIN on a car. Even police. Police from everywhere. 'Hey, can you guys hurry up and type that number in?'" [...]That's been a federal law, thanks to the NRA, since 1986: No searchable database of America's gun owners. So people here have to use paper, sort through enormous stacks of forms and record books that gun stores are required to keep and to eventually turn over to the feds when requested. It's kind of like a library in the old days -- but without the card catalog. They can use pictures of paper, like microfilm (they recently got the go-ahead to convert the microfilm to PDFs), as long as the pictures of paper are not searchable. You have to flip through and read. No searching by gun owner. No searching by name.
"You want to see the loading dock?" We head down a corridor lined with boxes. Every corridor in the whole place is lined with boxes, boxes up to the eyeballs. In the loading dock, there's a forklift beeping, bringing in more boxes. [...] Almost 2 million new gun records every month he has to figure out what to do with. Almost 2 million slips of paper that record the sale of a gun -- who bought it and where -- like a glorified receipt. If you take pictures of the gun records, you can save space. [...]
"These were Hurricane Katrina," he says, leaning against a stack. "They were all submerged. They came in wet. And then we dried them in the parking lot. When they got dry enough, the ladies ran them into the imager.
"Do you want to see the imagers? I'll show you. Imaging is like running a copy machine. So, like, if there's staples? So what these ladies along here do, from this wall to this wall, from six in the morning until midnight... staples." [...]
The vast majority of the gun records linking a gun to its owner are kept back at the various licensed dealers, the Walmarts, Bob's Gun Shops, and Guns R Us stores dotting America's landscape.
We have more gun retailers in America than we do supermarkets, more than 55,000 of them. We're talking nearly four times the number of McDonald's. Nobody knows how many guns that equals, but in 2013, U.S. gun manufacturers rolled out 10,844,792 guns, and we imported an additional 5,539,539. The numbers were equally astounding the year before, and the year before that, and the year before that. [...]
Serial numbers, it turns out, are tangled clogs of hell. Half the time what the cop is reading you is the patent number, not the serial number, or it's the ID of the importer, and then you have the "zero versus letter O" problem, the "numeral 1 versus letter l versus letter small-cap I" problem, and then there is the matter of all the guns with duplicate serial numbers [...]
Step Two: Hester calls the manufacturer (if it's a U.S.-made gun) or the importer (for foreign-made guns). He wants to know which wholesaler the gunmaker sold the weapon to. [...]
Step Three: You call the wholesaler and say, "Who did you sell it to?" The wholesaler, who also has to keep such records, goes through the same rigmarole the importer or manufacturer did, and he gives you the name of the gun store that ordered it from him. Let's say it was Walmart.
Step Four: If the Walmart is still in business, you call it. The actual store. Not corporate headquarters, or some warehouse, but the actual Walmart in Omaha or Miami or Wheeling. You call that store and you say, "To whom did you sell this Taurus PT 92 with this particular serial number on it?" By law, every gun dealer in America has to keep a "bound book" or an "orderly arrangement of loose-leaf pages" (some have been known to use toilet paper in protest) to record every firearm's manufacturer or importer, model, serial number, type, caliber or gauge, date received, date of sale. This record corresponds to the store's stack of 4473s, which some clerk has to go dig through in order to read you the information from the form. Or he can fax it. Congratulations. You have found your gun owner. [...]
There is no other place in America where technological advances are against the law. Unless you count the Amish. Even if a gun store that has gone out of business hands over records that it had kept on computer files, Charlie can't use them. He has to have the files printed out, and then the ladies take pictures of them and store them that way. Anything that allows people to search by name is verboten.
The Problem With APLs
Mahmoudrings pretty true
Note: I’m coming from this from the perspective of a J programmer. Maybe K or Dyalog or something solved this already, I don’t know, but I would be pretty surprised if they did.
The more I work with an APL, the more I notice a serious problem. Not the weird symbols, you get used to that pretty fast. Not the write-only aspect, that’s annoying but can be solved with a good syntax highlighter. The biggest problem with APLs, in my opinion, is discoverability: it’s hard to know what you’re supposed to be writing.
I’ll use J to demonstrate what I mean. Here’s the J Vocabulary. There’s about 200 primitives there. There’s also the minimal beginning J which is ‘only’ 35 primitives. This isn’t, by itself, a problem. Part of an APL’s power comes from the diversity of primitives baked into the language. Using the right primitives will make your code fast, simple, and elegant.
How do you find the right primitive, though?
Here’s a python program that calculates the mode of a list using just ‘python primitives’: no high level functions, no modules, etc.
def mode(l):
max = None
count = {}
for x in l:
if x not in count:
count[x] = 0
count[x] += 1
if not max or count[x] > count[max]:
max = x
return max
That’s 177 characters without golfing. It has to go through every single element in order, so it’s slow and not parallelizable. Now for the J:
mode =: (i. >./) & (#/.~) { ~.
That’s 22 characters. It’s fast, clean, and took 40 damn minutes to write. Most of it was poring through NuVoc to see what I actually needed to use. Was table something I should be using? Reducing? Maybe I was supposed to grade it and cluster the numbers? Sort? I was lucky and stumbled on a phrase for keys that got me closer, but I needed to figure out what to do with the counts. Find the max, I guess, but how would I use that? I started by trying to find the indice, then when that failed spent a while chasing an equality and tally as a solution before doubling back to using indices and succeeding. Not to mention finagling all of the operations together in the proper fork: I had to eventually draw it out in a whiteboard.
I’m sure a J expert can look at this and say “no you’re supposed to use the Foobar primitive which makes it trivial”, but that’s my whole point: to find the right primitive I have to review 200 of them. I don’t think what I was doing was all that complicated, and all of the primitives I actually used are relatively simple. But when you load up the vocabulary you see nuts and bolts like { (select indice) and $ (get shape) mixed in with things like |: (rearrange axes of N-dimensional array) and #: (generalized antibase).
And that’s just the basics. Note the /. dyadic adverb, aka “key”. x u/. y partitions elements of y based on the indices of x, then applies the u monad to each partition of y. When I use the same array for both x and y, it gives me the count of each element. Solving this problem meant knowing the right adverb and the right verb, and the right adverb isn’t immediately obvious. Here are some of the other modifiers that J provides:
- The
/.monadic adverb, which partitions y by its antidiagonals before applying u - The
^:_conjunction, which finds the fixed point of verb u on y - The
;._3dyadic adverb, which applies u to the subarrays in the regular tiling of y - The
:;dyad, which partitions y based on a specified Mealy machine.
All of these adverbs have extremely specific use cases, but they’re mixed in with more general purpose modifiers, like / (reduce) and & (bond). If I’m doing an arbitrary task, I might need \ but I probably won’t need :;. This gives me proposal one: label primitives by their complexity. I’m thinking roughly “basic”, “advanced”, and “expert”. This is under the assumption that ‘basic’ stuff is the most general, of course. ‘Advanced’ is probably anything that is mostly used in a few specified ways, and ‘expert’ is for crazy library builders (and anything involving gerunds). Note that the same symbol can have different complexities for the monad and dyad forms. { is a basic dyad but an advanced monad.
That reduces the space I have to look over. To help me narrow in, it’d be good to label the useful primitives for a problem domain. If I’m finding or filtering my thoughts should immediately go to # i. = {, while for manipulating shapes I might want $ {. }. {: }:. If a verb has an unusual use case, we should also list what it belongs to that domain. For example, the -. monad is “not”. This is important because filtering is often done with a boolean array. fy # y filters y by array fy, and (-. fy) # y rejects from y by fy. And primitives can, of course, belong to multiple domains: -. is also good for boolean logic and probabilities.
Certain primitives are useful to certain domains. In addition, you can construct versatile verbs out of multiple primitives. In contexts where # is used as filter, then the corresponding ‘reject’ verb is (#~ -.)~. \ is ‘infix’, /\ is the more commonly-used ‘accumulate’. J defines f . g as u@(v"(1+lv,_)), but most people only need it for +/ . *, which is ‘matrix product’.
This gives us the last proposal: create a library of useful components. These can be both complete components you use directly (?&$ for ‘random matrix’) and partial components you parameterize (f#] for ‘filter on f’). J has a phrasebook that’s supposed to kind of fill this role, but it gives you complete solutions to specific problems, not reusable pieces you can build with. I’m thinking more like intermediates you use to get your final answer.
Here’s what the mode problem would look like with a good component library: I want to find the mode of a list. That will probably involve using an index, so I’ll be using the f { ] idiom where f’s top-level verb will be an i. dyad. Thinking it through, if I had the counts c for each element I could get the index of the max with (i. >./) c. I get the counts by checking the library and finding #/.~. I combine everything, watch it raise a length error, and realize the counts of the elements of a list is going to be smaller than the list, since it’s just the nub. I have to replace ] in the find-by-index idiom with ~., and the verb is complete. Instead of 40 minutes, it takes 5.1
In addition to making J more discoverable, a good component library might also make it more parsable. I have to work out what (f g h) y is supposed to do, but if I see (f # ]) y I immediately know it’s a boolean filter. One interesting possibility is adding semantic highlighting, where we highlight instantiated partial components and tooltip the description.
In summary: when working with an APL finding the right primitive is really tough, and verb classification and a better phrasebook would go a long way towards fixing that.
Update 10/1/18
Mike Arntzenius pointed out an error with the Python. It should actually be this:
def mode(l):
max = None
count = {}
for x in l:
if x not in count:
count[x] = 0
count[x] += 1
- if not max or count[x] > count[max]:
+ if count[x] > count.get(max, 0):
max = x
return max
Otherwise it blows up on falsey values. Thanks for catching that!
- I hope because it’s actually easier and not because I already solved this problem before. [return]
Marbles on a Kinetic Block Track Perfectly Synchronized with Tchaikovsky’s “Waltz of the Flowers”
The Body Trade
Mahmoudthis is p wild, but lol, staphylococcus aureus? that's like, everyone. everyone has that.
Demand for body parts from America -- torsos, knees and heads -- is high in countries where religious traditions or laws prohibit the dissection of the dead.MedCure shipments are now the subject of a federal investigation. In November, the Federal Bureau of Investigation raided the company's Portland headquarters. Though the search warrant remains sealed, people familiar with the matter say it relates in part to overseas shipping. [...]In 2012, MedCure opened its European hub in Amsterdam. Since then, MedCure has sent to the Netherlands at least six refrigerated cargo containers filled with frozen human remains, manifest records show. The first container -- 40 feet long, 8 feet wide, 9.5 feet tall -- departed the Port of Tacoma in Washington state in July 2012. The body parts weighed about 5,000 pounds (2,268 kg) and were valued at $259,210. [...]
On November 1, as Daniel Gallegos' head and the heads of six other donors were returning from Israel to UTN in Arizona for cremation, someone noticed a discrepancy on the shipping documents. According to records reviewed by Reuters, the shipping manifest described the contents as "electronics" valued at $10 each. A label on the coffin-sized package described the contents as human remains.
Government records show that border officials were troubled that the package appeared punctured and a strong smell was wafting from the box. They also demanded death certificates to ensure that the specimens were disease-free, records show. One of the donors, records show, carried staphylococcus aureus, an infection the CDC website says poses a potentially serious risk to healthcare workers.
Previously, previously, previously, previously, previously, previously, previously, previously, previously, previously, previously, previously, previously, previously, previously, previously, previously, previously, previously, previously, previously, previously, previously.
Create modular cat houses with these carboard building blocks
Mahmoudwhat's gonna happen if you get this, ben? (and/or stephen)

A Cat Thing combined feline love for cardboard boxes with an architect's eye for modular prefab housing to create a series of max-and-match cat houses. (more…)
3D Video Calling with Matrix, WebRTC and WebVR at FOSDEM 2018!
Mahmoudhaha the video encoding trick, impressive.
TL;DR: We built a proof-of-concept for FOSDEM of the world’s first(?) 3D video calling using Matrix and the iPhone X… and it looks like this!!
Last year we spent a few weeks putting together a proof of concept of using Matrix as an open, interoperable communication layer for VR/AR – showing how you can use it as an open signalling protocol to connect users within (and between) virtual worlds, with full-mesh E2E encrypted video conferencing in VR; WebRTC calls overlaid on 360 degree video, and other fun stuff. The reasons for building the demo were quite eclectic:
- Try to highlight that Matrix is about much more than just about instant messaging or team chat
- Try to encourage the community to jump in and build out more interesting use cases
- Learn where the state of the art in WebVR + WebGL is
- Kick off the process of encouraging folks to think about storing world geometry and physics in Matrix
- Have a fun visual demo we could show to excite potential investors in New Vector (which comically backfired when the investment community spontaneously decided that VR is still too early).
In the end it succeeded on some points (highlighting exotic uses of Matrix; learning all about WebVR) and failed on others (a surge in Matrix-for-VR) – although we did have a lot of fun showing it off at the ETHLDN meetup back in October. (Eagle eyed viewers may be amused to spot team Status & Matrix sitting together in the audience ;)
However, we still believe that Matrix is the missing link for decentralised communication within VR/AR, and we were lucky enough to get a talk about Matrix+WebRTC+WebVR accepted to the Real-Time Communications Devroom at FOSDEM 2018! So, given a new chance to show the world how cool Matrix-powered comms could be in VR/AR, myself and Dave Baker went on a (very) quick detour to update the demo a little…
One of the issues of the original demo is that the video calling bits were just putting plain old video planes into the scene – floating television screens of 2D video content, if you will. This is better than nothing, but it’s sort of missing the whole point of VR/AR: surely you want to see who you’re talking to in 3D? Ideally they should have the same presence as if they were physically in your virtual space. This could also be a big step towards fixing one of the oldest problems of video calling: gaze correction. We’ve been obsessed about gaze correction since our early days (pre-Matrix) building mobile video calling stacks: gaze correction tries to fix the fact that the break in eye contact caused by staring at the screen (rather than the camera) has a terrible impact on the emotional connection of a video call. *But* if the person you are talking to is 3D, you can always rotate them in 3D space (or reposition yourself) to correct their line of sight – to re-align their gaze so they’re actually looking (in VR) at the thing they’re looking at in real life!
Back in early 2017 it would have been wildly ambitious to build an off-the-shelf 3D video calling app – but this changed overnight in late 2017 with the introduction of the iPhone X and its TrueDepth infrared-dot-projector based depth camera; effectively a mini-Kinect. Suddenly we have a mainstream high quality depth+video camera perfectly optimised for 3D video calling, with excellent API support from Apple. So we decided to see if we could be first in the world (as far as we know) to do 3D video calling using the iPhone X, using Matrix to signal the WebRTC media and using our WebVR demo as the viewing environment!
Step 1: Hack on WebRTC to add support for the iPhone X depth camera as a capture device. This is pretty easy, at least if you’re just swapping WebRTC’s AVFoundationVideoCapturer to request the depth camera instead of the video camera: https://github.com/matrix-org/webrtc/commit/c3044670d87c305d8f8ee72751939e281bf5223f is the starting point.
Step 2: Build a custom Riot/iOS with the right WebRTC SDK. This is relatively easy thanks to Riot/iOS using CocoaPods and Google shipping a pod for WebRTC these days – it was a matter of tweaking Google’s pod so it could be referred to directly as a local project by Riot/iOS (and so that it provided debug symbols in the form CocoaPods expects). Brief notes are at https://github.com/matrix-org/webrtc/blob/matthew/depth/matrix/build_instructions.txt – many thanks to Manu for helping on this :)
Step 3: Decide how to encode the depth buffer. Now, the official WebRTC working group quite correctly insists that depth data should be treated as a first class citizen which is modelled and compressed in its own right. However, it looks like nobody has added first-class depth support to official WebRTC yet – and if we want to be able to easily display 3D calls on generic browsers capable of running WebVR+WebRTC+Matrix, we have no choice but do the ugly thing and encode the depth into a video signal which can be compressed with VP8/VP8/H.264 etc.
A quick search showed that some folks had already proposed a method for encoding depth data into a video signal, back in the days of the Kinect: https://reality.cs.ucl.ac.uk/projects/depth-streaming/depth-streaming.pdf. The paper outlines a fairly simple approach: you encode the 16-bit depth data into the three 8-bit colour channels; putting the coarse depth data into Blue, and then finer-grained depth data into Red and Green, encoding it as a periodic triangle wave:
In practice this means that as an object gets closer towards you, it gets gradually more blue – and meanwhile it pulses through a sequence of red and green so you can refine the precise depth more easily. So we went and implemented this, building a 16-bit lookup-table to encode the half-precision floating point 16-bit depth measurements the camera yields into video: https://github.com/matrix-org/webrtc/compare/c3044670d87c305d8f8ee72751939e281bf5223f…0258a4ef14c11a0161f078c970c64574629761c2.
Placing a video call through to another Matrix client then coughed up a video stream that looks like this:
As you can see, closer things (my head) are bluer than further things (the wall), and everything’s covered with trippy red & green stripes to refine the fine detail. For the record, the iPhone TrueDepth camera emits 640×480 depth frames at around 24Hz.
Step 4: extend matrix-vr-demo to view a dot cloud, displaced using a WebGL vertex shader based on the encoded depth info. Dave kindly did the honours: https://github.com/matrix-org/matrix-vr-demo/commit/b14cdda605d3807080049e84181b46706cec553e
Unfortunately, it showed that the depth encoding really wasn’t working very well… you can just about make out my head, but there are dots flying around all over the place, and when you view it in profile the 3D effect was almost entirely missing.
The main problems seem to be:
- Whenever there’s a big jump in depth, the stripes get incredibly noisy and don’t compress at all well, generating completely corrupt data at edges of objects (e.g. the sides of my head)
- The complexity of the pattern as a whole isn’t particularly compression-friendly
- The contrast of the red/green stripes tends to dominate, causing the arguably more important blue to get overpowered during compression.
- Converting from 4:4:4 RGB to 4:2:0 YUV (NV12) as required by WebRTC and then back to RGB inevitably entangles the colours – meaning that the extreme contrast of the red/green stripes is very visible on the blue channel after round-tripping due to sampling artefacts.
- I probably made a mistake by bitwise casting the 16-bit half-precision floating point depth values directly onto the 16-bit unsigned int lookup index, rather than interpreting the float as a number and building a new index into the lookup table based on its numeric value. As a result, depth values being encoded ended up having a much lower range than they should.
- There are probably other bugs too.
Step 5: Give up on the fancy depth encoding (for now): https://github.com/matrix-org/webrtc/commit/2f5d29352ce5d80727639991b1480f610cbdd54c. In practice, simply picking a range of the 16-bit half-precision floats to fit in the integer range [0,255] turns out to be good enough for a quick demo (i.e. 8-bit depth buffer, but over a small subset of the 16-bit depth space) – the dot cloud suddenly looked a lot more 3D and recognisable:
Step 6: Clearly this needs colour as well as depth. This means asking WebRTC to add VideoTracks for both video and depth to your call’s MediaStream. Firstly, we added a simple ‘matrixDepth’ constraint to WebRTC to tell a video source whether to capture depth or not. (Yes, I know there’s a specced way to do this, but given nothing else here is on spec, we went for the simplest approach). However, it turns out that only one WebRTC’s AVFoundationVideoCapturer can run at a time, because it manages its own AVCaptureSession and you can only have one of those at a time in a given app. As a result, the two capturers (one per video track) collided, with the second session killing the first session. As a quick fix, we modified RTCAVFoundationVideoSource to accept an existing AVCaptureSession (and AVCaptureDeviceInput) so that the application itself can handle the capture session and select the device, which can then be shared between multiple capturers: https://github.com/matrix-org/webrtc/commit/9c58465ada08018b1238fb8c5d784b5570f9246b. Finally, just needed a few lines to matrix-ios-sdk to set the constraint and send the depth as well as video… https://github.com/matrix-org/matrix-ios-sdk/compare/fa9a24a6914b207389bacdd9ad08d5386fd0644a…5947d634ae8d722133ecdbde94cccf60bb88f11d, and adding playback of both channels to the vrdemo (https://github.com/matrix-org/matrix-vr-demo/commit/4059ab671d13bb4d4eb19dd2f534d9a387e47b81 and https://github.com/matrix-org/matrix-js-sdk/commit/f3f1524fcd46d2e772fd5cd022364018c8889364) …and it worked!
However, the dot cloud obviously has some limitations – especially when you zoom in like this.
Step 7: Replace the dot cloud with a displacement-mapped mesh so that it’s solid. So as a final tweak for the demo, Dave switched out the dot cloud for a simple A-Frame plane with 640×480 vertices, keeping the same vertex shader. Ironically this is where we hit some nasty problems, as for some reason the video texture started being applied to the depth texture (albeit flickering a bit) – eventually we realised that the flickering was the vertex shader inexplicably flapping between using the depth and the video texture for the displacement map. At this point we compared it between laptops, and it turns out that for some reason the integrated Intel graphics on Dave’s Macbook Pro was choking on the two video textures, whereas a AMD Radeon R9 M370X got it right. It’s unclear if this was actually a GPU bug or an A-Frame or Three.js or WebGL or Chrome bug. Eitherway, on switching laptop to one with discrete graphics it started working perfectly! Finally, we tweaked the shader to try to reduce smearing, by discarding vertices where there are big discontinuities in depth (through looking at the partial derivatives of the depth texture). This isn’t perfect yet but it’s better than nothing. https://github.com/matrix-org/matrix-vr-demo/compare/bbd460e81ff1336cd63468e707d858d47261ea42…06abe34957732ba8c728b99f198d987fe48d0420
And here’s the end result! (complete with trancey soundtrack as the audio we recorded at FOSDEM was unusable)
Conclusion:
Hopefully this gives a bit of a taste of what proper 3D video calling could be like in VR, and how (relatively) easy it was at the Matrix level to add it in. If anyone wants to follow along at home, the various hacky branches are:
- Playback:
- Capture:
If you’d like to get involved with hacking on Matrix in VR, please come hang out at #vr:matrix.org.
Also, New Vector (where most of the core team work) is also hiring for VoIP/VR specialists right now, so if you’d like to work on this sort of thing fulltime, please contact us at jobs@matrix.org asap!
Matthew
Update: Slides from the FOSDEM talk (adapted from this blog post by Amandine) are available at https://matrix.org/~matthew/2018-02-04%20FOSDEM%20-%20VR.pdf
Update 2: The full FOSDEM talk recording is now up already at the RTC dev room at https://video.fosdem.org/2018/H.1309/!
The case for ending Amazon’s dominance
It should not be difficult to love Amazon. To consumers, it offers choice and convenience. Countless internet ventures have relied on its cheap, flexible cloud computing services to start and scale up. Amazon makes titans such as Walmart work hard for their revenue, offers a shopping search engine that is Google’s only serious rival, raises the bar for television networks and sells tablet computers at a price to make Apple loyalists stop and think.
Amazon is also giving the US economy what it needs. Two economists, Germán Gutiérrez and Thomas Philippon, have argued that corporate America is underinvesting. One reason is that companies are impatiently funnelling cash to investors and executives rather than take a long-term view.
If that is a worrisome state of affairs — and it should be — then Amazon is the shining counterexample. The online retailer’s strategy is driven not by short-term profit but by investment, innovation and growth. If only there were a few more companies like Amazon, capitalism would be in a happier spot.
But there’s the rub: there aren’t more companies like it. It’s unique, and an increasingly terrifying force in online commerce. Should regulators act? If so, how? It’s worth first disposing of a bad argument: that Amazon must be challenged because it makes life miserable for its competitors, some of which are plucky mom-and-pop operations. However emotionally appealing this might seem, it should not be the business of regulators to prop up such businesses.
Regulators have a tendency to slip into the role of protecting incumbents with surprising ease. Marc Levinson’s history of container shipping, The Box (UK) (US), describes Malcom McLean — the entrepreneur behind containerisation, a risk-taking visionary reminiscent of Amazon’s founder Jeff Bezos. When McLean tried to expand his operations, one of his largest obstacles was the Interstate Commerce Commission in the US, which regulated US railways from 1887 and interstate trucking from 1935.
The ICC, writes Mr Levinson, had to approve each new route, every new commodity and any new price schedule. When McLean wanted to start a trucking route at a low price, he had to hire lawyers and argue his case at the ICC, while his competitors protested bitterly — “unfair and destructive”, said the railways. He did not always get his way.
Antitrust authorities should not be in the business of making life easy for incumbents. What, then, should they do? There are two schools of thought. One is to focus on consumers’ interest in quality, variety and price. This has been the standard approach in US antitrust policy for several decades. Since Amazon makes slim profits and charges low prices, it raises few antitrust questions.
The alternative view — which harks back to an earlier era of antitrust during which Standard Oil and later AT&T were broken up — argues that competition is inherently good even if it is hard to quantify a benefit to consumers and that society should be wary of large or dominant companies even if their behaviour seems benign. The collapse of companies from Lehman Brothers to construction services business Carillion reminds us that size can be a problem when a company is weak as well as when it is strong.
The narrowing in antitrust thinking is described by Lina Khan in a much-read article, “Amazon’s Antitrust Paradox”. Ms Khan berates modern antitrust thinking for its “hostility to false positives”, arguing that it has become incapable of saying anything insightful about modern tech companies.
Unlike Ms Khan, I share modern antitrust’s hostility to false positives; there is a real cost to cumbersome and unnecessary meddling in a dynamic and rapidly-evolving marketplace. Donald Trump’s history of publicly attacking Mr Bezos is worth pondering too: do we really want the US government to have more discretion as to who is targeted, and why? We should not wish to return to a world in which a plucky new competitor must beg regulators — over the objections of incumbents — for permission to cut prices. We should be grateful that Mr Bezos did not face in the 1990s the regulatory obstacles that Malcom McLean dodged in the 1950s.
Yet for all this, I am deeply uneasy about Amazon’s apparently unassailable position in online retail. Yes, customers are being well served at the moment. Yet the company has acquired formidable entrenched advantages, from the information about customers and the suppliers who sell through it, to the bargaining power it has over delivery companies, to the vast network of warehouses. Those advantages were earned, but they can also be abused.
Antitrust authorities face a difficult balancing act. Regulate Amazon and you may snuff out the innovation that we all say we want more of. Punish it for success and you send a strange message to entrepreneurs and investors. Ignore it and you risk leaving vital services in the hands of an invincible monopolist.
There are no easy options, but it is time to look for a way to split Amazon into two independent companies, each with the strength to grow and invest. If Amazon is such a wonderful company, wouldn’t two Amazons be even better?
Written for and first published in the Financial Times on 19 January 2018.
My recent book is “Fifty Inventions That Shaped The Modern Economy”. Grab yourself a copy in the US or in the UK (slightly different title) or through your local bookshop.
Free email updates
(You can unsubscribe at any time)
Email Address
Saturday Morning Breakfast Cereal - The Real Supervillain

Click here to go see the bonus panel!
Hovertext:
Thanks to the patreon typo squad for pointing out that the original version of this had given Bizarro the wrong skin tone. Nerds.
New comic!
Today's News:
New arts center coming to Japantown
The goal is to kick off construction by June of 2019 (this is highly dependent on funding), and it won't be the only project in the area. Eventually the arts center is expected to be surrounded by new housing midrises and a park.
Source: The Merc Hat tip to Vianka Villanueva for sending this in!
The Follower Factory
Inside social media's black market:
The real Jessica Rychly is a Minnesota teenager with a broad smile and wavy hair. She likes reading and the rapper Post Malone. When she goes on Facebook or Twitter, she sometimes muses about being bored or trades jokes with friends. Occasionally, like many teenagers, she posts a duck-face selfie.But on Twitter, there is a version of Jessica that none of her friends or family would recognize. While the two Jessicas share a name, photograph and whimsical bio -- "I have issues" -- the other Jessica promoted accounts hawking Canadian real estate investments, cryptocurrency and a radio station in Ghana. The fake Jessica followed or retweeted accounts using Arabic and Indonesian, languages the real Jessica does not speak. While she was a 17-year-old high school senior, her fake counterpart frequently promoted graphic pornography, retweeting accounts called Squirtamania and Porno Dan.
All these accounts belong to customers of an obscure American company named Devumi that has collected millions of dollars in a shadowy global marketplace for social media fraud. Devumi sells Twitter followers and retweets to celebrities, businesses and anyone who wants to appear more popular or exert influence online. Drawing on an estimated stock of at least 3.5 million automated accounts, each sold many times over, the company has provided customers with more than 200 million Twitter followers, a New York Times investigation found.
Previously, previously, previously, previously, previously, previously, previously, previously, previously, previously, previously, previously.
creek-nymph: Planet Earth:Fresh Water
Mahmoudlol it's those terrifying dolphins ben loves (they don't look so bad here, or were those different/pinker ones)
Today in CV Dazzle News
Mahmoudfuckin lol
Adversarial Patch:These adversarial patches can be printed, added to any scene, photographed, and presented to image classifiers; even when the patches are small, they cause the classifiers to ignore the other items in the scene and report a chosen target class.We present a method to create universal, robust, targeted adversarial image patches in the real world. The patches are universal because they can be used to attack any scene, robust because they work under a wide variety of transformations, and targeted because they can cause a classifier to output any target class.
Previously, previously, previously, previously, previously, previously, previously, previously, previously, previously, previously.
As of today, no US airlines operate the mighty Boeing 747

Mike Kane/Bloomberg/Getty Images
On Wednesday, Delta Airlines flight 9771 flew from Atlanta to Pinal Airpark in Arizona. It wasn't a full flight—just 48 people on board. But it was a milestone—and not just for the two people who got married mid-flight—for it marked the very last flight of a Boeing 747 being operated by a US airline. Delta's last scheduled passenger service with the jumbo was actually late in December, at which point it conducted a farewell tour and then some charter flights. But as of today, after 51 long years in service, if you want to ride a 747 you'll need to be traveling abroad.
Way back in the 1960s, when the white heat of technological progress was burning bright, it looked for a while as if supersonic air travel was going to be the next big thing. France and Britain were collaborating on a new kind of airliner that would fly at twice the speed of sound and shrink the globe. But there was just one thing they hadn't counted on: Boeing and its gargantuan 747 jumbo jet. The double-decker airliner wouldn't break the sound barrier, but its vast size compared to anything else in the skies helped drop the cost of long-haul air travel, opening it up to the people in a way Concorde could never hope to do.
How to Download Fire and Fury: Inside the Trump White House Now as a Free Audiobook?: Check Out Audible’s 30-Day Free Trial
Mahmoudlol

Despite cease and desist orders issued by the president's lawyers, Michael Wolff's Fire and Fury: Inside the Trump White House is now out and it's the #1 bestselling book on Amazon. If you want a print copy, you'll have to wait 2-4 weeks. But there are some more immediate options: You can instantly snag a copy in Kindle format (price $14.99). Or download it as an audio book essentially for free.
If you start a 30 day free trial with Audible.com, you can download two free audio books of your choice. At the end of 30 days, you can decide whether you want to become an Audible subscriber or not. (I definitely recommend the service and use it every day.) No matter what you decide, you get to keep the two free audiobooks. Fire and Fury: Inside the Trump White House can be one of them. It runs 12 hours.
To sign up for Audible's free trial program here, follow the prompts/instructions on this page.
NB: Audible is an Amazon.com subsidiary, and we're a member of their affiliate program. Also, this post is not an endorsement of the book. (We haven't read it yet.) It's simply an fyi on how you can "read" a bestselling book that's in short supply.
Follow Open Culture on Facebook and Twitter and share intelligent media with your friends. Or better yet, sign up for our daily email and get a daily dose of Open Culture in your inbox.
If you'd like to support Open Culture and our mission, please consider making a donation to our site. It's hard to rely 100% on ads, and your contributions will help us provide the best free cultural and educational materials.
Related Content:
900 Free Audio Books: Download Great Books for Free
Gonzo Illustrator Ralph Steadman Draws the American Presidents, from Nixon to Trump
A 1958 TV Show Had an Unsavory Character Named “Trump” Who Promised to Build a Wall & Save the World
How to Download <i>Fire and Fury: Inside the Trump White House</i> Now as a Free Audiobook?: Check Out Audible’s 30-Day Free Trial is a post from: Open Culture. Follow us on Facebook, Twitter, and Google Plus, or get our Daily Email. And don't miss our big collections of Free Online Courses, Free Online Movies, Free eBooks, Free Audio Books, Free Foreign Language Lessons, and MOOCs.
"Bits, in this case, are actual physical objects."
Mahmoudlol emulating pong wow

MAME is now emulating LCD handheld games, which is weird and kind of amazing. The sort of games that had little light-up chunks of the "moving" portions on top of a printed background, like an old digital watch. Here's a thread describing the extraction process:The first step is identification. They're usually microcontrollers, but can someitmes (rarely, even) be pure state machines in the form of an ASIC. This does happen, though, and if they're not an MCU, it makes it a lot harder to emulate.To identify the MCU, the circuit board (which is usually simple, with just a handful of passive components other than the chip itself) is traced out, and "Sean Riddle" of the Bannister forums tries to match the pinout against any known pinouts.
In the event that it matches an MCU model for which there's a known method for dumping the internal ROM, Sean breaks out one of several test jigs and pulls out the data, then wires up the LCD and photographs the segments to be vectorized.
Since the chips themselves usually have all identifying markings scrubbed, this is about the only way to do it in a safe manner. It also assumes the chip is in a normal plastic or ceramic package. If it's unidentifiable or is "globbed" with an epoxy dot, the real fun begins!
In that case, the chip is removed from the board in any way possible, and the whole shebang is dissolved in fuming nitric acid until the silicon die itself is exposed. The silicon die is then cleaned in Whink and put under a microscope.
Multiple photos are taken of the exposed die, then stitched together. At this point, it would be a good time for a small digression about "mask programmed" versus "electrically programmed" silicon chips.
Hand-waving away certain details, the vast majority of modern chips are electrically programmed. The chip starts out blank, and has its program uploaded at the time of manufacturing, usually via pogo pins against the wafer itself, or a custom jig after the chip is packaged.
But, for chips that are going to have a lot of them made, this step costs too much time and money. In these cases, the ROM bits are literally a part of the photolithographic mask used to manufacture the silicon chip itself. So yes, bits in this case are actual physical objects.
The bright side to this is twofold: First, after photographing, the bits can be pulled out of the images however. Computer vision, some unfortunate fellow sitting and manually plugging 0/1 into an editor, whatever method results in the least number of errors.
Second, and most importantly, it means that the actual ROM bits are usually the absolute last thing to break. So, in the event that you have a partly-functioning or non-functioning LCD handheld that you'd like to see dumped, take heart and send me a DM! :-)
He's looking for donations to help him buy a big auction of old handhelds to de-cap and extract.
I understand that MAME can also emulate Pong now, and I'm not even really sure what that means, because Pong was arguably not a computer. It didn't have "code". It didn't have a CPU. It was wire-wrapped out of discrete analog components: a state machine and signal generator made out of relays as big as your thumbnail.
Previously, previously, previously, previously, previously, previously, previously, previously, previously, previously, previously, previously, previously, previously, previously, previously, previously.





















