184 karma · joined April 8, 2011
Creator of: https://play.google.com/store/apps/details?id=com.sam.hex https://play.google.com/store/apps/details?id=com.android2.calculator3 https://play.google.com/store/apps/details?id=com.xlythe.saolauncher
Email at: will@xlythe.com
The president is not a king.
Stepping back quite a bit, the US constitution divides up responsibilities between the Legislator (Congress), the Executive (President), and the courts (Supreme Court).
The Legislator is given rights over declaring war, applying tariffs and levying taxes, federal budget, approving international treaties, and of course writing laws. Over the past 250 years, the legislative branch has slowly given the executive branch more discretion. In times of emergency, the legislative branch moves too slowly, so the executive branch is better suited to make snap decisions.
Trump, as soon as he's taken office, immediately used these powers to declare an emergency at the border (https://www.whitehouse.gov/fact-sheets/2025/01/fact-sheet-pr...) and redirected the military to intervene. It's an abuse of the power, as the situation has been relatively stable (enough so that congress should have had time to meet and decide on next steps), but it's something he did in his last term as well (https://trumpwhitehouse.archives.gov/presidential-actions/pr...) so was expected. What wasn't expected was the repurposing of Guantanamo Bay (a military prison with a dark history outside the jurisdiction of most US courts) now being used for migrants (https://www.bbc.com/news/articles/cy0p1ykxyzjo). It's a worrying trend of moving undesirables somewhere out of sight of the general public. In his last term, there were detention centers inside of the US (https://abcnews.go.com/Politics/tornillo-texas-tent-camp-hou...) with poor conditions -- most notably, Trump pardoned one such sheriff (https://www.npr.org/2017/08/25/545282459/president-trump-par...) who was remarkably cruel and called the tent cities personal concentration camps. This shift to move migrants to more restricted areas is seen as a way to avoid oversight.
Trump likewise invoked the International Emergency Economic Powers Act to levy tariffs against Canada (https://www.whitehouse.gov/presidential-actions/2025/02/prog...), Mexico (https://www.whitehouse.gov/presidential-actions/2025/02/impo...), and China (https://www.whitehouse.gov/presidential-actions/2025/02/impo...). Again, these powers are usually invoked in response to war, so it's considered an abuse of power. Canada and Mexico are also close allies and a part of USMCA, which is a treaty promoting free trade between the three countries; Trump negotiated & signed the USMCA treaty when he was last in office, and has since called it a bad deal and these tariffs directly conflict with it. It's put the US in a situation where allies are being alienated. Trump has also threatened tariffs against the EU and Taiwan, both of which currently count on US military intervention in case of war, which is straining those relationships as well.
Republicans, hopefully more as a show of solidarity than an act they'd follow through with, have also introduced legislation (https://ogles.house.gov/media/press-releases/rep-ogles-propo...) to allow Trump (and only Trump) to run a 3rd term as president. This kind of twisting of the laws is something you'd expect more in Russia or other puppet governments and leaves a bad taste. Similarly, legislation to add Trump to our national landmarks (https://www.congress.gov/bill/119th-congress/house-bill/792) have been floated while Trump has had historically low approval ratings when compared to past presidents (https://news.gallup.com/poll/203198/presidential-approval-ra...).
In Trump's previous term, he appointed several Supreme Court justices. The court is idealistically an unbiased and independent branch, and are given lifetime appointments as such, but the political leanings of the court have shifted with these new appointments. Abortion, a controversial topic in the US, was recently made illegal in several states after the court re-ruled, on party lines, a 50-year standing (https://www.supremecourt.gov/opinions/21pdf/19-1392_6j37.pdf). More recently, and relevantly, though, the supreme court ruled again on party lines that the president cannot be taken to court over illegal acts while in office (https://www.supremecourt.gov/opinions/23pdf/23-939_e2pg.pdf) and that only congress's power of impeachment can be used. With a republican majority in both houses of congress (and impeachment requiring 2/3rds approval to convict), there seem to be little to no recourse to anything Trump has done or plans to do regardless of legality. It's democratic in a sense -- the US population voted for a majority in the house and senate and so we're getting what we voted for -- but there's 2 years until the next election, so there's a prevailing sense of helplessness.
Getting into powers of the purse, as mentioned before, the executive branch is expected to dutifully carry out the budget and laws set by the legislative branch. This includes the creation and running of departments, as well as getting senate approval for department heads. Notably, Elon Musk is not a senate-approved department head, but he's been given dangerous amounts of access to the treasury (https://www.wired.com/story/treasury-department-doge-marko-e...) and other departments. This is without going through the normal vetting process (although, as President, Trump does have the power to bypass such requirements. It's simply against norms, and raises concerns about the possibility of blackmail, espionage, and hacking). Elon has also declared several departments as 'criminal organizations' (https://www.npr.org/2025/02/03/nx-s1-5285539/doge-musk-usaid...), Trump has fired anyone who has pushed back against Elon's requests, and funding for most departments has been paused pending review. Trump has also offered almost federal employees a Voluntary Exit Program (VEP) (https://www.opm.gov/fork/), although the legality of such a VEP is debated since past court cases (https://www.oyez.org/cases/1989/88-1943) have ruled that congressional approval is necessary. If that's the case, anyone who resigns may not end up being paid. This is seen as a wider purge (eg. https://apnews.com/article/trump-fbi-firing-a7b19a5f414ce82c..., https://www.cbsnews.com/news/trump-federal-inspectors-genera...) of the government to replace federal employees with loyalists to the president (instead of to the constitution).
And for Elon specifically, during Trump's inauguration he did his infamous "My heart goes out to you" salute (https://www.youtube.com/watch?v=-VfYjPzj1Xw) which is seen as a poor attempt to signal to the far right and neo-nazi parties, that typically have supported the republican party, that they are welcome and in positions of power now. Elon also spoke at far-right rallies in Germany (https://www.reuters.com/world/europe/elon-musk-appears-video...) championing lines of nationalist empowerment. At face value, it's innocent enough, but these terms are also seen as a dogwhistle for neo-nazis and so it's seen together as another vocalization of support for them.
Trump also pardoned everyone involved in the insurrection on January 6th, who had invaded the capital and attempted to abduct the congressmen and vice president to stop them from ratifying the peaceful transfer of power in 2020. This is seen as a nod from Trump that if you support him, you will have immunity for your actions.
---
The US populace voted for this, so if it's a coup it's a bloodless one. But everything Trump has done in the few weeks he's been in office is very extreme by the standards of the US. The transfer is power is usually peaceful, and builds upon the work of past presidents. This is a very abrupt departure from that, and no concern is given to impressions of corruption and nepotism.
It was nice for things like switching HDMI inputs; you could dynamically update the name and icon, making it more intuitive for someone who had never used the TV before and didn't know what was plugged into which port. You could also adjust settings more easily without everyone have to watch together with you on the big screen as you dug to find the obscure setting to tweak.
But your complaints were equally valid, and were a concern at the time.
I would have liked to see it ship, if just to see if customers liked it. A traditional remote still worked too. But oh well.
You could also use this to make animated fonts. An excuse to hook up a diffusion model next?
The quota the manager was referring to was very likely that.
If anyone has questions/comments/bugs or features, I'm happy to talk about the product.
It's amazing to think how the universe is ruled by such minute details.
Nearby Share was written originally in Java, so the C++ port is a bit less mature. But hopefully having something out there is better than nothing. If you decide to take a look, do leave feedback. We monitor the GitHub page and I'm active on StackOverflow if you use the google-nearby tag.
What I learned, design-wise, came from a coworker. They planned everything out in advance and would draw out components on a whiteboard and define what they'd do. A few weeks would pass before they'd write any code. In contrast, I would start with writing skeleton classes and intuit the breakpoints for building a new class. We ended up with similar code structure at the end of the day, since we were both designing the architecture (even if our methods were different). But in code reviews, I would focus on if the new code made sense within the scope of the change; are there any clear bugs, code duplication, is there a more simple approach, etc. My coworker always went back to the whiteboard and drew up the components again, making sure the new code fit within the originally defined scope or if a larger change would make more sense. Because my skeleton classes were quickly replaced with implementations, I lost my original frame of reference and only focused on what was in front of me. I could still tell when something was obviously wrong (stop sending me CLs with global state to cross talk between components!), but there was creep in the CLs I approved and the code would slowly get more complicated until I realized it needed to be refactored.
There's a tradeoff (like in anything). You can't design your own solution for every code review, as it takes too much time and removes autonomy from your peers. But remembering to step back and look at the big picture was something I needed.
There were other things I learned, like structuring code in ways that it's hard to write bugs. For example, you could write a method like...
void foo(Callback callback) {
if (error1) {
callback.onError();
return;
}
if (error2) {
callback.onError();
return;
}
if (error3) {
callback.onError();
return;
}
doWork();
callback.onSuccess();
}
but it's easy to forget to call 'callback.onError()' in a future CL. A small refactor, like... void foo(Callback callback) {
if (bar()) {
callback.onSuccess();
} else {
callback.onError();
}
}
boolean bar() {
if (error1) {
return false;
}
if (error2) {
return false;
}
if (error3) {
return false;
}
doWork();
return true;
}
has the compiler help you catch mistakes. Unit tests obviously help too, but doing both reduces the number of bugs that slip through. Similar tricks include annotating methods as @Nullable so you don't forget to nullcheck, annotating which thread is calling a method (eg. @FooManagerThread, @UiThread, etc), and doing all the if checks as close to the top of a method as possible so that you only do work if you're in a good state.Oh, and here's one last tip that I only realized needs to be reiterated because most of my coworkers forget it. Validate incoming data! Every API needs a wrapper around the entry point that...
* Verifies the caller is allowed to call that method
* Verifies the method can be called at this point in time (eg. hackerNewsApi.postComment(threadId, msg) only works if the threadId is valid)
* Verifies that the arguments make sense (eg. 'msg' is not empty/null/above the max comment size).
And this is needed at every layer (application, server, etc). Trust no one, even if the only caller is supposed to be yourself.Glossary: CL = changelist ~= pull request
I wish I could add methods from outside of my package. I currently run into cyclical dependency issues when I try and define something like...
func (g Game) GetPlayers() []Player { ... }
func (p Player) GetGame() Game { ... }
While having Game and Player in separate packages. It's not the end of the world having them in the same package, but the amount of methods does pile up...
An Android app for quickly accessing contacts, apps, and whatnot. It sits on top of your screen and if you swipe down from the little bars the app opens.
The income is mostly from the Pro version; about 5x the ad revenue. Extensions are 1x ad revenue, each. Themes made almost nothing, so they're all free now.
Suggestions:
Include the language code when uploading xml files. I always have to look up the codes. Google does this with their service[1].
An option to default to Show All. Or a url parameter. Every time I refresh the page or press back, I'm in pagination again.
When drilling into a particular language, show the language in the header title. It just says "Localize". Makes having various tabs open troublesome.
Use the language code in the url. Right now, it's... https://www.localize.im/projects/abc/languages/3C when it should be https://www.localize.im/projects/abc/languages/ru
Automatic translations.
Paid translations.
[1] https://www.dropbox.com/s/z5382q9grbyl30f/Screenshot%202014-...
Got to build a lot of cool things because of it (Themes and Extensions installed via separate apks, Overlays, Animations). And it's profitable.
[1] https://play.google.com/store/apps/details?id=com.xlythe.sao...
[1] https://developer.android.com/preview/api-overview.html Concurrent documents and activities in the Recents screen
http://googlepublicpolicy.blogspot.com/2013/04/plan-your-dig...