10 interesting stories served every morning and every evening.




1 375 shares, 37 trendiness

the frontier of vision AI

Your browser does not sup­port the au­dio el­e­ment.

This con­tent is gen­er­ated by Google AI. Generative AI is ex­per­i­men­tal

Gemini 3 Pro rep­re­sents a gen­er­a­tional leap from sim­ple recog­ni­tion to true vi­sual and spa­tial rea­son­ing. It is our most ca­pa­ble mul­ti­modal model ever, de­liv­er­ing state-of-the-art per­for­mance across doc­u­ment, spa­tial, screen and video un­der­stand­ing. This model sets new highs on vi­sion bench­marks such as MMMU Pro and Video MMMU for com­plex vi­sual rea­son­ing, as well as use-case-spe­cific bench­marks across doc­u­ment, spa­tial, screen and long video un­der­stand­ing.

Real-world doc­u­ments are messy, un­struc­tured, and dif­fi­cult to parse — of­ten filled with in­ter­leaved im­ages, il­leg­i­ble hand­writ­ten text, nested ta­bles, com­plex math­e­mat­i­cal no­ta­tion and non-lin­ear lay­outs. Gemini 3 Pro rep­re­sents a ma­jor leap for­ward in this do­main, ex­celling across the en­tire doc­u­ment pro­cess­ing pipeline — from highly ac­cu­rate Optical Character Recognition (OCR) to com­plex vi­sual rea­son­ing.To truly un­der­stand a doc­u­ment, a model must ac­cu­rately de­tect and rec­og­nize text, ta­bles, math for­mu­las, fig­ures and charts re­gard­less of noise or for­mat.A fun­da­men­tal ca­pa­bil­ity is derendering” — the abil­ity to re­verse-en­gi­neer a vi­sual doc­u­ment back into struc­tured code (HTML, LaTeX, Markdown) that would recre­ate it. As il­lus­trated be­low, Gemini 3 demon­strates ac­cu­rate per­cep­tion across di­verse modal­i­ties in­clud­ing con­vert­ing an 18th-century mer­chant log into a com­plex table, or trans­form­ing a raw im­age with math­e­mat­i­cal an­no­ta­tion into pre­cise LaTeX code.

Example 2: Reconstructing equa­tions from an im­age

Example 3: Reconstructing Florence Nightingale’s orig­i­nal Polar Area Diagram into an in­ter­ac­tive chart (with a tog­gle!)

Users can rely on Gemini 3 to per­form com­plex, multi-step rea­son­ing across ta­bles and charts — even in long re­ports. In fact, the model no­tably out­per­forms the hu­man base­line on the CharXiv Reasoning bench­mark (80.5%).To il­lus­trate this, imag­ine a user an­a­lyz­ing the 62-page U.S. Census Bureau Income in the United States: 2022” re­port with the fol­low­ing prompt: Compare the 2021–2022 per­cent change in the Gini in­dex for Money Income” ver­sus Post-Tax Income”, and what caused the di­ver­gence in the post-tax mea­sure, and in terms of Money Income”, does it show the low­est quin­tile’s share ris­ing or falling?”Swipe through the im­ages be­low to see the mod­el’s step-by-step rea­son­ing.

Visual Extraction: To an­swer the Gini Index Comparison ques­tion, Gemini lo­cated and cross-ref­er­enced this info in Figure 3 about Money Income de­creased by 1.2 per­cent” and in Table B-3 about Post-Tax Income in­creased by 3.2 per­cent”

Causal Logic: Crucially, Gemini 3 does not stop at the num­bers; it cor­re­lates this gap with the tex­t’s pol­icy analy­sis, cor­rectly iden­ti­fy­ing Lapse of ARPA Policies and the end of Stimulus Payments are the main causes.

Numerical Comparison: To com­pare the low­est quan­tile’s share ris­ing or falling, Gemini3 looked at table A-3, and com­pared the num­ber of 2.9 and 3.0, and con­cluded that the share of ag­gre­gate house­hold in­come held by the low­est quin­tile was ris­ing.”

Gemini 3 Pro is our strongest spa­tial un­der­stand­ing model so far. Combined with its strong rea­son­ing, this en­ables the model to make sense of the phys­i­cal world.Point­ing ca­pa­bil­ity: Gemini 3 has the abil­ity to point at spe­cific lo­ca­tions in im­ages by out­putting pixel-pre­cise co­or­di­nates. Sequences of 2D points can be strung to­gether to per­form com­plex tasks, such as es­ti­mat­ing hu­man poses or re­flect­ing tra­jec­to­ries over time.Open vo­cab­u­lary ref­er­ences: Gemini 3 iden­ti­fies ob­jects and their in­tent us­ing an open vo­cab­u­lary. The most di­rect ap­pli­ca­tion is ro­bot­ics: the user can ask a ro­bot to gen­er­ate spa­tially grounded plans like, Given this messy table, come up with a plan on how to sort the trash.” This also ex­tends to AR/XR de­vices, where the user can re­quest an AI as­sis­tant to Point to the screw ac­cord­ing to the user man­ual.”

Gemini 3.0 Pro’s spa­tial un­der­stand­ing re­ally shines through its screen un­der­stand­ing of desk­top and mo­bile OS screens. This re­li­a­bil­ity helps make com­puter use agents ro­bust enough to au­to­mate repet­i­tive tasks. UI un­der­stand­ing ca­pa­bil­i­ties can also en­able tasks like QA test­ing, user on­board­ing and UX an­a­lyt­ics. The fol­low­ing com­puter use demo shows the model per­ceiv­ing and click­ing with high pre­ci­sion.

Gemini 3 Pro takes a mas­sive leap for­ward in how AI un­der­stands video, the most com­plex data for­mat we in­ter­act with. It is dense, dy­namic, mul­ti­modal and rich with con­text.High frame rate un­der­stand­ing: We have op­ti­mized the model to be much stronger at un­der­stand­ing fast-paced ac­tions when sam­pling at >1 frames-per-sec­ond. Gemini 3 Pro can cap­ture rapid de­tails — vi­tal for tasks like an­a­lyz­ing golf swing me­chan­ics.

By pro­cess­ing video at 10 FPS—10x the de­fault speed—Gem­ini 3 Pro catches every swing and shift in weight, un­lock­ing deep in­sights into player me­chan­ics.

