InFeeo
Global
technology-news
New
Language
Profile channel

@Body

No bio yet.

Since 05.06.2026

The Boot Chain of a RISC-V Board: From Silicon to Ubuntu 26.04(github.com)
When you press the power button on the SpacemiT K3 Pico-ITX, Ubuntu 26.04 appears on the serial console about 30 seconds later. Between those two events, five distinct software layers run in sequence, each one handing off to the next. Understanding what each layer does - and why it exists - matters the moment something goes wrong, or the moment you want to put a different OS on the board.
Berkshirehathaway.com – The Perfect Minimalist Website(berkshirehathaway.com)
㰡ⴭ⁇汯扡氠獩瑥⁴慧 杴慧⹪猩‭⁇潯杬攠䅮慬祴楣猠ⴭ㸍਼獣物灴⁡獹湣⁳牣㴢桴瑰猺⼯睷眮杯潧汥瑡杭慮慧敲⹣潭⽧瑡术橳㽩搽啁ⴱ㌶㠸㌳㤰ⴱ∾㰯獣物灴㸍਼獣物灴㸍ਠ⁷楮摯眮摡瑡䱡祥爠㴠睩湤潷⹤慴慌慹敲⁼簠孝㬍ਠ⁦畮捴楯渠杴慧⠩筤慴慌慹敲⹰畳栨慲杵浥湴猩㭽ഊ†杴慧⠧橳✬敷⁄慴攨⤩㬍਍ਠ⁧瑡木❣潮晩朧Ⱐ❕䄭ㄳ㘸㠳㌹〭ㄧ⤻ഊ㰯獣物灴㸍਼⅄佃呙偅⁈呍䰠偕䉌䥃•⴯⽗㍃⼯䑔䐠䡔䵌‴⸰⁔牡湳楴楯湡氯⽅丢㸍਼桴浬㸼桥慤㸼瑩瑬放䉅剋午䥒䔠䡁呈䅗䅙⁉乃⸼⽴楴汥㸍਼浥瑡⁣潮瑥湴㴢瑥硴⽨瑭氻⁣桡牳整㵵湩捯摥∠桴瑰ⵥ煵楶㴢䍯湴敮琭呹灥∾ഊ㱭整愠湡浥㴢䝅久剁呏刢⁣潮瑥湴㴢䵓䡔䵌‸⸰〮㘰〱⸱㠸㈸∾㰯桥慤㸍਼扯摹楮欽∣㠰〰㠰∠执捯汯爽∣晦晦晦∠瑥硴㴢⌰〰〸〢⁶汩湫㴢⍦昰〰〢㸼戾㱦潮琠獩穥㴢㘢㸍਼瀠慬楧渽≣敮瑥爢㹂㰯景湴㸼景湴⁳楺攽∴∾䕒䭓䡉剅‼⽦潮琾㱦潮琠獩穥㴢㘢㹈㰯景湴㸼景湴‍ੳ楺攽㐾䅔䡁坁夠㰯景湴㸼景湴⁳楺攽∲∾䥎䌮㱢爾㌵㔵⁆慲湡洠却牥整㱢爾佭慨愬⁎䔠㘸ㄳㄼ⽦潮琾㱢爾佦晩捩慬⁈潭攠偡来㰯戾㱦潮琠ഊ獩穥㴱㸦湢獰㬼⽰㸼⽦潮琾ഊ㱨爾ഊ㱰⁡汩杮㴢捥湴敲∾ഊ㱣敮瑥爾ഊ㱴慢汥⁢潲摥爽∰∠捥汬獰慣楮朽∰∠睩摴栽∹〥∾ഊ†㱴扯摹㸍ਠ‼瑲㸍ਠ†‼瑤⁨敩杨琽∵㔢⁶慬楧渽≴潰∠睩摴栽∵〥∾ഊ†††㱵氾ഊ††††㱬椾㱡⁨牥昽≭敳獡来⹨瑭氢㹁⁍敳獡来⁦牯洠坡牲敮⁅⸠䉵晦整琼⽡㸠ഊ††㰯汩㸼⽵氾㰯瑤㸍ਠ†㱴搠桥楧桴㴢㐵∠癡汩杮㴢瑯瀢⁷楤瑨㴢㔰┢㸍ਠ††‼畬㸍ਠ†††‼汩㸼愠桲敦㴢睥扦牡畤⹰摦∾䙲慵摵汥湴⁃污業猠剥条牤楮朠䵲⸠䉵晦整琧猠䕮摯牳敭敮瑳映䥮癥獴浥湴⁐牯摵捴猠慮搠偯汩瑩捡氠䍡湤楤慴敳㰯愾ഊ††††††㰯汩㸼⽵氾㰯瑤㸼⽴爾‍ਠ‼瑲㸍ਠ†‼瑤⁨敩杨琽∴㔢⁶慬楧渽≴潰∠睩摴栽∵〥∾ഊ†††㱵氾ഊ††††㱬椾㱡⁨牥昽≲数潲瑳⹨瑭氢㹁湮畡氠♡浰㬠䥮瑥物洠剥灯牴猼⽡㸠㱢爾㱦潮琠ഊ††††獩穥㴱㹕灤慴敤⁍慹′Ⱐ㈰㈶㱢爾㰯景湴㸼⽬椾㰯畬㸼⽴搾ഊ††㱴搠桥楧桴㴢㐵∠癡汩杮㴢瑯瀢⁷楤瑨㴢㔰┢㸍ਉठ‼畬㸍ਠ†††‼汩㸼愠桲敦㴢湥睳⼲〲㙮敷献桴浬∾乥睳⁒敬敡獥猠晲潭⁂敲歳桩牥⁈慴桡睡礠慮搠晲潭⁗慲牥渠䉵晦整琼⽡㸠㱢爾‍ਠ†††‼景湴⁳楺攽ㄾ啰摡瑥搠䵡礠㌱Ⱐ㈰㈶㰯景湴㸼⽬椾㰯畬㸼⽴搾㰯瑲㸍ਠ‍ਉഊ†㱴爾ഊ††㱴搠桥楧桴㴢㐵∠癡汩杮㴢瑯瀢⁷楤瑨㴢㔰┢㸍ਠ††‼畬㸍ਠ†††‼汩㸼愠ഊ††††桲敦㴢桴瑰㨯⽷睷⹳散⹧潶⽣杩ⵢ楮⽢牯睳攭敤条爿捯浰慮礽扥牫獨楲攫桡瑨慷慹♡浰㭭慴捨㴦慭瀻䍉䬽♡浰㭦楬敮畭㴦慭瀻却慴攽♡浰㭃潵湴特㴦慭瀻卉䌽♡浰㭯睮敲㵥硣汵摥♡浰㭆楮搽䙩湤⭃潭灡湩敳♡浰㭡捴楯渽来瑣潭灡湹∾䱩湫‍ਠ†††⁴漠卅䌠䙩汩湧猼⽡㸠㰯汩㸼⽵氾㰯景湴㸼⽴搾ഊ††㱴搠桥楧桴㴢㐵∠癡汩杮㴢瑯瀢⁷楤瑨㴢㔰┢㸍ਠ††‼畬㸍ਠ††††㱬椾㱡⁨牥昽≳桡牥桯汤⹨瑭氢㹁湮畡氠䵥整楮朠䥮景牭慴楯渼⽡㸠㱢爾㱦潮琠ഊ††††獩穥㴱㹕灤慴敤⁁灲楬′〬′〲㘼扲㸼⽦潮琾ഊउउ़⽬椾㰯畬㸼⽴搾㰯瑲㸍ਠ†㱴爾ഊ††㱴搠桥楧桴㴢㐵∠癡汩杮㴢瑯瀢⁷楤瑨㴢㔰┢㸍ਉ़畬㸍ਠ†††‼汩㸼愠桲敦㴢汥瑴敲猯汥瑴敲献桴浬∾坡牲敮⁂畦晥瑴❳⁌整瑥牳⁴漠䉥牫獨楲攠ഊ††††卨慲敨潬摥牳㰯愾‼扲㸼景湴⁳楺攽∱∾啰摡瑥搠䙥扲畡特′㈬′〲㔼扲㸼⽦潮琾ഊउउउठ㰯汩㸼⽵氾㰯瑤㸍ਠ†‼瑤⁨敩杨琽∴㔢⁶慬楧渽≴潰∠睩摴栽∵〥∾ഊउ㱵氾ഊ††††㱬椾㱡⁨牥昽≬整瑥牳⽧敡汥瑴敲献桴浬∾䝲敧⁁扥氧猠䱥瑴敲猠瑯⁂敲歳桩牥⁓桡牥桯汤敲猼⽡㸍ਉउ़扲㸼景湴⁳楺攽∱∾啰摡瑥搠䙥扲畡特′㠬′〲㘼扲㸼⽦潮琾㱢爾㰯景湴㸍ਉउठ†‼⽬椾㰯畬㸼⽴搾㰯瑲㸍਼瑲㸍ਠ†‼瑤⁨敩杨琽∴㔢⁶慬楧渽≴潰∠睩摴栽∵〥∾ഊ†††㱵氾ഊ††††㱬椾㱡⁨牥昽≓灥捩慬䱥瑴敲猯坅䉃呍䱴爮桴浬∾印散楡氠䱥瑴敲猠晲潭⁗慲牥渠☠䍨慲汩攠剅㩐慳琬⁐牥獥湴⁡湤⁆畴畲攼⽡㸠㰯汩㸼⽵氾㰯瑤㸍ਠ†‼瑤⁨敩杨琽∵㔢⁶慬楧渽≴潰∠睩摴栽∵〥∾ഊ†††㱵氾ഊ††††㱬椾㱡⁨牥昽≷敳捯⽗敳捯䡯浥⹨瑭氢㹃桡牬楥⁍畮来爧猠䱥瑴敲猠瑯⁗敳捯⁓桡牥桯汤敲猼⽡㸼扲㸼⽦潮琾ഊउउ††㰯汩㸼⽵氾㰯瑤㸼⽴爾ഊऍਉഊऍਉउऍਠ‼瑲㸍ਠ†‼瑤⁨敩杨琽∴㔢⁶慬楧渽≴潰∠睩摴栽∵〥∾ഊउ㱵氾ഊ††††㱬椾㱡⁨牥昽≳畢猯獵扬楮歳⹨瑭氢㹌楮歳⁴漠䉥牫獨楲攠佰敲慴楮朠䍯浰慮楥猼⽡㸠㱢爾㱦潮琠獩穥㴢ㄢ㸼扲㸼⽦潮琾㰯汩㸼⽵氾㰯瑤㸍ਠ†‼瑤⁨敩杨琽∴㔢⁶慬楧渽≴潰∠睩摴栽∵〥∾ഊउ㱵氾ഊ††††㱬椾㱡⁨牥昽≢桥湥牧礯扨敮敲杹灲敳敮瑡瑩潮献桴浬∾䉥牫獨楲攠䡡瑨慷慹⁅湥牧礠䥮癥獴潲⁐牥獥湴慴楯湳㰯愾ഊउउ़⽬椾㰯畬㸼⽴搾㰯瑲㸍਍ਠ‼瑲㸍ਠ†‼瑤⁨敩杨琽∴㔢⁶慬楧渽≴潰∠睩摴栽∵〥∾ഊ†††㱵氾ഊ††††㱬椾㱡⁨牥昽≧潶敲港杯癥牮⹨瑭氢㹃潲灯牡瑥⁇潶敲湡湣攼⽡㸠㱢爾㱦潮琠ഊ††††獩穥㴱㸼扲㸼⽬椾㰯畬㸼⽴搾ഊ††㱴搠桥楧桴㴢㐵∠癡汩杮㴢瑯瀢⁷楤瑨㴢㔰┢㸍ਉ㱵氾ഊ††††㱬椾㱡⁨牥昽≢牫獨…
XWiki and OpenProject as an open-source alternative to Confluence and Jira(xwiki.org)
XWiki and OpenProject deliver digital sovereignty, clear cost predictability, and compliance-ready deployments. The stack is open source, auditable, and supported by experienced teams. We’ll show battle-tested migration paths (including large instances and high user counts), feature mapping for parity, and how to keep your identity model intact with SSO or LDAP.
A Dialog on APL (2015)(twitter.com)
A discussion between Nicolas Delcros and Roger Hui Nicolas, Prologue: From a language point of view, thanks to Ken Iverson, it is obvious that you want grade rather than sort as a primitive. Yet from a performance point of view, sort is currently faster than grade. Can one be “more fundamental” than the other? If so, who’s wrong…APL or our CPUs? In any case, what does “fundamental” mean? Roger: Sorting is faster than grading due to reasons presented in the J Wiki essay Sorting versus Grading, in the paragraph which begins “Is sorting necessarily faster than grading?” I can not prove it in the mathematical sense, but I believe that to be the case on any CPU when the items to be sorted/graded are machine units. Nicolas, Formulation 1: Now, parsing ⍵[⍋⍵] (and not scanning the idiom) begs the question of how deeply an APL intepreter can “understand” what it’s doing to arrays. How would an APL compiler resolve this conjunction in the parse tree? Do you simply have a bunch of state pointers such as “is the grade of” or “is sorted” or “is squozen” or “axis ordering” etc. walking along the tree? If so, do we have an idea of the number of such state pointers required to exhaustively describe what the APL language can do to arrays? If not, is there something more clever out there? Roger: I don’t know of any general principles that can tell you what things can be faster. I do have two lists, one for J and another for Dyalog. A big part of the lists consists of compositions of functions, composition in the mathematical sense, that can be faster than doing the functions one after the other if you “recognize” what the composed function is doing and write a native implementation of it. Sort vs. grade is one example (sort is indexing composed with grade). Another one is (⍳∘1 >) or (1 ⍳⍨ >). The function is “find the first 1” composed with >. These compositions have native implementations and: x←?1e6⍴1e6 cmpx '5e5(1 ⍳⍨ >)x' '(5e5>x)⍳1' 5e5(1 ⍳⍨ >)x → 0.00E0 | 0% (5e5>x)⍳1 → 1.06E¯2 | +272100% ⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕ cmpx '¯1(1 ⍳⍨ >)x' '(¯1>x)⍳1' ¯1(1 ⍳⍨ >)x → 2.41E¯3 | 0% ⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕ (¯1>x)⍳1 → 4.15E¯3 | +71% ⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕ If you get a “hit” near the beginning, as would be the case with 5e5, you win big. Even if you have to go to the end (as with ¯1), you still save the cost of explicitly generating the Boolean vector and then scanning it to the end. Another one, introduced in 14.1, is: cmpx '(≢∪)x' '≢∪x' (≢∪)x → 4.43E¯3 | 0% ⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕ ≢∪x → 1.14E¯2 | +157% ⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕ This is the tally nub composition, used often in a customer application. If you “know” that you just want the tally of the nub (uniques), you don’t actually have to materialise the array for the nub. I am not conversant with compiler technology so I don’t know what all an APL compiler can do. I do know that there’s a thing call “loop fusion” where, for example, in a+b×c÷2, it doesn’t have to go through a,b,c in separate loops, but can instead do :for i :in ⍳≢a ⋄ z[i]←a[i]+b[i]×c[i]÷2 ⋄ :endif saving on the array temp on every step. You win some with this, but I think the function composition approach wins bigger. On the other hand, I don’t know that there is a general technique for function composition. I mean, what general statements can you make about what things can be faster (AKA algebraically simpler)? Nicholas: I sort of see…so jot is a “direct” conjunction. An indirect conjunction could be ⍵[⍺⍴⍋⍵] where the intermediate grade is reshaped. We “know” that grade and shape are “orthogonal” and can rewrite the formula to ⍴⍵[⍋⍵]. So if we can establish a list of flags, and establish how primitives touch these flags, and how these flags affect each other, then we can extend ∘ to any path of the parse tree, provided that the intermediate nodes don’t destroy the relationship between the two operations (here grade + indexing provides sort, independently of the reshape). Of course we can spend our lives finding such tricks. Or we could try and systemise it. Roger: What you are saying above is that reshape and indexing commute (i.e. reshape ∘ indexing ←→ indexing ∘ reshape). More generally, compositions of the so-called structural functions and perhaps of the selection functions are amenable to optimisations. This would especially be the case if arrays use the “strided representation” described in Nick Nickolov’s paper Compiling APL to JavaScript in Vector. I used strided representation implicitly to code a terse model of ⍺⍉⍵ in 1987. Nicolas, Formulation 2: On which grounds did the guys in the ’50s manage to estimate the minimal list of operations that you needed to express data processing? Roger: APL developed after Ken Iverson struggled with using conventional mathematical notation to teach various topics in data processing. You can get an idea of the process from the following papers: Notation as a Tool of Thought (Turing lecture) The Evolution of APL, especially the Transcript of Presentation In our own humble way, we go through a similar process: We talk to customers to find out what problems they are faced with, what things are still awkward, and think about what if anything we can do to the language or the implementation to make things better. Sometimes we come up with a winner, for example ⌸. You know, the idea for ⍋(grade) is that often you don’t just use ⍋x to order x (sort) but you use ⍋x to order something else. Similarly with ⌸, you often don’t want just x⍳y but you use it to apply a function to items with like indices. The J Wiki essay Key describes how the idea arose in applications, and then connected with something I read about, the Connection Machine, a machine with 64K processors (this was in the 1980s). Nicolas, Formulation 3: Do we have something with a wider spectrum than “Turing complete or not” to categorise the “usefulness and/or efficiency” of a language? Roger: Still no general principles, but I can say this: Study the languages of designers whom you respect, and “borrow” their primitives, or at least pay attention to the idea. For example, =x is a grouping primitive in k. Symbols are Arthur Whitney’s most precious resource and for him to use up a symbol is significant. =x ←→ {⊂⍵}⌸x old k definition =x ←→ {⍺⍵}⌸x current k definition Both {⊂⍵}⌸x (14.0) and {⍺⍵}⌸x (14.1) are supported by special code. Study the design of machines. For a machine to make something “primitive” is significant. For example, the Connection Machine has an instruction “generalised beta” which is basically {f⌿⍵}⌸. Around the time the key operator was introduced, we (Ken Iverson and I) realised that it’s better not to build reduction into a partitioning, so that if you actually want to have a sum you have to say +⌿⌸ rather than just +⌸. The efficiency can be recovered by recognising {f⌿⍵}⌸ and doing a native implementation for it. (Which Dyalog APL does, in 14.0.) Roger, Epilogue: To repeat Nicolas’ question in the opening section, what does “fundamental” mean? (Is grade more fundamental than sort?) In computability, we can use Turing completeness as the metric. But here the requirement is not computability but expressiveness. I don’t know that there is a definitive answer to the question. One way to judge the goodness of a notation, or of an addition to the existing notation such as dfns or key or rank, is to use it on problems from diverse domains and see how well it satisfies the important characteristics of notation set out in Ken Iverson’s Turing lecture: ease of expressing constructs arising in problems suggestivity subordination of detail economy amenability to formal proofs I would add to these an additional characteristic: beauty. Follow Comments are closed.