Matthew “Moxie” Rosenfeld, the CEO of Signal Messenger LLC, is an American. Americans typically do not understand face or the importance of it which is likely why he let his and his company’s face tarnish beyond they point of no return. Trustworthiness is a word Americans typically do understand. Signal no longer has that either.
Er, what?
“written by 林慧 (Wai Lin)” so I assume he’s talking about 面子, aka his company’s “Face” is tarnished because he is an American and Americans don’t care about “Face.” A fairly prejudicially charged statement to just throw in there. Kind of makes me not care about the rest of the points.
I am no Asian myself, but I’ll bite.
Moxie should have known better. It’s now much harder for members of the free software movement to associate with Signal, since it can become proprietary at any moment.
See arnt’s comment for an attempt to save Moxie’s face.
This does seem to confirm something I’ve been thinking about lately while making my own PL, which is that array/slice handling should probably be a feature of all languages, since it is often the thing that we are doing to deal with I/O and it can be error prone. And not just the concept, but an appropriate selection of utility functions for all of the use-cases that one could have with arrays/slices in terms of copying/moving/whatnot. I wouldn’t say that Rust did a stellar job of the last one since their pace of adding library functions is glacial at best. (Professional Rust programmer btw)
Some langs are going in this direction, like Alan https://docs.alan-lang.org/about_alan.html
“Congressman, I don’t have all the answers to your very technical questions…”
That’s not something you hear everyday. Who is this Riggleman guy?
It’s interesting because he sounds decently familiar with GitHub. I wonder how many Congresspersons have GitHub accounts, if any?
Perhaps your expectations of congressman is so low that the ability and initiative to use a website to do research is the more surprising part, because it doesn’t take a lot of familiarity with Github to perform a search. He did sound familiar with programming on more than a surface level, however.
He was able to talk confidently about nightly toolchain builds though, which takes a fair amount of technical understanding.
His mention of DoD practice leads me to think he picked this up as an intelligence officer. You don’t have to be an experienced developer to recognize high-level risks. Extrapolating from a single point of experience working for a former I.O. for several years, they have a keen skill for picking through details.
What jgb said. He talked like a programmer or project manager, not someone vaguely familiar with it.
I switched to a basic, non-smart phone, some time ago. I’ve run into some issues with things that require a smartphone app, but overall it’s been good. I still waste plenty of time on the fediverse, but only when I’m on my computer.
I’ve been making the steps to do this, one at a time. One recent critical step was setting up a MacOS VM so that I can have a bridge connector to iMessage. I think another one will be having an android VM in a cloud server so that I can make simple adapters to certain app-only interfaces.
This tendency towards app-first/app-only interfaces while the web interface is non-existent or non-functional is something that seriously troubles me, but as long as I have a brain and a computer, I’ll find a way around it.
I’m trying to figure out if I can make a keyboard-first phone, one that has touchscreen only as a fallback, and I’m making slow progress towards it.
I learned about this months ago and I have a one liner I use as a workaround, since, funnily enough, the stat
tool actually does know about birth
date, but it’s a little obfuscated.
fd -tf -d1 -0 | \
xargs -0 stat -c '%W %n' | \
sort -k1,1n | \
cut -d' ' -f2- | \
fzf --no-sort --print0 | \
xargs -0r open
I use fzf
as a file opener UI here with the pre-sorted files by birth time. The relevant bit is stat -c '%W %n'
which formats the output (this should be o.k. even for files with spaces in the name), and %W
represents birth time.
When I learned this, I was confounded because I checked the man pages man 3 stat
and the birth time wasn’t there, so I looked into stat
’s source code, and it turns out that they just have a custom implementation which looks it up.
It’s perplexing to me, because it’s honestly the most useful sorting metric after modified time.
It probably depends on the file system if it is available? For my ext4 home directory stat outputs something like this:
Access: 2019-06-22 20:05:51.326934512 +0200
Modify: 2019-03-09 20:50:54.475030909 +0100
Change: 2019-03-09 20:50:54.487028674 +0100
Birth: -
No birth date available.
Yeah, birth date is highly file system dependent. Although it’s weird that ext4 wouldn’t have it, since mine does (also ext4).
I got a MacOS VM working, so I’m going to be writing a server to be able to interface with imessage. This will be pretty easy, since I’ve already mapped out most of the queries and applescript commands. Cross compilation should be interesting, though. Worst case scenario, I could always just compile directly on the VM if I run into roadblocks. That’ll allow me to get rid of my iPhone without much loss.
Then I’m going to be fixing up my blog. I want to use/make a basic static file markdown template engine, so if anyone has any recommendations, let me know! I like Drew DeVault’s site, and a few other programming blogs that are simple static sites.
And once I fixed the blog, I’m going to continue my work on writing a JSON tokenizer, and documenting the effort in an attempt to make a series on an intermediate level project in Rust. The first part will be on the naive implementation I made, which has “ok” performance, but only runs at about 250MB/s. This next part will be converting it to operate on byte streams instead of str
/utf8 strings, which will make it able to be usable on network streams. As for why I’m choosing to do this, that will be a future blog entry, :P. It’s one piece of a very large puzzle.
I’m also going to try to publish my Sway library I wrote in Rust and the utilites I wrote for it. I’m also going to try to publish my wayland utility I wrote.
I’ll also be finishing packing up my life, so that I can be a bit more nomadic and work for a while in the bay area again. But, simultaneously, I’ve finished the outline of my potential future SaaS company, so I’ll start the MVP of that and work with my friend to come up with an investor deck.
It sounds like a lot, but to be fair, I’ve been working on these things for the past few weeks, so this weekend is about tying up loose ends.
I got a MacOS VM working, so I’m going to be writing a server to be able to interface with imessage. This will be pretty easy, since I’ve already mapped out most of the queries and applescript commands. Cross compilation should be interesting, though. Worst case scenario, I could always just compile directly on the VM if I run into roadblocks. That’ll allow me to get rid of my iPhone without much loss.
Someone should run a SaaS that’s nothing but Mac VMs running iMessage with some well known protocol interfacing them to the outside :) They’d make a killing - until they got sued by Apple :)
Just curious - what makes you want to switch? The increased hackability of Android?
When I told my Mom (after sending some test messages) about that little project she said “can you make money off of this,” and I was like “oh, I actually could, couldn’t I?” I think getting sued by Apple would be worth it as a badge of honor, :P
And I want to switch to neither iPhone nor Android. Phones these days are just really disappointing to me. I don’t need a 6” screen, and I’m tired of suspecting my apps of stealing my data or pestering me. I can do with just a web browser, GPS, and text messenger. Plus Apple’s abrasive need to stop me from modifying my own software/hardware irritates me. So, yeah, hackability is a big one. I haven’t used an Android in a while, but I’m suspecting that nothing will really hit my needs, so I’m thinking about making my own phone this coming year and using my old Nexus 5X in the meantime.
I might try to snag a PinePhone dev kit and see if I can mod it for my own needs.
When I told my Mom (after sending some test messages) about that little project she said “can you make money off of this,” and I was like “oh, I actually could, couldn’t I?” I think getting sued by Apple would be worth it as a badge of honor, :P
Heh :) I would support such a service!
If you don’t sell it, you should consider open sourcing it!
Dude, that doesn’t just sound like a lot. Anyway, good luck! Did you intentionally not describe your potential SaaS company? I would like to hear more – I would like to start something myself one day (which might be exactly the reason that you didn’t give any details, haha).
Anyway, I have a statically generated blog as well. I don’t know what type of content you want to post, but most of my posts are mathematical. I did a quick and dirty writeup on my blog.
It’s a fintech company based on automating various accounting things for compliance with the IRS in the US, for now. From their it’ll evolve into more, hopefully. It’s based on experience I gained from my first job at a startup.
Many ideas are fine to share, since it’s the implementation/management which makes or breaks it. I would recommend working at a startup in order to learn how they work first. It really does make a big difference. I’m in the IRC if you want to talk more.
Nice blog! Gotta love how quick it loads.
Definitely, and IMO look at Pelican for ideas. The code is clean and accessible. Would still be using this if I didn’t have a thing about wanting to blog from my mobile devices :)
Seconding Pelican—I recently replaced my own home-rolled static site generator with it, and was very happy with the results. If you’re already considering Jinja for templating, I think Pelican will end up being very similar to whatever you would build if you built it yourself.
Indeed! And the code is so well written I was able to steal large chunks of it for a project I wrote to ingest Pelican blog entries and convert them to Wordpress.com posts.
Note - it’s ugly in that it requires you to use a local config file for your username/password - the API I was using seemed to want me to be a website and use OAuth and I never could figure out how to make that work.
I also have my selfmade generator. 256 lines of Python and a large chunk of that is for RestructuredText which most do not need.
The easiest version is to use this https://github.com/foxlet/macOS-Simple-KVM/. Extremely simple. I’m running on Arch with qemu 3.2. qemu 4.0 broke my windows 10 VM for a reason I haven’t figured out yet.
For static site generators, I’m fairly fond of Zola these days: https://www.getzola.org/ Part of that is just ‘cause it’s Rust, so I know the ecosystem, but it’s also young enough to be simple but old enough to have the features I want.
Rolling your own using askama
is also very fun.
That’s a really good one! And having Rust is actually an important factor in case there’s something I need to modify (not that there is a language that I’m not comfortable with anymore, at this point). The author seems very active too, which is always a plus. It’s got very well polished documentation too.
Is there a mirror which actually complies with the GDPR (i.e makes it possible to opt out of their tracking)? I can’t read that article without clicking “I agree” to “We use cookies and other technologies to customize your experience, perform analytics and deliver personalized advertising on our sites, apps and newsletters and across the Internet based on your interests.”, which I’d rather not do.
EDIT: I suppose outline.com is the answer: https://outline.com/FW9FzX
Spoiler alert: when you click “I agree”, you get to the article, and the full page is covered with a popup: “We noticed you’re browsing in private mode.Private browsing is permitted exclusively for our subscribers.”
…
Thanks to Firefox and one or more of its add-ons (possibly uBlock Origin and/or NoScript), I don’t see these annoyances.
It is ironic if you do not consent to unlimited tracking, you cannot read the article blaming Chrome for being a spy software (which it is)
I’m working on a post describing the time system of TempleOS. It’s a very interesting thing. The documentation for it is actually somewhat wrong, it doesn’t have sub-second resolution like it claims. I’m gonna walk through how the code works as well as how to interface with the real time clock.
can’t wait. So you basically only have POSIX time() to work, with returning the time as integers counting seconds?
From what I’ve dug into so far, yes. I am pretty sure that there’s a higher resolution timer because of the 3D rendering stuff in TempleOS, but I think that might end up using the processor timers instead of the system ones.
Yeah you’re right that it wouldn’t work without a timer.
Is the timer code writteh in assembly or holy-C?
Here is the code to read the time from the CMOS Real-Time Clock. Here is the structure it reads into. Note that it doesn’t populate the first two struct fields (b[0]
and b[1]
respectively in KDate.HC
function NowDateTimeStruct
). I am not sure how these are used yet, but I need to do more looking into the code.
Seems like you are right, should be sec10000 and sec100 right? Whatever that means, maybe on account of being BCD coded?
Have you found any timing code elsewhere that uses sub second timing?
Where will you be posting it? I’d like to read that. I’m interested in learning from TempleOS’s interactive editor and shell, but I haven’t spent time to set it up yet in a VM. TempleOS is probably a treasure trove of little bits that we could learn from.
my bet would be this: https://christine.website/
Did you know that you can search all open tabs (even across synced devices) if you prefix your search term in the urlbar with a percent sign (%
)?
There are also other modifiers to restrict results to bookmarks, history etc. See https://support.mozilla.org/en-US/kb/awesome-bar-search-firefox-bookmarks-history-tabs#w_changing-results-on-the-fly
(N.B. We actually call it the “awesome bar” instead of address or search bar, because of all these extra features:))
Oh wow, I had no idea! The fact that it works across synced devices too is incredible. I’ll be using all of those extensively from now on; thank you!
Wow, thanks! This is like half of the reason why I use the Vimium plugin and, nowadays, qutebrowser! God, I wish “advanced user” features were more well documented. Just a list of productivity tips in a concise format. At this point, I’ll have to write it myself.
Start a draft and I’m happy to proof read (and maybe even contribute a few tips). Would be a great guide to have.
God, I wish “advanced user” features were more well documented.
Firefox 66, released 9 days ago, documented that %
feature. Specifically, that version added a Search Tabs menu item to the ‘⌵’ tab overflow menu. When activated, that menu item just moves focus to the Awesome Bar and prepends “% ” for you.
I found that an elegant way to teach me the shortcut syntax without having to display help text anywhere. But now that I think about it, the interface could be even better if the Awesome Bar results popover displayed “searching in tabs” somewhere whenever the text contained %
. And I didn’t realize until reading that linked help article that the %
could be anywhere in the text, not just at the start.
Great article! As a user of sway, I’ve been aware of drew’s work for a while now. I like his classic approach to reducing complexity and those were some good tips.
I have a shortcut script which I use (I got it a long time ago) called soft_rebase
. The scenario it solves is for when I’m working in a branch and I intend to roll it up into a single commit at the end when I make a pull-request. What it does is reset the working tree changes against the master branch, compile all the commit messages that I had put in the branch until that point into a file, and re-commit it as a single commit and open the editor to modify the commit messages. The functions I use are fish
functions, but you can easily adapt it to sh
:
# Defined in /home/ashkan/.config/fish/functions/soft_rebase.fish @ line 2
function soft_rebase
set FILE (mktemp '.COMMITMSG.XXXXX')
set MERGE_BASE (git merge-base origin/master (git_branch_name))
get_commit_messages $MERGE_BASE..HEAD > $FILE
git reset --soft $MERGE_BASE
git commit -v -e -F $FILE
rm $FILE
end
# Defined in /home/ashkan/.config/fish/functions/get_commit_messages.fish @ line 2
function get_commit_messages --argument RANGE
git log --reverse --pretty=format:%B $RANGE
end
That error macro cancelling trick was very cute.