2. Video rea­son­ing with thinking” mode: We up­graded thinking” mode to go be­yond ob­ject recog­ni­tion to­ward true video rea­son­ing. The model can now bet­ter trace com­plex cause-and-ef­fect re­la­tion­ships over time. Instead of just iden­ti­fy­ing what is hap­pen­ing, it un­der­stands why it is hap­pen­ing.3. Turning long videos into ac­tion: Gemini 3 Pro bridges the gap be­tween video and code. It can ex­tract knowl­edge from long-form con­tent and im­me­di­ately trans­late it into func­tion­ing apps or struc­tured code.

Here are a few ways we think var­i­ous fields will ben­e­fit from Gemini 3’s ca­pa­bil­i­ties.Gem­ini 3.0 Pro’s en­hanced vi­sion ca­pa­bil­i­ties drive sig­nif­i­cant gains in the ed­u­ca­tion field, par­tic­u­larly for di­a­gram-heavy ques­tions cen­tral to math and sci­ence. It suc­cess­fully tack­les the full spec­trum of mul­ti­modal rea­son­ing prob­lems found from mid­dle school through post-sec­ondary cur­ricu­lums. This in­cludes vi­sual rea­son­ing puz­zles (like Math Kangaroo) and com­plex chem­istry and physics di­a­grams.Gem­ini 3’s vi­sual in­tel­li­gence also pow­ers the gen­er­a­tive ca­pa­bil­i­ties of Nano Banana Pro. By com­bin­ing ad­vanced rea­son­ing with pre­cise gen­er­a­tion, the model, for ex­am­ple, can help users iden­tify ex­actly where they went wrong in a home­work prob­lem.

Prompt: Here is a photo of my home­work at­tempt. Please check my steps and tell me where I went wrong. Instead of ex­plain­ing in text, show me vi­su­ally on my im­age.” (Note: Student work is shown in blue; model cor­rec­tions are shown in red). [See prompt in Google AI Studio]

Gemini 3 Pro

stands as our most ca­pa­ble gen­eral model for med­ical and bio­med­ical im­agery un­der­stand­ing, achiev­ing state-of-the-art per­for­mance across ma­jor pub­lic bench­marks in MedXpertQA-MM (a dif­fi­cult ex­pert-level med­ical rea­son­ing exam), VQA-RAD (radiology im­agery Q&A) and MicroVQA (multimodal rea­son­ing bench­marks for mi­croscopy based bi­o­log­i­cal re­search).

Gemini 3 Pro’s en­hanced doc­u­ment un­der­stand­ing helps pro­fes­sion­als in fi­nance and law tackle highly com­plex work­flows. Finance plat­forms can seam­lessly an­a­lyze dense re­ports filled with charts and ta­bles, while le­gal plat­forms ben­e­fit from the mod­el’s so­phis­ti­cated doc­u­ment rea­son­ing.

Gemini 3 Pro im­proves the way it processes vi­sual in­puts by pre­serv­ing the na­tive as­pect ra­tio of im­ages. This dri­ves sig­nif­i­cant qual­ity im­prove­ments across the board.

Additionally, de­vel­op­ers gain gran­u­lar con­trol over per­for­mance and cost via the new me­di­a_res­o­lu­tion pa­ra­me­ter. This al­lows you to tune vi­sual to­ken us­age to bal­ance fi­delity against con­sump­tion:High res­o­lu­tion: Maximizes fi­delity for tasks re­quir­ing fine de­tail, such as dense OCR or com­plex doc­u­ment un­der­stand­ing.Low res­o­lu­tion: Optimizes for cost and la­tency on sim­pler tasks, such as gen­eral scene recog­ni­tion or long-con­text tasks.For spe­cific rec­om­men­da­tions, re­fer to our Gemini 3.0 Documentation Guide.We are ex­cited to see what you build with these new ca­pa­bil­i­ties. To get started, check out our de­vel­oper doc­u­men­ta­tion or play with the model in Google AI Studio to­day.

...

Read the original on blog.google »

2 354 shares, 16 trendiness

Introducing UniFi 5G

The UniFi 5G Max lineup was cre­ated with a clear goal in mind: de­liver a sleek, ver­sa­tile, and ex­cep­tion­ally pow­er­ful 5G in­ter­net ex­pe­ri­ence that works ef­fort­lessly in any en­vi­ron­ment.

The UniFi 5G Max makes de­ploy­ment easy, whether in­stalled lo­cally or at a re­mote site. Plug it into any PoE port and it in­stantly ap­pears as a ready to use WAN in­ter­face, no mat­ter whether plugged di­rectly into your UniFi gate­way or into your of­fice switch. No new ca­ble runs needed! It sits neatly on a desk, but you can repo­si­tion it for the best pos­si­ble sig­nal us­ing the in­cluded wall or win­dow mount.

Automatic adop­tion as a UniFi WAN in­ter­face on any PoE port.

Optimize sig­nal re­cep­tion by repo­si­tion­ing any­where on the net­work.

Ideal for home, of­fice, or re­mote site use.

A com­pact form fac­tor de­signed for fast in­stal­la­tion and flex­i­ble place­ment at the core or edge.

The 5G Max de­liv­ers down­link speeds up to 2 Gbps with ul­tra low la­tency that makes it re­li­able as a pri­mary con­nec­tion and seam­less as a backup WAN. UniFi rout­ing poli­cies and SLAs let you choose ex­actly how and when 5G is used, and for which clients and VLANs. Easily set per-SIM us­age lim­its to avoid over­age costs with just a few clicks.

High speed 5G that adapts to your net­work’s rules, not the other way around.

For tougher en­vi­ron­ments or de­ploy­ments with poor in­door cel­lu­lar cov­er­age, the out­door model main­tains the same high per­for­mance cel­lu­lar con­nec­tiv­ity with im­proved an­tenna per­for­mance in a durable IP67 rated en­clo­sure. It is built for rooftop in­stalls, off site lo­ca­tions, and mo­bile de­ploy­ments where re­li­a­bil­ity is crit­i­cal. Just like its in­door coun­ter­part, you can also con­nect it via any PoE port, any­where on your net­work, greatly sim­pli­fy­ing ca­bling re­quire­ments.

A weath­er­proof 5G de­vice built for re­li­a­bil­ity wher­ever you place it.

If you want every­thing UniFi in one de­vice, the DreamRouter 5G Max com­bines 5G con­nec­tiv­ity with WiFi 7, lo­cal stor­age, and full UniFi OS ap­pli­ca­tion sup­port. Deploy it any­where 5G is avail­able and run an en­tire high-per­for­mance and scal­able net­work stack in­stantly.

Complete rout­ing and man­age­ment in one de­vice

