Ask HN: What is the SQLite of nosql databases?
2021-06-13 10:33 hnsqlitejson [permalink]
→ Ask HN: What is the SQLite of nosql databases?
Though I'm very much in agreement with:
The SQLite of NoSQL is still SQLite: https://www.sqlite.org/json1.html
there are situations where you could just use a single JSON object to store everything?
If your JSON implementation of choice does it correctly, and I attempted to get this right in my implementation, looking up a key from the list of key-value-pair should use a method that wastes no time and gets you to the value you want as swiftly as possible, no matter how many keys you need on the first level.
Then again, if you decide to use SQLite, and really need almost nothing else, I've created this one...
Maybe 'invisibility' will kill RSS
2021-05-19 07:32 invisiblerss [permalink]
How can we make RSS 'more visible'? Among the news-sites I've added the RSS feed to my RSS reader, I see a common thing happen a few times now: They build a new website that looks better, and — bam — the feed URL responds with a 404, or worse a 500, HTTP response. I guess what happens is that by selecting a new platform, the main core feature(s) is provided — listing new articles — in a new design that looks better, and these designers don't know about the feed because they can't see it. Perhaps in most cases it doesn't even show in the page view statistics...
In a better world, they would soon notice a viewership drop especially by the people that would previously follow a link from a feed, but I know full well that us feed-readers are a minority group that's easily left out of the numbers, and that news feeds themselves are a sensitive subject because we're using their content and can't directly generate income.
The least I can do is send an e-mail to a support address if I can find one, notifying I'm getting less service than before. I don't expect them to really do anything about it. Or even respond. I guess we shoud get the message and accept we're not wanted in their slice of the public. Some do restore the feed, or build a feed on the new platform, though. So even I don't get a response, from time to time I check to see if they still love us. (Or if there's a way to get what we want directly from the new platform...)
Feeder + eater... + opinions?
2021-05-12 22:16 feederopinions [permalink]
What an idea. Imagine a place where you can vent impressions of the moment, except you have to do so in response to a title and URL that has to have come in over an RSS feed you're subscribed to on beforehand. Could that be something? Or would the ideal public in this specific niche be much to narrow? (It's probably at least one, since it looks like it would at least serve me.)
Quick, write it down: just another CPU design idea
2021-05-05 23:57 cpuidea [permalink]
Ever since learning about the Mill architecture, and watching an excellent series of MIT 6.004 lectures by Chris Terman (I can't find them on Youtube any more! But there are newer versions of 6.004 online which probably are great as well.) and reading up on what's new about x64 and RISC-V and ARM, from time to time my mind wanders if you could go crazy and design yet another CPU design that does novel things with the umptillions of available transistors and not have the downsides of the currently popular CPU's.
So here's an idea I just need to write out of my system, and let you have a look so you can see if there's anything there at all. Modern CPU's use virtual registers to have hyperthreading and speculative execution, and push whatever ahead in the hope it was the right branch to make pipelining work better for the workload at hand. The Mill architecture would handle that a little different and fill the pipeline just with more concurrent threads and interleave those. (At least that's how I understood what would be going on.)
What if you design a CPU so that it also takes in a larger set of streams of instructions, also using a bank of virtual registers that get alotted to these streams, but also have hot memory just like the closest cache is, but use that for the stack. Ideally you could expect programs to keep the current stack-frame fit within one or a few kilobytes, and by having a larger number of streams you could avoid having to switch this stack along with all the rest on context changes (by the OS). Switching the stack and overflowing the stack to and from memory is something that will have to happen, so you'll have decent support for that, but if you're after speed you'll try to avoid it as much as possible.
Let's have some numbers just to get a clearer mental picture. Let's say a core has support for 256 streams of instructions. If the work for them is pipe-lines across the rest of the core, addressing them would take 8 bits, so you would see a band of 8 lines pipe-lined to everything everywhere. It's not even required to have 256 instruction decoders, and sub-groups of streams could share commen instruction decoders, but depending on the instruction set design itself, this could turn out to be the bottleneck, but let's find that out with further design and research.
Let's say each stream gets 4KiB of hot stack memory, in total is 1MiB which is not unrealistic to have in a modern code nowadays, if I understood that correctly. This special memory could have extra lines so it automatically flows over into system's memory if the local stack index rolls over, which perhaps could also help with loading and flushing stack data on context changes.
With instruction fetching, stack handling and these streams doing their thing with alotted virtual registers, there's a lot covered, but the ofcourse the sweet magic happens in ALU's and related things, so down the pipe-line, according to what instruction decoding prescribes, the streams queue up to get one of the available ALU's to handle an operation.
This would be a point at which you start on a real design in a simulator, but that's where my knowledge is stronger than my experience. I just decide to start writing things down (right here, right now), let it simmer a bit and maybe pickup starting a first attempt sometime later. If you see what a former attempt like plasm ("play assembler") looks, don't get your hopes up too much. For now it's good that I wrote the core idea down here. If I ever get down to it again and get something working, you'll read it here. Sometime later.
Do n.GetFirstChild=nil instead of n.Count=0
2021-03-21 17:25 nodecount0 [permalink]
I wish I knew this one sooner! If you've worked with TTreeView before, and know about TTreeNode's HasChildren value, you need to check with OnExpanding, if you need to load the children or not. So I would typically have something like this:
if Node.HasChildren and (Node.Count=0) then //load children nodes
Only now after all these years I happen to come past this in the Vcl.ComCtrls.pas unit:
function TTreeNode.GetCount: Integer;
Result := 0;
Node := GetFirstChild;
while Node <> nil do
Node := Node.GetNextChild(Node);
So I've been throwing away performance all this time! Because my 'are the children loaded yet' check was taking more time if they were and there were a lot of them, expanding nodes was slower. And I never noticed!
So it's a good thing I know this, and now I can just write:
if Node.HasChildren and (Node.GetFirstChild=nil) then //load children
Ideetje opschrijven, dan vergeten. (En snel.)
2021-03-03 22:07 idee311 [permalink]
Komt er me weer zo'n uitgekookt idee binnenvallen dat ik waarschijnlijk niets mee ga kunnen doen. Opschrijven dan maar zeker? Is het minste dat ik kan doen. Dus, de laatste jaren is het tot in de politieke mulieus duidelijk geworden dat er een handje-vol Amerikaanse bedrijven heel veel geld verdienen door hun diensten gratis aan te bieden (en eentje in China), maar het geld zelf aan het rollen krijgen door de reclame-machine die ze er op aansluiten.
Los van de enorme inbreuk op onze privacy — waar we in de praktijk eigenlijk niets van merken zolang er geen misbruik is — zou het ons eigenlijk allemaal moeten storen dat we maar gebruik kunnen maken van de aangeboden diensten, en niet rechtstreeks kunnen delen in de winst. (Koop aandelen, mensen. Da's voorlopig het enige dat voor de hand ligt om in de winst de delen, of anders actief meedoen aan de geldwinkel als dat je ding is.) Nu wil ik niet te luid roepen dat het mogelijk is om je kleine beetjes tegoed te bieden volgens hoe braaf je de reclame consumeert, of ze gaan het nog doen ook. Dat zou een volgende etappe in de race naar de bodem inluiden, en ons nog altijd volledig overleveren aan de willekeur van de grote spelers.
Dus, dacht ik. Zou je kunnen een platform ontwerpen, waar je aan deelneemt, en actief aangeeft wat je precies wil vrijgeven, en hoeveel reclame-boodschappen je precies geschikt vind om op te nemen op regelmatige basis. Als je de Million Dollar Homepage herinnert, en het bijvoorbeeld herleidt tot een aanbod van een bepaalde oppervlakte en de belofte dat je dagelijks er naar wil kijken, zou het dan lukken om dat per opbod vrij te geven aan de mensen die marketing-budget maken voor zo'n dingen? Jammer genoeg draait het natuurlijk om het genereren van omzet, uiteindelijk. Of naambekendheid? Ik ken de duistere geheimen van het marketing-wezen niet echt, maar ik snap wel dat 'exposure' alleen tegenwoordig aan belang heeft verloren als je op voorhand al je publiek kan filteren en sturen naar een doelgroep waar een grotere kans bestaat dat je een 'contact' in een 'sale' kan omzetten...
Soit, het is slechts een idee dus. En als je even stilstaat bij dingen van vroeger die zijn gekomen en gegaan, dan moet je weten als zo'n idee maar zou kunnen werken als er van in het begin al een grote gebruikers-groep is, het bijna zeker geen kans op success heeft. Boodschap is om eerst een klein success te kunnen boeken op een kleine schaal. Als dat lukt, is het opnieuw een gok als het wel lukt om daar dan een volgend stapje op voort te kunnen bouwen. Kortom, daar heb ik dan weer geen zin in. Misschien iemand anders.
205B random strings and no 'Delphi'
2021-02-28 18:48 randomdelphi [permalink]
→ Delphi-PRAXiS: Can Delphi randomize string 'Delphi'?
Ah, that takes me back. A while ago at work I got someone baffled by this statement: It is said that a thousand monkeys banging away on keyboards could at some moment in infinite time produce the complete work of Shakespeare (and that the combined internet forums are a living counter-proof). Now if you search online you can find an XML download of the combined works of Shakespeare, so it's not hard to find the relative occurance of each letter of the alphabet. One can guess this will have rougly the same values per letter as the total of the English language. So, then, if you take 'random' by its definition, and the monkey's produce text at 1/26 probability for each letter in the alphabet, therefore they'll never reach a point in time where they (re)produce the works Shakespeare.
Now, I'm not a real philosopher, or a statistician, so my thesis could be complete fiction and based on nothing, but sometimes you really got to take a lesson from practice. In theory, in infinite time, it's ofcourse possible that something really really inherently possible could emerge out of a random system, but there are characteristigs to anything random, and there are exponential things at play that soon but experimantal set-ups like with the link above, that they probably would produce the expected outcome in a time-span that exceeds the number of years we've got left before the sun sheds its outer layers and devours the earth, complete with a set of silicon-based machines churning away at putting a series of random characters in sequence and comparing them of some neat stories of a long gone English playwright.
DIY Google Authenticator
2021-02-25 20:12 diytotp [permalink]
Recently, I've got a few things asking to enable two-factor-authentication, and I started using the Google Authenticator app.
I kind of like it. It's a simple enough app, there's a shared secret involved, but it gets pretty close to being airgapped and perfectly forward secure and all of those things. So I got thinking... What would it take to start using it for myself, in those little software things I create now and then...
Is there black magic or stick whittling involved? Nah, a little searching around, and it all appears to be cleanly described in RFC's 6287 and 4226... There has to be a warning here about not rolling your own crypto, but the world of hashing and encrypting really is interesting! I did SHA1 and HMAC before, and Unix' time apparently is UTC... So all you need* is the correct format of URL to put into a QR-code to load up a new key in the app. Then you can use this code to generate the 'current' pass-code for the secret:
*: and apparently base32-encoding, HashUtils was missing that...
Lobsters on Delphi: the good and the bad
2021-02-18 00:20 lobsters [permalink]
→ Lobsters: 26 Years... of Delphi
Aaw, look at that, the good and the bad on a single page.
Good to know: don't do except on e:Exception do ... raise e;
2020-12-28 13:29 dontraisee [permalink]
Good to know. At work, I inherited a smaller project. It started firing access violation errors reading from 00000000 (that tells you there's a nil pointer involved somewhere) at some address that didn't put me somewhere in the source code when I did Search > Find address in the IDE...
I was lucky I got the program running in a debugger when this happens, and the root cause was something completely different. (An SQL unique index constraint violation if you're really interested.) I got that fixed soon enough, but that didn't explain where the access violation comes from.
I followed the exception with the debugger, and before the exception was handled by anything that outputs like a logger or an error display, sure enough an access violation happend, but the debugger didn't show me anywhere else in the source code than it was already debugging, strange.
It took me a long hard look at the code before I spotted it, but with some luck you'll be able to spot what's wrong faster. The original author had the strange habit of writing exception handlers like this:
//important stuff here
on e:Exception do
//stuff to do in case of an exception here, (e.g. transaction rollback)
And they were all over the place. Nothing bad about that per sé, with raising the exception again, you can centralise the actual exception handling on the 'highest level' where all the calls are made. But while you're able to raise a specific exception if you create a new one*, apparently there's a difference between
raise e; and
raise; at least in this Delphi version I was on. Delphi handles the destruction of exception objects for you, and apparently that throws something off and causes the nil access violation somewhere deep inside...
*: Fun fact: Did you know that the Delphi runtime system creates an EOutOfMemory exception instance at the start of your programs, just to have it ready when it actually runs out of memory anytime later? Forgot where I read about that though...
Google is too big! Time to split it up in pieces.
2020-12-18 23:42 splitgoog [permalink]
I've tought and written before about splitting up Microsoft. With the recent lawsuits against Google, there's talk about splitting up Google. But how? My mind starts to wonder. If you would ask me, this is what I would say, based on what I know (which may not be the full picture, but I'm just trying to do the same to Google what I did to Microsoft before, let's see where it takes us.)
Products: online ads and banners
Revenue: price per exposure
Let's start with the cash cow. I know there's a bit if 'advertising' tied into 'selling' keywords with the search results, but I'm not considering that in this department. So specifically the online ads and banners shown on all kinds of websites, should separate into something independent. The sweet talk that proclaimed benefit from keeping it tied into the big mix is about being able to offer you more relevant ads, but we know what that means. Your e-mails and search queries go through a farm of computer centers, and you get advertisements for the stuff you just bought. (Or a brand of dental prosthetics you're orthodontist doesn't even work with...) So back to basics, one trustworthy entity you can call upon to fill a side-bar of your website to show a marketing message of some other company (that's not on your black-list). (Or perhaps that is on your white-list, but I guess you would have to agree to review newcomers soon enough or your percentage might suffer, or something...)
Products: anything Android
Open source and big companies are a complicated subject. If we stick to the basics, and perhaps compare to something different but somewhat similar, I still think an independant corporate identity could be the steward of the Android project and sell licenses to get permission to use the Android name, and get a hand on a curated build by the central authority of the project. If you really want, you can fork the project and roll it all yourself, but if you pay a reasonable price, you could get feedback if you're doing it right, get certifiers from the central authority to guarantee you the binding with your hardware devices is just right and is future-proofed for at least a version or three.
Products: Chrome, ChromeOS, (Fuchsia?)
Revenue: not for profit foundation
Department: Search engine
Products: search engine
Revenue: keywords auctioning
There's this story online of an ex-employee of a search service provider, that knew the end was near when fellow employees were using Google themselves. Search for it online, you'll find it. Google cut out the middle man and the search service market evaporated. It started with a thing called PageRank, but what it did was offer better results to anyone's search queries. If you take all the text on the web, and search for bits of text, you're off to one side of the ideal result set. If you think you could catalog all of the web in an extensive category system, you end up on the other side of the ideal result set. (And put a lot of effort in for limited returns.) You could try and build something intelligent that organically aims at this center sweet spot, but remember Goodhart's law. If you succeed, your new system will get gamed. In other words, SEO was born.
So the search engine part of Google living on its own could and should still offer to show 'paid for' search results on the keywords stakeholders select and/or organic statistics indicate as good candidates. Since there's money envolved, the engine needs to be transparent (of the crystal clear kind). In tune with the new spirit, it should be based on anonymity and respect privacy to a high degree. Even so, it could and should still actively promote societal inclusivity and combat (internationally?) criminal behaviour like enciting violence or popular misleading.
Department: Productivity Software
Products: G-Suite apps
It will need a new name though. I guess it started with GMail (which itself may be a response to Outlook Web Access) that hit a sweet spot for people in search of a low bar to clear to get started with e-mail, and also with established users that appreciate improved defaults in e-mail handling. (Yes, Outlook has a threaded conversation view, but not by default, I remember it was buried in the custom column sort group view something in Outlook 2000.) A logical extension was a calendar and the rest of the usual apps in an office suite typical attachments are made with (word-processor, spreadsheet, slide show). That it would all get delivered through the browser, now looks like an evolution that would have happened anyway. But it may be easy to take heavy-hitting modern browsers for granted these days. Anyway, their office suite has managed to catch up fast and is almost feature complete with most other office suites out there.
Department: Cloud Services
Products: anything cloud
Revenue: pay for what you use
It takes a lot of resources and effort to put up all this machinery in data centers to churn away and convert network traffic to and from storage. It takes a specific organisation to make it all work, and it's inceasingly done with a distance to what it is you're clients are actually up to. As a provider you've got a set of virtual machines running, and everything everywhere has the hell encrypted out of it. In the ideal case, you couldn't even get to know what you're clients are actually working on if you really wanted to, by design. (Though some find this too ideal.) What I noticed is that much of the cloud offerings out there like AWS and Microsoft Azure, are getting a lot of parity: for everything cloud, there's a roughly similar offering from each of the providers. In an ideal world, you can mix and match to your benifit, but since they're still tied to the data-centers they run in, we're still stuck in one of the silo's unless we pay extra to set up a dedicated link between them.
Being Google, the research that's been done ends up all over the place, or nowhere (Wave? Glass?). They start a thing called SPDY (pronounced "speedy"), and it ends up parts in HTTP 3 and part in a kind-of successor to TCP? They're building cars, and also a boat, or is it a barge?
To their credit, it's actually OK that Alphabet Inc. was created as a group with Google as a member. It opens up the endeavours thet get 'promoted' into members of Alphabet of their own for a possible future on their own, or under another corporate parent. One of these is "X", which apparently handles any undefined research going on. Anyway, things like that may be going on in any large young tech firm, so why not out of one of the newly formed ex-Google-chunks outline above.
And I'm sure I forgot some things that Google is also doing, but I think I've listed the most important things here.
QuickReports: R.I.P. Lut
2020-12-18 16:26 invoicetemplates [permalink]
Oh my, I didn't know. I guess we'll see this more and more with one-person open-source projects, that people stop with the project for all kinds of reasons.
But about reports, I've made this really elegant thing at work to script the design of a report with just a few basic commands (line, text, image, matrix, block, repeat...) that allows you to write what the report should look like, and make lots of small alterations later. If you really need your reports just right, I've always found a graphical designer to introduce minor artefacts that you sometimes need to work around...
I know there are tons of similar things out there, like TeX and PostScript, and even HTML or MetaFiles, but it was grown out of neccessity and suffered "dogfooding" from the very start, which shows in its design and execution. And thanks to SynPDF, (or "Print to PDF" for that matter) you can just exports PDF's with it as well. So I really should take some time and re-do it on my own time and open source it... If I can make it even better and cleaner, I might introduce the open-source version as a replacement at work! (... Oh-oh!) (... or was it this one?)
Soundcloud link to my profile
2020-12-18 12:55 catsc [permalink]
Look, I've added a SoundCloud icon to the header bar on the home page, with a link to my profile there: !
I don't intend to publish music myself though. It's just you can follow artists there that do. Like Du Tonc and Alex Cruz, just to name a few...
Porter Robinson & Madeon - Shelter
2020-12-12 18:18 shelter [permalink]
→ Anime & Manga — What does (present) Rin mouth when she sees her father and her past self at the shrine?
Sad, no answer there. (Yet?) If you haven't seen what it is, go have a look first. It's only 6 minutes. Or read about it here or here. (I also feel a little sad I've only now learned about this. But it's all part of me getting to know anime much more since the pandemic, but that's another story altogether. I may post something about that sometime later.)
It really feels like there's no way that's all. You feel like you've seen a preview, a small taste of the big thing and you really want to see more, but there isn't. It takes some searching around to find that out, but apparently there really isn't. (Yet?)
So I watch and re-watch. Closely. Then wait a few days and watch again, hoping to pick up a few more things. It's really that good. I get that. A lot of attention to detail went into it.
But you do get questions about things. What does she utter when her dad and younger self leave the shrine? (4'15") You can guess, and artistically speaking, you can't be wrong. She's reaffirming memories that were lost before, after all.
What isn't clear to me and I find very intriguing, is the section right after she takes a bath (3'05"). Even when the camera changes (3'06") there's already all of devestation outside. She ventures out (3'12") in what looks to me like funeral attire. Is she mourning the loss of her home world? What's with the square lights, most white with a few red? Great shot with her resting in the tree! (3'17") Did she model this broken world for herself? Is she having a hard time after getting memories back since touching the swing (2'24")? I'm guessing it's by her design because it's only after that she unlocks the digital design of her old home village. (3'24")
Except the visit to the shrine and other flashbacks were before that. But she's not figured in light there, so it may be proper mental images. If her brain-interface would pick up on those to manifest them in her 'living realm', it would be a story-element of its own, and would lessen the strength of the revelation at the end. So I guess there's a lot more to touch upon there, and it really feels like there's much more to the story, but it's not supposed to be a full length series. So it's better to not want it to be.
But there's so much more anime to discover! And this is a great love-letter to anime in general. With the little anime I've discovered so far — really need to do a write-up about that! — I can suggest you watch Kanata No Astra if you like the 'astray in space' thing...
Zout van op zee?
2020-12-07 16:12 zoutopzee [permalink]
→ NWS: Strooizout op onze wegen komt uit Caraïben, Brazilië en Australië: "Het wordt met grote zeeschepen aangevoerd"
Tss, heb ik weer zo'n gek idee. Zou je kunnen in grote barges op internationale wateren ter hoogte van de evenaar, gewoon zeewater laten verdampen, zodat je het zout in droge vorm kan verschepen naar de industrie aan land om verder te laten verwerken? Zou dat economisch haalbaar zijn, maar vooral, zou die extra opstijgende waterdamp van invloed kunnen zijn op weerpatronen? Of het een goeie of slechte invloed is moet dan ook nog worden uitgezocht.
Of zou het beter zijn om het damp-water ook bij te houden? Het zuiver water laten neerslaan en apart verschepen? Met de verandering van het klimaat zou er wel eens grote groei kunnen zitten aan te komen in de handel in drinkbaar water...
"Geef ITC'ers lessen ethiek"
2020-11-21 15:10 compsciethics [permalink]
→ Algemeen Dagblad: Filosoof over digitalisering: geef ict-techneuten net als dokters lessen in ethiek
Update: vreemd, dit artikel lijkt volledig vervangen met een ander intussen. Maar soit, de titel zegt genoeg, de vooruitgang in de toepassingen van software en rekenkracht op maatschappelijk gebied zou hand in hand moeten gaan met een goed ontwikkeld gevoel voor ethiek, een roep die wel her en der in de computerwereld klinkt, zoals hier.
Ik heb dit ook al een tijdje zien aankomen. Computers zijn ontstaan uit de studie naar complexe elektronische schakelingen. Daar kwam ook wiskunde bij van pas om het complexere werk te kunnen omzetten in nulletjes in eentjes. Al snel ging het omgekeerd, en werden de eerste computers al ingezet aan de grenzen van het wiskundige kennisdomein om de berekeningen te doen die door mensen te traag gaan. Een computer maakt ook minder rekenfouten, heb ik me laten vertellen.
Snel foutloos rekenen kwam ook goed bij boekhouden van pas. Naar het schijnt zou IBM veel te danken hebben aan de volkstellingen te mogen doen met ponskaarten. De vooruitgang was niet meer te stoppen en aanbod is vraag jarenlang nauw blijven volgen met betere en kleinere toestellen, die ook goedkoper werden zodat ze vlot het huishouden binnendrongen, en later zelfs de binnenzak.
Toepassingen maken voor het grote publiek komt best wel wat bij kijken. De studie van mens-machine-interactie heeft natuurlijk voor een stuk kunnen voortbouwen op wat al binnen de psychologie werd uitgezocht.
De groei ging zo hard dat het wel eens de verkeerde kant op ging. Zo is de dotcom bubble uiteen gespat, en gaat het niet met de 3D printers zoals analysten hadden gehoopt. Ook dacht men dat in het verlengde van domotica zowat alles op het internet zou aansluiten, maar daar is het — momenteel toch nog — wat te vroeg voor.
Misschien gaat het wel wat te strak met dat aanbod, en als de vraag niet volgt is dat nefast voor de prijs. Als je nu iets wil lanceren online is het eigenlijk vreemd als je er geld voor vraagt. Geld heb je wel nodig, natuurlijk, dus is er een schaduw-economie ontstaan waar je munt kan slaan uit het gedrag van je 'klanten'. De fijne kunst van producten en diensten aanbieden was al goed ontwikkeld in het tijdperk van radio en televisie, maar krijgt nu op het internet wel een heel nieuwe dimensie bij.
Dus net zoals de marketing in het algemeen, dringt het zich onder computer-mensen inderdaad op om ook stil te staan bij ethiek. Je wil zoekresultaten aanpassen aan de wensen en verwachtingen van de gebruiker, maar ethnisch profileren wil je wel vermijden. Moeilijk!
Voorlopig verwacht ik dat Jan Modaal nog even vast zal zitten in een moeras van onduidelijkheid. Met wetten zoals GDPR zijn wel al wat krijtlijnen uitgezet, maar het gevecht tussen de grote spelers speelt in alle stilte boven ons hoofd wel nog altijd af. En eerlijk gezegd vrees ik eerst nog een slingerbeweging in een richting die nadelig is voor wat we als consument kunnen verwachten. Als je een mastodont als Facebook inbeeldt, dat deze zou moeten scheiden in onafhankelijke internationale bedrijven verspreid over de wereld, maar wel een eenvormige gelijkmatige gebruikservaring moeten bieden? Dan moet er al veel duidelijk zijn over dewelke dat dan moet zijn, en er zal niet zo vlot in kunnen geschakeld worden zoals Facebook zelf nu in theorie kan beslissen over hoe hun website ineen zit. Denk maar aan hoe e-mail geössificeerd zit.
What if they replaced Windows with Microsoft Linux...
2020-10-11 20:26 winmslinux [permalink]
→ What if they replaced Windows with Microsoft Linux
Hmm, in the very far future, sure, why not. But right now, it may be a little harder than these people make it look like. So, where are we now and what would it take? I'll do some projections here based on what I personally feel and think, so I may be far off, but I hope I can make some points some people may be overlooking in this matter...
We've got WSL which was a great first step in the right direction. The most important thing here, and I guess it follows from the work that was done to get Docker working on Windows, is that there's deep deep down in the mechanics of the kernal, made an opening into the very fiber of the very thing that makes Windows Windows, and a base into the task scheduler so it could work with both the heavy-handed old-style Windows processes, and the lighter, moderner Linux-like processes. (I believe it was chosen to call them pico-processes because I guess at that level you'll not really want to get tied to something specific like Linux there and then...) What I really think is the most important that this serves as a precedent, that the kernel team is listening and willing to budge in any direction at all. So yes perhaps into a hybrid model where Windows allows a little more *nix very close to it's internals, and move from there to a little more and more of this and a little less and less of the old until it's all fine and ready to move up into an emulation layer. At this point they should have seen this coming, Windows 95 had to be able to run 16-bit applications for DOS, and ran 'Windows on Windows' 16-bit application with a translation layer that would convert all the calls to the underlying system 32-bits system. So, if you're on Windows, check your machine now for
C:\Windows\SysWOW64, yes there's another emulation layer your 32-bits applications use to get work done on the underlying 64-bits system. I guess they're very hard at work as we speak to have a "Windows x64 on Windows ARM" as we speak, I've noticed some news items about that here and there recently.
(Which I regret a little bit, to be honest. I guess things could get a lot smoother to first have a "Windows ARM on Windows x64" sub-system and start promoting the developer tools to get your current applications already running in (fake) ARM and have the plain user completely oblivious. Performance will probably be comparable, and the gain you'd get when you finally get a hand on Windows-ready ARM hardware would be even greater because they've already prepared for ARM... But this may be all wishful thinking on my part, and a hard sell to management that need to get to maximum success with minimal investment...)
WSL 2 is another step in this direction, it lets go of talking the speach a kernel would, and talks all like 'system' what a kernel itself understands. It's only a step though, and what I'm really looking forward to is having a full-on Linux application play nice with the Windows graphical environment. There's a lot of differences to overcome there to make it happen, but it would open the way for the next steps. If there's a way to have both side by side, the work can start on the mirror movement: having a revised Windows graphical sub-system that talks with a *nix-style graphical setup, and have that as primary agent handling the graphical environment. With that you'll have much more in place to build a solution that runs as a Linux process and emulates a system with the DLL's in place to make an EXE work.
I know too little about the Linux kernel to know if this would mean Linux needs to provide the neccessary to have pico-processes of its own (or better giga-processes to fully reverse the projection), so this emulation layer actually shows in process enumeration that there's an EXE image running together with the other ELF-based images. Then again, I don't even know if Wine has this now, or even needs it. It would be nice though, that in this progress Microsoft pays respect to what went into Wine and silently and respectfully makes it so that the end-result nicely overlaps with Wine, progressing into a single strong solution to run Windows programs on Linux.
Could you do a mill architecture with RISC-V?
2020-09-29 22:26 millrisc [permalink]
I wondered today if it would be feasable to build a processing unit according to the mill architecture with the RISC-V instruction set. But as always, I also wonder if I'm out of my league and know far too little of these things to come even close to forming an accurate answer, or even if I'm anywhere close to a good idea. If I understood correctly, the mill architecture does what modern CPU's already do: use a bank of virtual registers with multiple heavily pipelined streams of translated instructions. CPU's that do hyperthreading have two streams of instructions, but that's about it. I'm really rooting for the first article I read about a real system that has more than two, but with just a little imagination, and if you know the 'price per transistor' keeps going down, you can image a huge bank of virtual registers, with a bank of ALU's close, that processes a 'large' number of instruction streams. Ideally even a totally variant number of instruction streams. This may be a caching nightmare, but instead of wasting a lot of in-system logic to do branch prediction and other bookkeepingof what an instruction stream is doing, what if you could just load another instruction stream, just up until you get all of the piplined stages fully occupied...
Alas, I'm so much out of that business that I guess I need to conclude I'm a wild dreamer. I may stumble on a good idea now and then, but know too little to be sure. So I'll note it down here. I hope I haven't bored you, and with just a little luck, you are able to judge about this idea. If so let me know...
MEAN Stack Considered Harmful
2020-09-23 10:31 meanbad [permalink]
→ MEAN Stack Considered Harmful
An important read, also reminds me of what I've written here.
The creator of tx use tx.
2020-08-16 16:09 txdogfood [permalink]
→ Alper: The JIRA team does not use JIRA and of course why would they if anybody gave them the choice.
The creator of tx uses tx.
HP Pavilion Keyboard 300
2020-07-02 10:48 hppk300 [permalink]
More specifically: Dear HP-person that was responsible for the design of the HP Pavilion Keyboard 300,
Congratulations on the great design. I appreciate the effort that went into designing a keyboard that brings the evolution of the laptop design to the desktop user. (Though I have bought this keyboard because the keys on my laptop are coming loose. It's not an HP, don't worry.) The result is a sleek minimal design that fits well with most other accessories of contemporary office work.
"Modern" applications are using less and less of the function keys. So I understand that keys marked "f1" though to "f12" now have a primary function that controls multi-media, the screen, or open the search or configuration dialogs. If you need to press a function key, you can still unlock this function by combining the key press with the "fn" key. I'm willing to adapt. (Albeit grudgingly.) I'm also willing to forgive the dumb pricks from electronics that forgot to provide a 'fn-lock' feature, for example under a combination of "fn" and the padlock key, or "fn" and "esc".
A daring design decision must have been to drop the num-lock, caps-lock and scroll-lock indicators. They take up much space and are in a place that people don't notice anyway. Considering nobody ever has 'num' unlocked anymore — all keyboards have dedicated arrow keys, now — I was pleasantly surprised to find a "paste" key where "num lock" is on other keyboards! It must have been a such big departure from current standards, that you've decided to keep a "scr lk" button as a reminder of all the good times. I too think there must be enough people using it in their daily work that it still merits a key of its own.
You can hear I'm quite positive. The one big regret, though, is you stole my right "ctrl". I used that one a lot. Especially with one-hand combinations with the arrow keys. Now I get "<" and the cursor not in the place I wanted. That'll be a lot harder to adapt to. It'll take so much concentration that I'd want to temporarily halt my music, but that's easily done now with a single press of the "f5" key — excuse me the "⏯" key.
Congratulations and thank you. I'll be thinking about you a lot.
Carefull with Gogole Sheet CSV export
2020-06-26 14:18 ggggrgviz [permalink]
Ready for another story from the trenches? So image a Google Sheet made by someone else, with all kinds of dat in about 30 columns, of about a few thousand rows. Yes, it's a stretch to keep using Sheets for that, but this data will serve for the analysis for a decent application to manage this with... That probably won't be my team handling that project, but I had to do a quick cross reference of this data with the data in the database of one our current projects. The best way to do cross-checks is get the sheet into a table in the database to run queries. I guess you should be able to import a CSV pretty easily, right? I searched around and found this:
Which I thought would provide the data in just the way ready for me to import. Wrong. The second column just happened to have codes for all of the items that are numeric for the first few hundreds of items, and then alphanumeric codes. At first I thought the CSV importer was fouling up, but I hadn't looked at the CSV data itself. Turns out this CSV exporter checks the first few lines (or perhaps even only the first one!), guesses the column is numeric, and then just exports an empty value for all non-numeric values in that column!
The code in that column was only in a number of cases needed to uniquely identify the items, so I first was looking for a reason why my cross-match was throwing duplicates in all of the wrong places. Ofcourse. Weep one tear for the time lost, then move on. Take solace in the wisdom gained.
I solved it by using the CSV from the Export menu. I only needed it once so I didn't get a URL for that.
Why no C++ webdev...
2020-06-05 17:23 cppwebdev [permalink]
→ Quora: Why is C++ not used in web development?
For what it's worth, in creating xxm it feels like I'm trying to create this exact thing except for with the Object Pascal language. Yes, you can do HTTP all by yourself, you can do an ISAPI extension DLL or a Apache httpd module, but you'll still get a strange hybrid between a server service and a web application that has nothing like a platform you can depend on to do the heavy lifting. And, if I'm permitted to speak frankly, in C++ this would be ugly! And probably would need a lot of code to make even the basic things happen. Too bad (Object) Pascal has been called verbose, if you know what you're doing you can write the logic you need in concise readable syntax.
Still what I'm finding in trying to get people to take a look at xxm, they either are unable to disregard the visual RAD form-designer style programming like I do, and don't get that xxm in it's current for is much more like early-days PHP but with the Delphi compiler instead of the script interpreter server-side; or they are fixed in thinking 'the web + Delphi' is all about a data-layer, doomed to only serve plain CRUD requests to and from a front-end layer, and never talk to the user's browser directly. Please! A big strong no on both accounts. Let me explain.
I've always seen — pretty much since FrontPage and DreamWeaver — that if you have a visual designer to manage what to go on a HTML page, you get really ugly code. It'll look the way you want, but a lot of decisions have been made for you. Some with negative consequences for you down the road. And the underlying code is strange and ugly, unneccessarily complex for your website-visitors' browser to work with. I guess modern front-end web-devs must have known this also as I've seen a regression towards working on big chunks of raw coding the last decade. Yes, font-ends are hacking away in CSS and HTML, and not with their bare hands, all kinds of CSS pro-processors and template engines do the heavy lifting behind. So if you know what you're doing, you can have this as well, in a Delphi project. I don't need a form designer, I make the page-builder first with dummy data, and run it in the browser. Don't forget, hitting F5 in the browser to an xxm website running over a development-handler, fires up the Delphi compiler there and then. Edit→Save→Refresh→Repeat
Then there's the other thing. If you start a conversation about webservers and Delphi, bam there's DataSnap. Strange. Is it because I'm strongly dys-convinced about ORM's? (Reminder to self: still have to write that grand essay about what's bad about ORM's.) Yeah sure, if you have things that use RTTI to serialize your data-objects in some way, you can easily use one of the available options to serve it over some web-server and bam you can call it REST and get away with it. But this is a completely different thing than having a full blown web-application serve from something you created! Complete with images and stylesheets. And yes you can have both🤯 from the same web-server-service🤯. I've had people walk away, unable to believe me. It still feels like it's a case of opening your mind to be able to see it.
Whaddayaknow, it checks out!
2020-05-27 10:30 primescheck [permalink]
→ J: Doc/Articles/Play104: The 10,000,000,000th Prime Number
http://yoy.be/home/primes/?a=2&x=10000000000&t=1&n=1 p(455052511)=10000000019 is actually the first prime past 10^10, but that does mean my primes thingy found the 455052511 primes lower than that.
Microsoft Teams was down?
2020-03-16 20:29 nottx [permalink]
→ Microsoft Teams goes down just as Europe logs on to work remotely — Verge
Tx wasn't down, especially the instance you host yourself.