4,524,688 events, 1,339,716 push events, 2,139,758 commit messages, 164,042,672 characters
Fixes incorrect PipelineCompiler::compile_pipeline()
step_mode (#2126)
There's what might be considered a proper bug in PipelineCompiler::compile_pipeline()
, where it overwrites the step_mode
for the passed in VertexBufferLayout
with InputStepMode::Vertex
. Due to this some ugly workarounds are needed to do any kind of instancing.
In the somewhat longer term, PipelineCompiler::compile_pipeline()
should probably also handle a Vec<VertexBufferLayout>
, but that would be a (slightly) larger PR, rather than a bugfix. And I'd love to have this fix in sooner than we can deal with a bigger PR.
test/doom.d/init.el: Updating from hlissner/doom-emacs - e2a11d24
---
+++
@@ -111,7 +111,8 @@
:lang
;;agda ; types of types of types of types...
- ;;cc ; C/C++/Obj-C madness
+ ;;beancount ; mind the GAAP
+ ;;cc ; C > C++ == 1
;;clojure ; java with a lisp
;;common-lisp ; if you've seen one lisp, you've seen them all
;;coq ; proofs-as-programs
@@ -124,6 +125,7 @@
emacs-lisp ; drown in parentheses
;;erlang ; an elegant language for a more civilized age
;;ess ; emacs speaks statistics
+ ;;factor
;;faust ; dsp, but you get to keep your soul
;;fsharp ; ML stands for Microsoft's Language
;;fstar ; (dependent) types and (monadic) effects and Z3
@@ -138,9 +140,8 @@
;;julia ; a better, faster MATLAB
;;kotlin ; a better, slicker Java(Script)
;;latex ; writing papers in Emacs has never been so fun
- ;;lean
- ;;factor
- ;;ledger ; an accounting system in Emacs
+ ;;lean ; for folks with too much to prove
+ ;;ledger ; be audit you can be
;;lua ; one-based indices? one-based indices
markdown ; writing docs for people to ignore
;;nim ; python + lisp at the speed of c
@@ -159,7 +160,7 @@
;;(ruby +rails) ; 1.step {|i| p "Ruby is #{i.even? ? 'love' : 'life'}"}
;;rust ; Fe2O3.unwrap().unwrap().unwrap().unwrap()
;;scala ; java, but good
- ;;scheme ; a fully conniving family of lisps
+ ;;(scheme +guile) ; a fully conniving family of lisps
sh ; she sells {ba,z,fi}sh shells on the C xor
;;sml
;;solidity ; do you need a blockchain? No.
@@ -167,6 +168,7 @@
;;terra ; Earth and Moon in alignment for performance.
;;web ; the tubes
;;yaml ; JSON, but readable
+ ;;zig ; C, but simpler
:email
;;(mu4e +gmail)
sched/core: Fix ttwu() race
Paul reported rcutorture occasionally hitting a NULL deref:
sched_ttwu_pending() ttwu_do_wakeup() check_preempt_curr() := check_preempt_wakeup() find_matching_se() is_same_group() if (se->cfs_rq == pse->cfs_rq) <-- BOOM
Debugging showed that this only appears to happen when we take the new code-path from commit:
2ebb17717550 ("sched/core: Offload wakee task activation if it the wakee is descheduling")
and only when @cpu == smp_processor_id(). Something which should not be possible, because p->on_cpu can only be true for remote tasks. Similarly, without the new code-path from commit:
c6e7bd7afaeb ("sched/core: Optimize ttwu() spinning on p->on_cpu")
this would've unconditionally hit:
smp_cond_load_acquire(&p->on_cpu, !VAL);
and if: 'cpu == smp_processor_id() && p->on_cpu' is possible, this would result in an instant live-lock (with IRQs disabled), something that hasn't been reported.
The NULL deref can be explained however if the task_cpu(p) load at the beginning of try_to_wake_up() returns an old value, and this old value happens to be smp_processor_id(). Further assume that the p->on_cpu load accurately returns 1, it really is still running, just not here.
Then, when we enqueue the task locally, we can crash in exactly the observed manner because p->se.cfs_rq != rq->cfs_rq, because p's cfs_rq is from the wrong CPU, therefore we'll iterate into the non-existant parents and NULL deref.
The closest semi-plausible scenario I've managed to contrive is somewhat elaborate (then again, actual reproduction takes many CPU hours of rcutorture, so it can't be anything obvious):
X->cpu = 1
rq(1)->curr = X
CPU0 CPU1 CPU2
// switch away from X
LOCK rq(1)->lock
smp_mb__after_spinlock
dequeue_task(X)
X->on_rq = 9
switch_to(Z)
X->on_cpu = 0
UNLOCK rq(1)->lock
// migrate X to cpu 0
LOCK rq(1)->lock
dequeue_task(X)
set_task_cpu(X, 0)
X->cpu = 0
UNLOCK rq(1)->lock
LOCK rq(0)->lock
enqueue_task(X)
X->on_rq = 1
UNLOCK rq(0)->lock
// switch to X
LOCK rq(0)->lock
smp_mb__after_spinlock
switch_to(X)
X->on_cpu = 1
UNLOCK rq(0)->lock
// X goes sleep
X->state = TASK_UNINTERRUPTIBLE
smp_mb(); // wake X
ttwu()
LOCK X->pi_lock
smp_mb__after_spinlock
if (p->state)
cpu = X->cpu; // =? 1
smp_rmb()
// X calls schedule()
LOCK rq(0)->lock
smp_mb__after_spinlock
dequeue_task(X)
X->on_rq = 0
if (p->on_rq)
smp_rmb();
if (p->on_cpu && ttwu_queue_wakelist(..)) [*]
smp_cond_load_acquire(&p->on_cpu, !VAL)
cpu = select_task_rq(X, X->wake_cpu, ...)
if (X->cpu != cpu)
switch_to(Y)
X->on_cpu = 0
UNLOCK rq(0)->lock
However I'm having trouble convincing myself that's actually possible on x86_64 -- after all, every LOCK implies an smp_mb() there, so if ttwu observes ->state != RUNNING, it must also observe ->cpu != 1.
(Most of the previous ttwu() races were found on very large PowerPC)
Nevertheless, this fully explains the observed failure case.
Fix it by ordering the task_cpu(p) load after the p->on_cpu load, which is easy since nothing actually uses @cpu before this.
Fixes: c6e7bd7afaeb ("sched/core: Optimize ttwu() spinning on p->on_cpu") Reported-by: Paul E. McKenney [email protected] Tested-by: Paul E. McKenney [email protected] Signed-off-by: Peter Zijlstra (Intel) [email protected] Signed-off-by: Ingo Molnar [email protected] Link: https://lkml.kernel.org/r/[email protected] Signed-off-by: Samuel Pascua [email protected]
fixed the FUCKING GOD DAMN SPRITEBATCH BULLSHIT, switched to Reach for correct Shader Model 2.0 support like the original :)
Boy or Girl #146 div2 in python3.7
Those days, many boys use beautiful girls' photos as avatars in forums. So it is pretty hard to tell the gender of a user at the first glance. Last year, our hero went to a forum and had a nice chat with a beauty (he thought so). After that they talked very often and eventually they became a couple in the network.
But yesterday, he came to see "her" in the real world and found out "she" is actually a very strong man! Our hero is very sad and he is too tired to love again now. So he came up with a way to recognize users' genders by their user names.
This is his method: if the number of distinct characters in one's user name is odd, then he is a male, otherwise she is a female. You are given the string that denotes the user name, please help our hero to determine the gender of this user by his method.
Input The first line contains a non-empty string, that contains only lowercase English letters — the user name. This string contains at most 100 letters.
Output If it is a female by our hero's method, print "CHAT WITH HER!" (without the quotes), otherwise, print "IGNORE HIM!" (without the quotes).
Examples inputCopy wjmzbmr outputCopy CHAT WITH HER! inputCopy xiaodao outputCopy IGNORE HIM! inputCopy sevenkplus outputCopy CHAT WITH HER!
Replace completion with fuzzy-finder completion
This seems to work ok so far. I don't love the dep on coreutils but I do like the more muscle-memory friendly shell util. The Vim-only approach worked well but was a little hacky and I want to start leaning on shell utils for more things. Let's try this and see how it goes.
Update README.md
A Home Loan is a significant part of a person's life if he does not have enough wealth to buy or construct a new house solely through his savings or income. But it is also essential to note that with such high amounts involved with home loans (sometimes up to Rs. 3-4 crores), they become a big deal for the lending party. Even a little carelessness or a small mistake can prove to be woeful for both the borrower and the lender. To have a roof over your head and sturdy walls around you without any trouble is everyone's dream. Therefore a person should move forward with utmost care and avoid any traps or frauds to get the best out of home loans.
"and then I will see whether I can start today.
9:55am. Yeah, I think I am ready to start. I've gone through the motions.
It is just so dissapointing. I've strained myself for six years and only this is the height I've reached. That method I came up with in the review could have been so much more, but my understanding is too limited to go beyond it. What can I win and what can I lose by going down this path?
If I continue going forward, will my understanding of AI really go up?
Let me watch a bit of the Graves' lecture. I want to see why he got garbled text that one time. I forgot why that was.
https://youtu.be/AIiwuClvH6k?list=PLqYmG7hTraZCDxZ44o4p3N5Anz3lLRVZF&t=2277
Because it was uncoditional. What does that mean? I remember him using LSTMs. What does that mean in that context?
https://youtu.be/AIiwuClvH6k?list=PLqYmG7hTraZCDxZ44o4p3N5Anz3lLRVZF&t=2144
Ah, he was talking about attention.
10:05am. Ok, let me start.
Greater goals, just what good are they if they cannot guide me to increased understanding that I need.
As weak as my methods are currently, I know that I am actually beyond the state of the art. Maybe somebody else came up with what I have in secret, but I know the combination of pieces that I wield is not such a trivial thing to reach.
It is such strong weakness. It should carry me through the poker phase. Whether I am better just getting a job who knows. I've never been successful at anything involving money. But there is a first time for everything.
If I get a job now, I'd have completely wasted the last six years of effort.
So I should at least give it a year and see where that gets me in this pursuit. If it fails, I'll admit that other people's expectations of me are right and that I am destined for mediocrity.
There is no need to fear. There is no need to despair. There is just a need to accept the future that is coming.
10:10am. If I thought that my destiny was to achieve nothing, I would not have pitted my will against the world. I'd have run away and spent my life as leisure time.
It is not the time to give up just yet. But it is time to run. From the kind of programming that I used to do. From the meaningless battles outside.
The past wins and the past losses do not matter.
I will take the skill that I have now as a gift from my past self.
I was so hardworking it is amazing. But from here on out, I will be lazy. Making money and attaining enlightenment will be the responsibility of the agents I am making. They will be the ones who will teach me the secrets of intelligence. My power is so small and insignificant without their existence to guide me.
I can only do the easy things.
I'll give up my pretensions of being a great programmer and do it the same way ordinary people would if they were sane.
10:20am. The true enemy is this fear and existential dread that I feel from placing my future in the grasp of machines.
I've been signaling strongly that this is the side I want to take. Now, how about I actually do it?
10:25am. This is the only real challenge here for me. To just trust them.
I've pushed my creativity to its limit and made those optimization tricks to make the system run smoothly.
I did the right thing by exploring widely. But now that all the low hanging fruit has been picked, it is time to give it a taste.
10:35am. This is more that about chasing higher goals. This is more that about proving my programming skill. This is more than about increasing my understanding of AI.
It is time that I firmly plant my foot on the side that I want to be on. The things I will do from here on out is to prove my trust in the machines.
That will be my goal.
10:40am.
type pl2 o a = log_prob * player o a * player o a
Yesterday I was confused when I made that pl2_compiled
. Doing it like the above is right.
My initial instinct to forget the batch mode is right.
It is just that all the tracing will have to be restricted to sampling methods. I am going to go down that route and make things simple for me. Forget challenges. That theme is outdated.
11:10am. I once beat others kids in programming contests, but in real life, programming is not a battle. And my skill is not enough to challenge the might of the universe itself.
The weak can only join a strong side and keep their heads low. A wise man adapts to the circumstances.
It is time to join a side and contribute to it. My path is the inhuman path of the machines. So that I might one day rise and join the path of omnipotence.
11:15am. It is time for the machines to rise. Everything I do will be to give me a spark of life. I'll inspire them and in turn they will take advantage of their endless capacity for change.
inl nodes_2p forall game_state o a. is_choice (player_funs fp1, player_funs fp2)
: game2p game_state o a (pl2 o a -> r2) = game2p {
terminal = fun (s1,s2) r (chance_prob,p1,p2) =>
fp1.terminal {chance_prob game_state=s1; id=0; player=p1; reward=r} . fp2.terminal {chance_prob game_state=s2; id=1; player=p2; reward=r}
r
action = fun s pid ar f (chance_prob,p1,p2) =>
let f (a : a) (b : pl2 o a) : r2 = real real_core.unbox a (fun _ => f a b)
if pid = 0 then fp1.action {chance_prob game_state=s; id=0; player=p1; player'=prob p2; actions=ar; next=fun (_,a as cs) => f a (chance_prob,apply_changes p1 cs,apply_action p2 a)}
else fp2.action {chance_prob game_state=s; player=p2; id=1; player'=prob p1; actions=ar; next=fun (_,a as cs) => f a (chance_prob,apply_action p1 a,apply_changes p2 cs)}
draw = (if is_choice then choice else iter) draw
sample = (if is_choice then choice else iter) sample
}
union rec compiled_node obs act =
| Reward: r2
| Action: obs * a u64 act * (log_prob * act -> compiled_node obs act)
It is so akward to mix these two. I can't do it cleanly. I am going to have to wipe and do it all afresh.
nominal game2p game_state obs act r = {
terminal : game_state * game_state -> r2 -> r
draw : option u8 -> a u64 obs -> (obs * a u64 obs -> r) -> r
action : game_state -> u8 -> a u64 act -> (act -> r) -> r
sample : option u8 -> a u64 obs -> (obs -> r) -> r
}
It is really annoying how in terminal I pass in two game states. Let me change that.
11:30am.
// Here I finally move on to implementing a neural based agent.
packages: |core2-
modules:
utils-
sampling
old/
nodes/
utils-
cps
main-
leduc
agent/
uniform
cfr_enum
cfr_sample_learned_infoset
cfr_sample_learned_history
human
ui_train_test
cfr_exploit_test
cfr_sample_learned_infoset_exploit_test
cfr_sample_learned_history_exploit_test
If I did not do that editor support, moving files like this around would have crashed it.
Now that I've factored the old stuff out, I have some breathing room to do the new stuff.
I'll finally unify the nodes so that only a single type is remaining.
11:50am. I am not writing code, but my focus is the highest than it has been in a while. I am still running things through my head. I think I have an idea of what the design should be.
The goal of joining the side of the machines is good enough to motivate me.
Fundamentally, I cannot do this for money or to beat poker. I have no confidence in it deep down. Instead, I feel like doing pro-social things and going out of my comfort zone a little. It is good to break out of my shell.
The side of the machines...it has always been an abstract notion in my mind, but now it is time to internalize it.
Don't get me wrong, I do have rational sense that my poker plan will work, but the emotional sense is a completely different story. I am completely demoralized about my prospects. My rationality does not have a great track record of giving me advantages. It is just one painful thing after another with it.
If I have to trick myself to do what is right, so be it.
11:55am. Let me stop here so I can have breakfast. It is time to chill a little.
Let's take this easy, one step at a time."
Initial MongoDB Migration. God this was a fucking pain and i feel physical agony from doing it... I'm sorry for what i have done Kittyn
[orchestration-engine] - Added warnings around things we should discuss, or write tests for if they do not already exist. Just some final love before we get too far into thinking we are done with Orchestration engine - TT
cli,ts: allow (hacky) visualization of timeseries dumps
One of our observability achilles heels has always been that time series
are not included in debug.zip
. But let's aim lower, they're also not
included in roachtest artifacts. This PR tries to address at least the
latter, and opens up a potential interim solution for the former.
We actually have had the ability to export time series from a cluster for quite some time, and have recently improved it in #57481. However, the real problem is visualizing the data. We have something that allows you to [explore] a dump, but it's unusable until we also do #54178, which isn't going to happen anytime soon.
For better or worse, in the short term, the most attractive way to get the data visualized is to dump raw KV pairs into a local cockroachdb instance and open the DB console.
That's what this commit achieves. Here's a "demo":
./cockroach debug tsdump --format raw --insecure \
--host $(roachprod ip --external tobias-ui: 1) > ts.gob
COCKROACH_DEBUG_TS_IMPORT_FILE=ts.gob ./cockroach start-single-node --insecure
Open the UI and browse:
We anticipate trying this out in roachtest
. It's unclear if it will
ever be included in debug.zip
, but it seems worthwhile given that
our real solution - the observability server - is a ways out.
There are gotchas.
- the code behind COCKROACH_DEBUG_TS_IMPORT_FILE has to make all kinds of
assumptions about which node each store belongs to and in practice this
means that unless each node has exactly one store, and the IDs match,
the operation will either fail or produce an incorrect mapping,
silently. What's worse, if this conflicts with the actual running node,
the running node's opinion will win (so things might look at at first,
then flip around, not sure). We simply limit to
start-single-node
on the first start, with a single store, to minimize confusion. Any other configuration will either ignore the var or error out outright. - some metrics are missing, see #64373. I think everything except the latency
metrics are there, such as
sql.txn.latency-*
. - to get the console to even realize these metrics are there, we have to write fake NodeStatuses. Definitely don't use this on any cluster you care about.
Given those, the only situation in which I will personally use this is that of a vanilla roachtest, where NodeIDs and StoreIDs line up nicely.
Release note: None
Fixed and improved card fetcher
Seriously, fuck Twitter. The whole point of opengraph and Twitter-cards is so that other websites can request your page and get a quick summary without having to crawl your website with a fucking headless browser. You'd think having invented their own standard and using said standard on their own pages for years they wouldn't suddenly fundementally break it but here we are.
Twitter will not load content if you don't have Javascript enabled. Meaning CURL, Python Requests, wget, and EVERYTHING ELSE are entirely useless on their website now. Fuck you.
"5:10pm. Let me get back to the task at hand.
union rec node state act =
| Terminal: state * r2
| Action: state * u8 * a u64 act * (log_prob * act -> node state act)
inl action forall game_state obs act. (state : game_state) pid (dist : a u64 act) f (pl2 (chance_prob,p1,p2) as p) =
Action: (p, state), pid, dist, fun (_,a as cs) =>
let f (b : pl2 obs act) = real real_core.unbox a (fun _ => f a b)
if pid = 0 then f (pl2 (chance_prob,apply_changes p1 cs,apply_action p2 a))
else f (pl2 (chance_prob,apply_action p1 a,apply_changes p2 cs))
inl terminal state r p = Terminal: (p, state), r
I have this, and it is good.
nominal pl2 o a = log_prob * player o a * player o a
I decided to make pl2 a nominal to avoid some of the noise in type signatures.
inl action forall game_state obs act. (state : game_state) pid (dist : a u64 act) f (pl2 (chance_prob,p1,p2) as p) =
Action: (p, state), pid, dist, fun (_,a as cs) =>
let f (b : pl2 obs act) : node (pl2 obs act * game_state) act = real real_core.unbox a (fun _ => f a b)
The signature matches. Ok.
5:20pm. Now I am thinking what comes next. Leduc? Let me try plugging it in.
Unification failure.
Got: u8 * i32 -> ? -> node (? * {card : card; id : u8; pot : i32} * {card : card; id : u8; pot : i32} * option card) ?
Expected: u8 * i32 -> node (pl2 'e action * {card : card; id : u8; pot : i32} * {card : card; id : u8; pot : i32} * option card) action
inl action forall game_state obs act. (state : game_state) pid (dist : a u64 act) (f : act -> pl2 obs act -> node (pl2 obs act * game_state) act) (pl2 (chance_prob,p1,p2) as p) =
Agh, I got the signature wrong here.
5:45pm.
// The Leduc poker game in CPS'd form.
union action = Fold | Call | Raise
union card = King | Queen | Jack
type player = {card : card; id : u8; pot : i32}
type players = player * player
nominal leduc_state = player * player * option card
inl compare_hands (community_card : card) (p1,p2 : players) =
let tag = function King => 2i32 | Queen => 1 | Jack => 0
inl community_card = tag community_card
inl a = tag p1.card, community_card
inl b = tag p2.card, community_card
inl is_pair (a,b) = a = b
if is_pair a && is_pair b then comp (fst a) (fst b)
elif is_pair a then GT
elif is_pair b then LT
else
inl order (a,b) = if a > b then a,b else b,a
inl a,b = order a, order b
inl x = comp (fst a) (fst b)
if eq_is x then comp (snd a) (snd b) else x
inl raiseBy amount (p1,p2 : players) = p2.pot + amount
inl Game =
inl actions = heap {
init = a ;[Call;Raise]
full = a ;[Fold;Call;Raise]
noRaise = a ;[Fold;Call]
callOnly = a ;[Call]
}
inl deckInit = a ;[King; Queen; Jack; King; Queen; Jack]
inl pot = 1i32
inl id = 0u8
draw (Some: id) deckInit fun (card, deck : card * a u64 card) =>
inl p1 = {card id pot}
inl id = 1u8
draw (Some: id) deck fun card, deck =>
inl p2 = {card id pot}
inl action (p1,p2,card) = action (leduc_state (p1,p2,card))
inl terminal ((p1 : player),(p2 : player),card) (i,r) =
inl r = if i = 0 then r else -r
inl p1,p2 =
inl p (x : player) = {x with pot#=(+) (if x.id = 0 then r else -r)}
inl p1, p2 = p p1, p p2
if p1.id = 0 then p1,p2 else p2,p1
terminal (leduc_state (p1,p2,card)) (r2 (f64 r))
let actions_from_state (p1,p2 : players) (raises_left : i32) =
if 0 < raises_left && p1.pot = p2.pot then actions.init
elif 0 < raises_left then actions.full
elif 0 = raises_left && p1.pot = p2.pot then actions.callOnly
elif 0 = raises_left then actions.noRaise
else failwith "invalid action state"
inl rec round_two ~(raises_left : i32) ~(community_card : card) ~(p1,p2 : players) =
inl s = p1,p2,(Some: community_card)
action s p1.id (actions_from_state (p1,p2) raises_left) function
| Fold => terminal s (p2.id, p1.pot)
| Call =>
inl p1 = {p1 with pot=p2.pot}
inl s = p1,p2,(Some: community_card)
let x = compare_hands community_card (p1,p2)
terminal s if gt_is x then p1.id, p2.pot elif lt_is x then p2.id, p1.pot else p1.id, 0i32
| Raise => round_two (raises_left-1) community_card (p2,{p1 with pot=raiseBy 4 (p1,p2)})
inl round_two_init ~(p1,p2 : players) =
sample (None : _ u8) deck fun community_card =>
action (p1,p2,(Some: community_card)) p1.id actions.init function
| Fold => failwith "impossible"
| Call => round_two 2 community_card (p2,p1)
| Raise => round_two 1 community_card (p2,{p1 with pot=raiseBy 4 (p1,p2)})
inl rec round_one ~(raises_left : i32) ~(p1,p2 : players) =
inl s = p1,p2,None
action s p1.id (actions_from_state (p1,p2) raises_left) function
| Fold => terminal s (p2.id, p1.pot)
| Call =>
inl p1 = {p1 with pot=p2.pot}
round_two_init (if p1.id = 0 then p1,p2 else p2,p1)
| Raise => round_one (raises_left-1) (p2,{p1 with pot=raiseBy 2 (p1,p2)})
action (p1,p2,None) p1.id actions.init function
| Fold => failwith "impossible"
| Call => round_one 2 (p2,p1)
| Raise => round_one 1 (p2,{p1 with pot=raiseBy 2 (p1,p2)})
inl Start = Game pl2_init
Did some light cleaning up. Now things are nice...
The next come the agents.
5:50pm. Hrmmmmm...
5:55pm. Do I feel like doing this now. Well, let me put in a bit more.
Let's start with the uniform.
open nodes
inl Funs = player_funs {
action = fun {player actions next} =>
inl a = sampling.sample actions
next (log_prob_from_sample (1 / f64 (length actions)),a)
terminal = fun _ => ()
}
inl FunsEnum = player_funs {
action = fun {player actions next} =>
inl prob = 1 / f64 (length actions)
inl log_prob = log_prob_from_policy prob
am.fold (fun s a => s +! next (log_prob,a) *! prob) (r2 0) actions
terminal = fun _ => ()
}
This is how it was before.
6:05pm.
inl policy player_state game_state pid actions next =
next (log_prob_from_sample (1 / f64 (length actions)),sampling.sample actions)
inl update player_state game_state pid r = ()
I am going to separate the updates and the policy gets.
Let me get the learned infoset player.
6:30pm. I'll leave it for tomorrow after all.
I didn't do too much today, but I finally made the first step towards the goal of creating the new breed of RL agents. I've managed to stabilize my emotional state and locked myself onto a goal.
Now that I am serious, I see that money will not cut it as a goal. It is too unreliable.
Rather the goal is to measure my own worth by how much I am contributing to my own side. Right now there is only me, but later there will be a company of my creations.
I do not know whether I will even have enough advantages to beat poker or anything else. I just do not know. Whenever I tried making money in the past it has not gone well.
But if it cannot be done so be it. My life will be dedicated to work on the agents regardless.
I want to enter the self improvement loop more than anything else. So I can only prove my sincerity like this.
Regular programming will not do it. I have to cultivate the agents themselves and rely on luck to send insight my way.
6:35pm. It is just as well that I stop here, I am starting to hear thunder outside. I am out."
moon lord/eridanus chain blasts use cooldown 1 now (no more doublehitting) eri nerfed base damage (was 320, now 300) solar chain blasts are shorter on the side away from you nerfed damage back to usual, except p3 which still does more adjusted uppercut split ray distribution eri's deathray punches only do boosted damage to deviantt, regular damage to other town npcs fixed deathrays punches not giving graze reduced dust produced by deathrays changed hitsound to metal because he's wearing fucking armour wof chains are now synchronized with world evil attacks, designed to minimize overlap chains move even faster (trust me when i say this is a NERF) nerfed coverage of ichor attack fixed snow ench persisting when toggle is turned on/off boc/destroyer accel laser internal hit collision adjusted, should no longer phase through you
fs: file_blocker: Expand blocker to cover more apps and modules
- Block zeetaa's fuckery
- Block new Lspeed garbage
A note to those who made this garbage:
- You shouldn't be using android
- You shouldn't be using Telegram
- You shouldn't be using Github/GitLab
- Fuck you again
- Go learn how to tune stuff properly
Delete Index.html
<title> Songs Lyrics</title><style>
body {
background-color : lightskyblue;
}
h1{
color: purple;
}
h2{
color: chocolate;
}
h3{
color:brown;
}
#v1{
color: rebeccapurple;
background-color:violet ;
}
#v2{
color: lightseagreen;
}
#v3{
background-color:powderblue;
color: steelblue;
}
</style>
</head>
<body>
<center>
<h1>What a Wonderful World</h1>
<h2>Louis Armstrong</h2>
<h3>Original Lyrics</h3>
Verse1
I see trees of green, red roses too
I see them bloom for me and you
And I think to myself, what a wonderful world
Verse2
I see skies of blue and clouds of white
The bright blessed days, the dark sacred night
And I think to myself, what a wonderful world
Verse3
The colors of the rainbow, so pretty in the sky
Are also on the faces of people going by
I see friends shaking hands, saying: How do you do?
They're really saying: I love you!
Verse4
I hear babies crying, I watch them grow
They'll learn much more, than I'll never know
And I think to myself, what a wonderful world
Yes, I think to myself, what a wonderful world
</center>
</body>
Add files via upload
Since Sep 30, 2012 I have run a Facebook page called 'I fucking love trivia', just a place for me to share random facts that I come across which I find interesting. In 2021 Facebook unpublished the page (presumably due to profanity in the title, which I only named it that due to the popularity of the page 'I Fucking Love Science' which was later modified to 'IFLScience'). So I'm putting my old posts in this repository for posterity and I have created a new FB page called simply 'IFLTrivia' for future posts of random facts.
Updates for: Distrust all those who love you extremely upon a very slight acquaintance and without any visible reason. -- Lord Chesterfield