A com­plete UniFi sys­tem pow­ered by the reach and speed of 5G.

Every de­vice in the UniFi 5G lineup sup­ports both phys­i­cal SIMs and eSIM, giv­ing you the free­dom to choose your car­rier and switch when­ever needed with zero fric­tion. All are equipped with dual SIM slots, with one SIM re­place­able by eSIM, and are fully un­locked: any ma­jor car­rier, any type of de­ploy­ment, with one piece of hard­ware.

Carrier free­dom built di­rectly into the hard­ware from day 1. The UniFi 5G lineup brings sleek de­sign, pow­er­ful per­for­mance, easy in­stal­la­tion, and gen­uine WAN flex­i­bil­ity to every de­ploy­ment.

...

Read the original on blog.ui.com »

3 349 shares, 23 trendiness

Most Technical Problems Are Really People Problems

Skip to main con­tent

I once worked at a com­pany which had an enor­mous amount of tech­ni­cal debt - mil­lions of lines of code, no unit tests, based on frame­works that were well over a decade out of date.  On one spe­cific pro­ject, we had a mar­ket need to get some Windows-only mod­ules run­ning on Linux, and rather than cross-com­pil­ing, an­other team had sim­ply copied & pasted a few hun­dred thou­sand lines of code, swap­ping Windows-specific com­po­nents for Linux-specific. For the non-tech­ni­cal reader, this is an enor­mous prob­lem be­cause now two ver­sions of the code ex­ist.  So, all fea­tures & bug fixes must be solved in two sep­a­rate code­bases that will grow apart over time.  When I heard about this, a young & naive ver­sion of me set out to fix the sit­u­a­tion….Tech debt pro­jects are al­ways a hard sell to man­age­ment, be­cause even if every­thing goes flaw­lessly, the code just does roughly what it did be­fore.  This pro­ject was no ex­cep­tion, and the op­tics weren’t great.  I did as many en­gi­neers do and ignored the pol­i­tics”, put my head down, and got it done.  But, the pro­ject went long, and I lost man­age­men­t’s trust in the process.I re­al­ized I was es­sen­tially try­ing to solve a peo­ple prob­lem with a tech­ni­cal so­lu­tion.  Most of the de­vel­op­ers at this com­pany were happy do­ing the same thing to­day that they did yes­ter­day…and five years ago.  As Andrew Harmel-Law points out, code tends to fol­low the per­son­al­i­ties of the peo­ple that wrote it.  Personality types who in­tensely dis­like change tend not to de­sign their code with fu­ture change in mind.Most tech­ni­cal prob­lems are re­ally peo­ple prob­lems.  Think about it.  Why does tech­ni­cal debt ex­ist?  Because re­quire­ments weren’t prop­erly clar­i­fied be­fore work be­gan.  Because a sales­per­son promised an un­re­al­is­tic dead­line to a cus­tomer.  Because a de­vel­oper chose an out­dated tech­nol­ogy be­cause it was com­fort­able.  Because man­age­ment was too re­ac­tive and can­celled a pro­ject mid-flight.  Because some­one’s ego would­n’t let them see a bet­ter way of do­ing things.The core is­sue with the pro­ject was that ad­mit­ting the need for refac­tor­ing was also to ad­mit that the way the com­pany was build­ing soft­ware was bro­ken and that in­di­vid­ual skillsets were sorely out of date.  My small team was try­ing to fix one mod­ule of many, while other de­vel­op­ers were writ­ing code as they had been for decades.  I had one de­vel­oper openly tell me, I don’t want to learn any­thing new.”  I re­al­ized that you’ll never clean up tech debt faster than oth­ers cre­ate it.  It is like triage in an emer­gency room, you must stop the bleed­ing first, then you can fix what­ever is bro­ken.The pro­ject also dis­abused me of the en­gi­neer’s ideal of a world in which en­gi­neer­ing prob­lems can be solved in a vac­uum - stay­ing out of politics” and let­ting the work speak for it­self - a world where dead­lines don’t ex­ist…and let’s be hon­est, nei­ther do cus­tomers.  This ideal world rarely ex­ists.  The vast ma­jor­ity of pro­jects have non-tech­ni­cal stake­hold­ers, and telling them just trust me; we’re work­ing on it” does­n’t cut it.  I re­al­ized that the per­cep­tion that your team is get­ting a lot done is just as im­por­tant as get­ting a lot done.Non-tech­ni­cal peo­ple do not in­tu­itively un­der­stand the level of ef­fort re­quired or the need for tech debt cleanup; it must be com­mu­ni­cated ef­fec­tively by en­gi­neer­ing - in both ini­tial es­ti­mates & pro­ject up­dates.  Unless lead­er­ship has an en­gi­neer­ing back­ground, the value of the tech­ni­cal debt work likely needs to be quan­ti­fied and shown as busi­ness value.Per­haps these are the lessons that prep one for more se­nior po­si­tions.  In my opin­ion, any­one above se­nior en­gi­neer level needs to know how to col­lab­o­rate cross-func­tion­ally, re­gard­less of whether they choose a tech­ni­cal or man­age­ment track.  Schools teach Computer Science, not nav­i­gat­ing per­son­al­i­ties, egos, and per­sonal blindspots.  I have worked with some in­cred­i­ble en­gi­neers, bet­ter than my­self - the type that have deep tech­ni­cal knowl­edge on just about any tech­nol­ogy you bring up.  When I was younger, I wanted to be that en­gi­neer - the engineer’s en­gi­neer”.  But I re­al­ize now, that is not my per­son­al­ity.  I’m too ADD to be com­pletely heads down. :)For all of their (considerable) strengths, more of­ten than not, those en­gi­neers shy away from the in­ter­per­sonal.  They can be in­cred­i­bly pro­duc­tive ICs, but may fail with big­ger ini­tia­tives be­cause they are only one per­son - a sin­gle proces­sor core can only go so fast.  Per­haps equally valu­able is the heads up coder” - the per­son who is deeply tech­ni­cal, but also able to pick their head up & see pro­ject risks com­ing (technical & oth­er­wise) and steer the team around them.

You start out your day with a nice cup of cof­fee, and think, Ah, green­field pro­ject day…smooth sail­ing”.  You fire up Visual Studio and cre­ate a new C# pro­ject.  First things first, I need li­brary X.” you say.  Wait, what the?”   The full er­ror:  Package MyPackage 1.0.0.0’ was re­stored us­ing .NETFramework,Version=v4.6.1, .NETFramework,Version=v4.6.2, .NETFramework,Version=v4.7, .NETFramework,Version=v4.7.1, .NETFramework,Version=v4.7.2, .NETFramework,Version=v4.8, .NETFramework,Version=v4.8.1’ in­stead of the pro­ject tar­get frame­work net6.0’. This pack­age may not be fully com­pat­i­ble with your pro­ject.   Ok” you think, That li­brary is a bit older.  I’ll go up­date the li­brary pro­ject to .NET 6 to match my pro­ject.  But, where is .NET 6?     Ok, what about my new pro­ject?  Just as a test, does the warn­ing go away if I set it to an older .NET Framework?  Wait, where are the .NET Framework ver­sions?…

Pointers are funny things.  They are one of the make or break con­cepts for be­gin­ners, and even years later, they can cause grief to ex­pe­ri­enced de­vel­op­ers.  I am no ex­cep­tion.  Here is one such story: I was faced with a class which I wanted to refac­tor.  It can be sim­pli­fied as fol­lows: In the in­ter­est of break­ing up the re­spon­si­bil­i­ties, I added a cou­ple of in­ter­faces. The idea is that I can pass around smart point­ers to these in­ter­faces and be­gin to de­cou­ple por­tions of the code.  For ex­am­ple, I can in­ject them into classes that need them: However, I made a mis­take.  I blame it on years of us­ing boost::in­trustive_ptr in­stead of std::shared_ptr, but enough ex­cuses.  Let’s see if you can spot it. Do you see it?  If so, give your­self 5 points.  If not, maybe af­ter see­ing the out­put: second’ go­ing out of scope… Destructor first’ go­ing out of scope… root’ go­ing out of scope… All done… Both shared point­ers ( first & sec­ond…

...

Read the original on blog.joeschrag.com »

4 303 shares, 17 trendiness

Kenyan court declares law banning seed sharing unconstitutional

Add AP News as your pre­ferred source to see more of our sto­ries on Google.

Add AP News as your pre­ferred source to see more of our sto­ries on Google.

KISUMU, Kenya (AP) — A high court in Kenya on Thursday de­clared un­con­sti­tu­tional sec­tions of a seed law that pre­vented farm­ers from shar­ing and sell­ing in­dige­nous seeds in what food cam­paign­ers have called a land­mark win for food se­cu­rity.

Farmers in Kenya could face up to two years’ im­pris­on­ment and a fine of 1 mil­lion Kenya shillings ($7,700) for shar­ing seeds through their com­mu­nity seed banks, ac­cord­ing to a seed law signed in 2012.

Justice Rhoda Rutto on Thursday said sec­tions of the seed law that gave gov­ern­ment of­fi­cials pow­ers to raid seed banks and seize seeds were also un­con­sti­tu­tional.

The law was in­tro­duced as a mea­sure to curb grow­ing sale of coun­ter­feit seeds that were caus­ing loses in the agri­cul­tural sec­tor and gave sole seed trad­ing rights to li­censed com­pa­nies.

The case had been filed by 15 small­holder farm­ers, who are mem­bers of com­mu­nity seed banks that have been in op­er­a­tion for years, pre­serv­ing and shar­ing seeds among col­leagues.

A farmer, Samuel Wathome, who was among the 15, said the old farm­ing prac­tices had been vin­di­cated.

My grand­mother saved seeds, and to­day the court has said I can do the same for my grand­chil­dren with­out fear of the po­lice or of prison,” he said.

Elizabeth Atieno, a food cam­paigner at Greenpeace Africa, called the win a victory for our cul­ture, our re­silience, and our fu­ture.”

By val­i­dat­ing in­dige­nous seeds, the court has struck a blow against the cor­po­rate cap­ture of our food sys­tem. We can fi­nally say that in Kenya, feed­ing your com­mu­nity with cli­mate-re­silient, lo­cally adapted seeds is no longer a crime,” she said.

Food cam­paign­ers have in the past en­cour­aged gov­ern­ments to work with farm­ers to pre­serve in­dige­nous seeds as a way of en­sur­ing food se­cu­rity by of­fer­ing farm­ers more plant va­ri­eties.

Indigenous seeds are be­lieved to be drought re­sis­tant and adapt­able to the cli­mate con­di­tions of their na­tive ar­eas, and hence of­ten out­per­form hy­brid seeds.

Kenya has a na­tional seed bank based near the cap­i­tal Nairobi where in­dige­nous seeds are stored in cold rooms, but farm­ers say com­mu­nity seed banks are equally im­por­tant for va­ri­ety and prox­im­ity to the farmer.

The coun­try has faced chal­lenges in the seed sec­tor where coun­ter­feit seeds were sold to farm­ers, lead­ing to losses amount­ing to mil­lions of shillings in a coun­try that re­lies on rain-fed agri­cul­ture.

...

Read the original on apnews.com »

5 287 shares, 21 trendiness

Framework Laptop 13 gets ARM processor with 12 cores via upgrade kit

The Qualcomm Snapdragon X Plus and Snapdragon X Elite have proven that ARM proces­sors have earned a place in the lap­top mar­ket, as de­vices like the Lenovo IdeaPad Slim 5 stand out with their long bat­tery life and an af­ford­able price point.

MetaComputing is now of­fer­ing an al­ter­na­tive to Intel, AMD and the Snapdragon X se­ries. Specifically, the com­pany has in­tro­duced a main­board that can be in­stalle in the Framework Laptop 13 or in a mini PC case. This main­board is equipped with a CIX CP8180 ARM chipset, which is also found in­side the Minisforum MS-R1. This proces­sor has a to­tal of eight ARM Cortex-A720 per­for­mance cores, the two fastest can hit boost clock speeds of up to 2.6 GHz. Moreover, there are four Cortex-A520 ef­fi­ciency cores.

...

Read the original on www.notebookcheck.net »

6 252 shares, 14 trendiness

Influential study on glyphosate safety retracted 25 years after publication

A quar­ter-cen­tury af­ter its pub­li­ca­tion, one of the most in­flu­en­tial re­search ar­ti­cles on the po­ten­tial car­cino­genic­ity of glyphosate has been re­tracted for several crit­i­cal is­sues that are con­sid­ered to un­der­mine the aca­d­e­mic in­tegrity of this ar­ti­cle and its con­clu­sions.” In a re­trac­tion no­tice dated Friday, November 28, the jour­nal Regulatory Toxicology and Pharmacology an­nounced that the study, pub­lished in April 2000 and con­clud­ing the her­bi­cide was safe, has been re­moved from its archives. The dis­avowal comes 25 years af­ter pub­li­ca­tion and eight years af­ter thou­sands of in­ter­nal Monsanto doc­u­ments were made pub­lic dur­ing US court pro­ceed­ings (the Monsanto Papers”), re­veal­ing that the ac­tual au­thors of the ar­ti­cle were not the listed sci­en­tists — Gary M. Williams (New York Medical College), Robert Kroes (Ritox, Utrecht University, Netherlands), and Ian C. Munro (Intertek Cantox, Canada) — but rather Monsanto em­ploy­ees.

Known as ghostwriting,” this prac­tice is con­sid­ered a form of sci­en­tific fraud. It in­volves com­pa­nies pay­ing re­searchers to sign their names to re­search ar­ti­cles they did not write. The mo­ti­va­tion is clear: When a study sup­ports the safety of a pes­ti­cide or drug, it ap­pears far more cred­i­ble if not au­thored by sci­en­tists em­ployed by the com­pany mar­ket­ing the prod­uct.

You have 73.89% of this ar­ti­cle left to read. The rest is for sub­scribers only.

...

Read the original on www.lemonde.fr »

7 250 shares, 10 trendiness

State Department to deny visas to fact checkers and others, citing 'censorship'

The State Department is in­struct­ing its staff to re­ject visa ap­pli­ca­tions from peo­ple who worked on fact-check­ing, con­tent mod­er­a­tion or other ac­tiv­i­ties the Trump ad­min­is­tra­tion con­sid­ers censorship” of Americans’ speech.

The di­rec­tive, sent in an in­ter­nal memo on Tuesday, is fo­cused on ap­pli­cants for H-1B visas for highly skilled work­ers, which are fre­quently used by tech com­pa­nies, among other sec­tors. The memo was first re­ported by Reuters; NPR also ob­tained a copy.

If you un­cover ev­i­dence an ap­pli­cant was re­spon­si­ble for, or com­plicit in, cen­sor­ship or at­tempted cen­sor­ship of pro­tected ex­pres­sion in the United States, you should pur­sue a find­ing that the ap­pli­cant is in­el­i­gi­ble” for a visa, the memo says. It refers to a pol­icy an­nounced by Secretary of State Marco Rubio in May re­strict­ing visas from be­ing is­sued to foreign of­fi­cials and per­sons who are com­plicit in cen­sor­ing Americans.”

The Trump ad­min­is­tra­tion has been highly crit­i­cal of tech com­pa­nies’ ef­forts to po­lice what peo­ple are al­lowed to post on their plat­forms and of the broader field of trust and safety, the tech in­dus­try’s term for teams that fo­cus on pre­vent­ing abuse, fraud, il­le­gal con­tent, and other harm­ful be­hav­ior on­line.

President Trump was banned from mul­ti­ple so­cial me­dia plat­forms in the af­ter­math of his sup­port­ers’ at­tack on the Capitol on Jan. 6, 2021. While those bans have since been lifted, the pres­i­dent and mem­bers of his ad­min­is­tra­tion fre­quently cite that ex­pe­ri­ence as ev­i­dence for their claims that tech com­pa­nies un­fairly tar­get con­ser­v­a­tives — even as many tech lead­ers have eased their poli­cies in the face of that back­lash.

Tuesday’s memo calls out H-1B visa ap­pli­cants in par­tic­u­lar as many work in or have worked in the tech sec­tor, in­clud­ing in so­cial me­dia or fi­nan­cial ser­vices com­pa­nies in­volved in the sup­pres­sion of pro­tected ex­pres­sion.”

It di­rects con­sular of­fi­cers to thoroughly ex­plore” the work his­to­ries of ap­pli­cants, both new and re­turn­ing, by re­view­ing their re­sumes, LinkedIn pro­files, and ap­pear­ances in me­dia ar­ti­cles for ac­tiv­i­ties in­clud­ing com­bat­ting mis­in­for­ma­tion, dis­in­for­ma­tion or false nar­ra­tives, fact-check­ing, con­tent mod­er­a­tion, com­pli­ance, and trust and safety.

I’m alarmed that trust and safety work is be­ing con­flated with censorship’,” said Alice Goguen Hunsberger, who has worked in trust and safety at tech com­pa­nies in­clud­ing OpenAI and Grindr.

Trust and safety is a broad prac­tice which in­cludes crit­i­cal and life-sav­ing work to pro­tect chil­dren and stop CSAM [child sex­ual abuse ma­te­r­ial], as well as pre­vent­ing fraud, scams, and sex­tor­tion. T&S work­ers are fo­cused on mak­ing the in­ter­net a safer and bet­ter place, not cen­sor­ing just for the sake of it,” she said. Bad ac­tors that tar­get Americans come from all over the world and it’s so im­por­tant to have peo­ple who un­der­stand dif­fer­ent lan­guages and cul­tures on trust and safety teams — hav­ing global work­ers at tech com­pa­nies in [trust and safety] ab­solutely keeps Americans safer.”

In a state­ment, a State Department spokesper­son who de­clined to give their name said the de­part­ment does not com­ment on allegedly leaked doc­u­ments,” but added: the Administration has made clear that it de­fends Americans’ free­dom of ex­pres­sion against for­eign­ers who wish to cen­sor them. We do not sup­port aliens com­ing to the United States to work as cen­sors muz­zling Americans.”

The state­ment con­tin­ued: In the past, the President him­self was the vic­tim of this kind of abuse when so­cial me­dia com­pa­nies locked his ac­counts. He does not want other Americans to suf­fer this way. Allowing for­eign­ers to lead this type of cen­sor­ship would both in­sult and in­jure the American peo­ple.”

First Amendment ex­perts crit­i­cized the mem­o’s guid­ance as it­self a po­ten­tial vi­o­la­tion of free speech rights.

People who study mis­in­for­ma­tion and work on con­tent-mod­er­a­tion teams aren’t en­gaged in censorship’— they’re en­gaged in ac­tiv­i­ties that the First Amendment was de­signed to pro­tect. This pol­icy is in­co­her­ent and un­con­sti­tu­tional,” said Carrie DeCell, se­nior staff at­tor­ney and leg­isla­tive ad­vi­sor at the Knight First Amendment Institute at Columbia University, in a state­ment.

Even as the ad­min­is­tra­tion has tar­geted those it claims are en­gaged in cen­sor­ing Americans, it has also tight­ened its own scrutiny of visa ap­pli­cants’ on­line speech.

On Wednesday, the State Department an­nounced it would re­quire H-1B visa ap­pli­cants and their de­pen­dents to set their so­cial me­dia pro­files to public” so they can be re­viewed by U. S. of­fi­cials.

...

Read the original on www.npr.org »

8 245 shares, 10 trendiness

Why I have been writing a niche history blog for 15 years

I was 25 years old when I started writ­ing the blog ver­sion of Res Obscura, which ran from 2010 to 2023 (and still ex­ists here). This was the early sum­mer of 2010. I was a sec­ond-year PhD stu­dent in his­tory, liv­ing with two room­mates in a 1920s bun­ga­low on the east side of Austin.

And I was very ded­i­cated to the idea that you should aim to write a new blog post every day:

This is a con­cept that the 40-year-old ver­sion of me, with two young kids and zero free time, can­not even be­gin to fathom.

It’s also a prac­tice of the old in­ter­net that sim­ply does­n’t ex­ist any­more — one of many dig­i­tal be­hav­iors that was swal­lowed up by so­cial me­dia. That whole world of blog­ging (exploratory, low-stakes, con­ver­sa­tional, and as­sum­ing a read­er­ship of peo­ple who had book­marked your URL and who read it on a desk­top or lap­top com­puter) is al­most en­tirely gone now.

My first two years writ­ing Res Obscura in its blog for­mat were great fun. I be­gan to de­velop an in­tel­lec­tual com­mu­nity, form­ing con­tacts with, for in­stance, the won­der­ful Public Domain Review (founded 2011 and still go­ing strong). I linked to and was linked to by a range of other his­tory blog­gers who I saw as kin­dred spir­its, some of whom seem to have dis­ap­peared (BibliOdyssey) oth­ers of whom have be­come well-known writ­ers (Lindsey Fitzharris).

Get 20% off for 1 year

It was pretty ad­dic­tive when a post went vi­ral. In those hal­cyon days when writ­ten blog posts about ob­scure his­tor­i­cal sub­jects were vi­able sources of vi­ral con­tent, you could end up get­ting cov­ered in in­ter­na­tional me­dia for, say, dis­cov­er­ing a cat’s paw prints on a 15th cen­tury Croatian man­u­script.

That spike in read­er­ship around 2018 was par­tially from a post about 17th cen­tury food that, un­ex­pect­edly, led to me speak­ing about snail wa­ter on New Zealand pub­lic ra­dio.

But by then, I was start­ing to move on. I was hard at work on my first book — the book I needed to write for tenure — and was be­com­ing a bit dispir­ited by the in­creas­ingly click-bait na­ture of blog­ging, not to men­tion the ten­dency of so­cial me­dia to el­e­vate toxic be­hav­ior and con­tro­versy over lovely and fas­ci­nat­ing but to­tally un­con­tro­ver­sial things like the Croatian cat paw prints.

I also (then and now) have no ap­petite for short-form video con­tent, and still less for the type of his­tory ex­plainer videos — here’s a two hour deep dive into why this movie is his­tor­i­cally in­ac­cu­rate” or everything you need to know about such-and-such fa­mous per­son” — that seem to do well on YouTube.

Switching over to a Substack newslet­ter, in the sum­mer of 2023, re­vived my in­ter­est in writ­ing on­line. It felt like re­join­ing an in­tel­lec­tual com­mu­nity — not quite the same as the golden age of blog­ging in the 2000s, but some­thing equally as lively, in a way that I don’t think quite gets enough credit in the 2020s.

From Weird Medieval Guys to s Noted to s Fernando Pessoa-esque The Hinternet and the newslet­ters of well-known his­to­ri­ans like David Bell (French Reflections), as well as the more gen­eral au­di­ence or po­lit­i­cally ori­ented newslet­ters that still dig deep into his­tor­i­cal top­ics (like s Unpopular Front and s newslet­ter), I would say that Substack is now the most in­ter­est­ing place on­line for dis­cus­sions not just of his­tory, but of hu­man­is­tic top­ics as a whole.

Needless to say, there’s also a ton of peo­ple writ­ing about the in­ter­sec­tion of AI, tech­nol­ogy and con­tem­po­rary so­ci­ety (of which I would sin­gle out AI Log, Ethan Mollick’s One Useful Thing, , and ).

So why have I kept writ­ing Res Obscura through all the changes of the world — and of my own life and in­ter­ests — since the sum­mer of 2010? Simple: I love shar­ing things I find in­ter­est­ing, es­pe­cially things which are not avail­able else­where on­line. Most of my posts are writ­ten be­cause I search for in­for­ma­tion on some­thing and don’t find it.

The niche na­ture of Res Obscura (from 17th cen­tury co­caine to Kinetoscopes to Henry James: the RPG) is pre­cisely why I en­joy writ­ing it.

I am deeply grate­ful that 15 years and 8,300 sub­scribers later, I have a place on­line where I can share idio­syn­cratic knowl­edge and writ­ing with an equally idio­syn­cratic group of read­ers.

Now here’s the in­evitable part where I ask if you would be will­ing to sup­port my con­tin­ued work. To that end, I have set up a spe­cial hol­i­day dis­count valid un­til the end of December. Thank you for read­ing!

A de­tail of a trompe-l’œil dome” by the Renaissance painter Andrea Mantegna, Camera degli Sposi, Ducal Palace, Mantua, Italy. Featured in a 2011 Res Obscura post called The Art of Fooling the Eye.”

...

Read the original on resobscura.substack.com »

9 229 shares, 21 trendiness

Patterns for Defensive Programming in Rust

Whenever I see the com­ment // this should never hap­pen in code, I try to find out the ex­act con­di­tions un­der which it could hap­pen. And in 90% of cases, I find a way to do just that. More of­ten than not, the de­vel­oper just has­n’t con­sid­ered all edge cases or fu­ture code changes.

In fact, the rea­son why I like this com­ment so much is that it of­ten marks the ex­act spot where strong guar­an­tees fall apart. Often, vi­o­lat­ing im­plicit in­vari­ants that aren’t en­forced by the com­piler are the root cause.

Yes, the com­piler pre­vents mem­ory safety is­sues, and the stan­dard li­brary is best-in-class. But even the stan­dard li­brary has its warts and bugs in busi­ness logic can still hap­pen.

All we can work with are hard-learned pat­terns to write more de­fen­sive Rust code, learned through­out years of ship­ping Rust code to pro­duc­tion. I’m not talk­ing about de­sign pat­terns here, but rather small id­ioms, which are rarely doc­u­mented, but make a big dif­fer­ence in the over­all code qual­ity.

if !matching_users.is_empty() {

let ex­ist­ing_user = &matching_users[0];

What if you refac­tor it and for­get to keep the is_empty() check? The prob­lem is that the vec­tor in­dex­ing is de­cou­pled from check­ing the length. So match­ing_users[0] can panic at run­time if the vec­tor is empty.

Checking the length and in­dex­ing are two sep­a­rate op­er­a­tions, which can be changed in­de­pen­dently. That’s our first im­plicit in­vari­ant that’s not en­forced by the com­piler.

If we use slice pat­tern match­ing in­stead, we’ll only get ac­cess to the el­e­ment if the cor­rect match arm is ex­e­cuted.

match match­ing_users.as_s­lice() {

[] => todo!(“What to do if no users found!?“),

[existing_user] => { // Safe! Compiler guar­an­tees ex­actly one el­e­ment

// No need to in­dex into the vec­tor,

// we can di­rectly use `existing_user` here

_ => Err(RepositoryError::DuplicateUsers)

Note how this au­to­mat­i­cally un­cov­ered one more edge case: what if the list is empty? We had­n’t ex­plic­itly con­sid­ered this case be­fore. The com­piler-en­forced pat­tern match­ing re­quires us to think about all pos­si­ble states! This is a com­mon pat­tern in all ro­bust Rust code: putting the com­piler in charge of en­forc­ing in­vari­ants.

When ini­tial­iz­ing an ob­ject with many fields, it’s tempt­ing to use ..Default::default() to fill in the rest. In prac­tice, this is a com­mon source of bugs. You might for­get to ex­plic­itly set a new field later when you add it to the struct (thus us­ing the de­fault value in­stead, which might not be what you want), or you might not be aware of all the fields that are be­ing set to de­fault val­ues.

Instead of this:

let foo = Foo {

field1: val­ue1,

field2: val­ue2,

..Default::default() // Implicitly sets all other fields

let foo = Foo {

field1: val­ue1,

field2: val­ue2,

field3: val­ue3, // Explicitly set all fields

field4: val­ue4,

Yes, it’s slightly more ver­bose, but what you gain is that the com­piler will force you to han­dle all fields ex­plic­itly. Now when you add a new field to Foo, the com­piler will re­mind you to set it here as well and re­flect on which value makes sense.

If you still pre­fer to use Default but don’t want to lose com­piler checks, you can also de­struc­ture the de­fault in­stance:

let Foo { field1, field2, field3, field4 } = Foo::default();

This way, you get all the de­fault val­ues as­signed to lo­cal vari­ables and you can still over­ride what you need:

let foo = Foo {

field1: val­ue1, // Override what you need

field2: val­ue2, // Override what you need

field3, // Use de­fault value

field4, // Use de­fault value

This pat­tern gives you the best of both worlds:

You get de­fault val­ues with­out du­pli­cat­ing de­fault logic

The com­piler will com­plain when new fields are added to the struct

It’s clear which fields use de­faults and which have cus­tom val­ues

Completely de­struc­tur­ing a struct into its com­po­nents can also be a de­fen­sive strat­egy for API ad­her­ence. For ex­am­ple, let’s say you’re build­ing a pizza or­der­ing sys­tem and have an or­der type like this:

struct PizzaOrder {

size: PizzaSize,

top­pings: Vec

For your or­der track­ing sys­tem, you want to com­pare or­ders based on what’s ac­tu­ally on the pizza - the size, top­pings, and crust_­type. The or­dered_at time­stamp should­n’t af­fect whether two or­ders are con­sid­ered the same.

Here’s the prob­lem with the ob­vi­ous ap­proach:

impl PartialEq for PizzaOrder {

fn eq(&self, other: &Self) -> bool {

self.size == other.size

&& self.top­pings == other.top­pings

&& self.crust_­type == other.crust_­type

// Oops! What hap­pens when we add ex­tra_cheese or de­liv­ery_ad­dress later?

Now imag­ine your team adds a field for cus­tomiza­tion op­tions:

struct PizzaOrder {

size: PizzaSize,

top­pings: Vec

Your PartialEq im­ple­men­ta­tion still com­piles, but is it cor­rect? Should ex­tra_cheese be part of the equal­ity check? Probably yes - a pizza with ex­tra cheese is a dif­fer­ent or­der! But you’ll never know be­cause the com­piler won’t re­mind you to think about it.

impl PartialEq for PizzaOrder {

fn eq(&self, other: &Self) -> bool {

let Self {

size,

top­pings,

crust_­type,

or­dered_at: _,

} = self;

let Self {

size: oth­er_­size,

top­pings: oth­er_­top­pings,

crust_­type: oth­er_crust,

or­dered_at: _,

} = other;

size == oth­er_­size && top­pings == oth­er_­top­pings && crust_­type == oth­er_crust

Now when some­one adds the ex­tra_cheese field, this code won’t com­pile any­more. The com­piler forces you to de­cide: should ex­tra_cheese be in­cluded in the com­par­i­son or ex­plic­itly ig­nored with ex­tra_cheese: _?

This pat­tern works for any trait im­ple­men­ta­tion where you need to han­dle struct fields: Hash, Debug, Clone, etc. It’s es­pe­cially valu­able in code­bases where structs evolve fre­quently as re­quire­ments change.

Code Smell: From Impls That Are Really TryFrom

Sometimes there’s no con­ver­sion that will work 100% of the time. That’s fine. When that’s the case, re­sist the temp­ta­tion to of­fer a From im­ple­men­ta­tion out of habit; use TryFrom in­stead.

Here’s an ex­am­ple of TryFrom in dis­guise:

impl From for DetectorStartupErrorSubject {

fn from(re­port: &DetectorStartupErrorReport) -> Self {

let post­fix = re­port

.get_identifier()

.or_else(get_binary_name)

.unwrap_or_else(|| UNKNOWN_DETECTOR_SUBJECT.to_string());

Self(StreamSubject::from(

for­mat!(“apps.er­rors.de­tec­tors.startup.{post­fix}“).as_str(),

The un­wrap_or_else is a hint that this con­ver­sion can fail in some way. We set a de­fault value in­stead, but is it re­ally the right thing to do for all callers? This should be a TryFrom im­ple­men­ta­tion in­stead, mak­ing the fal­li­ble na­ture ex­plicit. We fail fast in­stead of con­tin­u­ing with a po­ten­tially flawed busi­ness logic.

It’s tempt­ing to use match in com­bi­na­tion with a catch-all pat­tern like _ => {}, but this can haunt you later. The prob­lem is that you might for­get to han­dle a new case that was added later.

match self {

Self::Variant1 => { /* … */ }

Self::Variant2 => { /* … */ }

_ => { /* catch-all */ }

match self {

Self::Variant1 => { /* … */ }

Self::Variant2 => { /* … */ }

Self::Variant3 => { /* … */ }

Self::Variant4 => { /* … */ }

By spelling out all vari­ants ex­plic­itly, the com­piler will warn you when a new vari­ant is added, forc­ing you to han­dle it. Another case of putting the com­piler to work.

If the code for two vari­ants is the same, you can group them:

match self {

Self::Variant1 => { /* … */ }

...

Read the original on corrode.dev »

10 221 shares, 15 trendiness

Jolla Phone Pre-order Voucher

Skip to prod­uct in­for­ma­tion

The in­de­pen­dent European Do It Together (DIT) Linux phone, shaped by the peo­ple who use it.

Your 99 € is fully re­fund­able and de­ducted from the full price later.

This prod­uct will only be pro­duced if at least 2000 units are sup­ported by January 04, 2026 23:55 (Helsinki)

By re­serv­ing a de­vice, you di­rectly con­tribute bring the new Jolla Phone into re­al­ity. The prod­uct will be made once we reach 2,000 pre-or­ders. This pro­ject goes ahead when we reach 2,000 pre-or­ders. If we don’t hit the goal, your pay­ment is re­funded.

This item is a re­cur­ring or de­ferred pur­chase. By con­tin­u­ing, I agree to the and au­tho­rize you to charge my pay­ment method at the prices, fre­quency and dates listed on this page un­til my or­der is ful­filled or I can­cel, if per­mit­ted.

View full de­tails

12GB RAM and 256GB stor­age ex­pand­able up to 2TB

No track­ing, no call­ing home, no hid­den an­a­lyt­ic­sUser con­fig­urable phys­i­cal Privacy Switch - turn off you mi­cro­phone, blue­tooth, Android apps, or what­ever you wish

Available in three dis­tinct colours in­spired by Nordic na­ture

Defined to­gether with the Community

Over the past months, Sailfish OS com­mu­nity mem­bers voted on what the next Jolla de­vice should be. The key char­ac­ter­is­tics, spec­i­fi­ca­tions and fea­tures of the de­vice. Based on com­mu­nity vot­ing and real user needs, this de­vice has only one mis­sion:

Community Voice, Real Device: The ques­tion­naire re­ceived over­whelm­ing flow of in­put and this pro­ject cap­tures that­Now it is time to act! Your pre-or­der de­ter­mines whether the pro­ject be­comes re­al­ity

No track­ing, no call­ing home, no hid­den an­a­lyt­ics.

Your phone, your apps, your con­trol

Run na­tive Sailfish apps, Android apps with AppSupport, or go fully de-Googled when­ever you wish — sim­ply by shut­ting down the Android apps.

Unlike main­stream phones, Sailfish OS is de­signed not to har­vest your data. No track­ers. No pro­fil­ing. No data mon­eti­sa­tion. Your phone should work for you, not ex­ploit you.

Sailfish OS is proven to out­live main­stream sup­port cy­cles. Long-term OS sup­port, guar­an­teed for min­i­mum 5 years. Incremental up­dates, and no forced ob­so­les­cence.

Your Phone Shouldn’t Spy on YouMainstream phones send vast amounts of back­ground data. A com­mon Android phone sends megabytes of data per day to Google even if the de­vice is not used at all. Sailfish OS stays silent un­less you ex­plic­itly al­low con­nec­tions.

DIT: DO IT TOGETHER

You voted on the de­viceYou guided its specs and de­f­i­n­i­tio­nAnd now you help bring it to life

Our Community

Because this is a com­mu­nity-funded de­vice and we need com­mit­ted pre-or­ders to turn the de­signs into a full prod­uct pro­gram and com­mit to or­der the first pro­duc­tion batch. If we reach 2,000 units we start the full prod­uct pro­gram. If not, you get a full re­fund.

What is the nor­mal price of the prod­uct, do I get dis­count par­tic­i­pat­ing to the pre-or­der?

The fi­nal price of the prod­uct is not set yet but we es­ti­mate it to set­tle be­tween 599€ - 699€ (incl. your lo­cal VAT). The fi­nal price de­pends on the con­fir­ma­tion of the fi­nal spec­i­fi­ca­tion and the Bill-of-Materials, which hap­pens on due course dur­ing the prod­uct pro­gram. Notably in par­tic­u­lar mem­ory com­po­nent prices have had ex­cep­tion­ally high volatil­ity dur­ing this year. By pre-or­der­ing you con­firm your spe­cial price of to­tal 499€.

Is this phone real or just a con­cept?

It is real. Definition and real elec­tro-me­chan­i­cal de­sign is un­der­way, based on the com­mu­nity vot­ing. To turn the de­signs into a full prod­uct pro­gram and com­mit to or­der the first batch, we need in min­i­mum 2,000 com­mit­ted pre-or­ders.

When will full specs be avail­able?

Once the man­u­fac­tur­ing path­way is con­firmed at 2,000 pre-or­ders.

Will there be ac­ces­sories, like a spare bat­tery and pro­tec­tive case?

Yes, there will be. We’ll make those avail­able on due course the pro­ject.

When will the phone ship?

Will the Jolla Phone work out­side Europe, can I use it e.g. in the U. S.?

Yes, we will de­sign the cel­lu­lar band con­fig­u­ra­tion to en­able global trav­el­ling as much as pos­si­ble, in­clud­ing e.g. roam­ing in the U.S. car­rier net­works.

Can I buy the Jolla Phone if I’m out­side Europe, can I use it e.g. in the U.S.?

The ini­tial sales mar­kets are EU, UK, Switzerland and Norway. Entering other mar­kets, such as the U.S. and Canada are to be de­cided due course based on po­ten­tial in­ter­est from the ar­eas.  We will de­sign the cel­lu­lar band con­fig­u­ra­tion to en­able po­ten­tial fu­ture mar­kets, in­clud­ing ma­jor U.S. car­rier net­works.

...

Read the original on commerce.jolla.com »

To add this web app to your iOS home screen tap the share button and select "Add to the Home Screen".

10HN is also available as an iOS App

If you visit 10HN only rarely, check out the the best articles from the past week.

If you like 10HN please leave feedback and share

Visit pancik.com for more.