2,879,515 events, 1,497,994 push events, 2,247,358 commit messages, 156,700,960 characters
git: marginally improve a recurring annoyance
Occasionally when I run the command "git pull", rather than completing the pull, git wastes a bit of my time and cognitive cycles with this useless information:
There is no tracking information for the current branch.
Please specify which branch you want to rebase against.
See git-pull(1) for details.
git pull <remote> <branch>
If you wish to set tracking information for this branch you can do so with:
git branch --set-upstream-to=origin/<branch> master
I cannot recall a single time that the next step for me to do has been anything other than to inform git that the upstream branch it should be tracking is, in fact, the one with the exact same friggin' name as my local branch. I strongly expect this to hold for almost every time that almost every human has ever viewed this message. What a waste!
Today I decided I finally needed to resolve this recurring annoyance for myself, and find whatever the git config option is to tell git to default to using the upstream branch name here. And, unless my man-page-scanning, Stack Overflow searching and Google searching have missed it, there apparently is no such config option!
I truly do not understand why a UX failure with such an apparently obvious solution still exists in git. I am almost tempted to become a git contributor to solve this single issue.
In any case, the best workaround I see for now is one suggested by both this StackOverflow answer and this blog post: create a git alias to run the appropriate "set upstream" command for you.
With this workaround in place, future versions of me will have the pleasure of ditching the previous workflow:
1. Run "git pull".
2. Observe and parse failure message.
3. Waste precious cognitive cycles remembering what to do.
4. Copy-paste the suggested command from the error message.
5. EDIT THE SUGGESTED COMMAND, tediously copying in the current
branch name.
6. Run the command.
7. Re-run "git pull".
...in favor of the new workflow:
1. Run "git pull".
2. Observe and parse failure message.
3. Waste _fewer 😀_ precious cognitive cycles remembering what to do.
4. Run "git set-up<tab>"
5. Re-run "git pull".
Ah, what luxury for future versions of me.
</entitled whiny rant>
It was a great session tonight. Together, the group and the instructor worked on creating the login form, login page, registration, cookies, etc. What I appreciate the most is the fact that we all were able to experience the complexities of a project like this, where even our instructor had issues to make everything work. This is the type of didactic approach that should be implemented at InnoTech College. An atmosphere that is fully focused on learning the ropes. It is not that we (the students) are not fit for the tasks, but that we just need to be guided through the process before we can actually walk the mile alone. That is the whole point of adult education.
Create syntax_project.py
The following is the instructions that helped me create this project: We’ve decided to pursue the dream of small-business ownership and open up a furniture store called Lovely Loveseats for Neat Suites on Fleet Street. With our newfound knowledge of Python programming, we’re going to build a system to help speed up the process of creating receipts for your customers. In this project, we will be storing the names and prices of a furniture store’s catalog in variables. You will then process the total price and item list of customers, printing them to the output terminal.
- Let’s add in our first item, the Lovely Loveseat that is the store’s namesake. Create a variable called lovely_loveseat_description and assign to it the following string: "Lovely Loveseat. Tufted polyester blend on wood. 32 inches high x 40 inches wide x 30 inches deep. Red or white."
- Great, now let’s create a price for the loveseat. Create a variable lovely_loveseat_price and set it equal to 254.00.
- Let’s extend our inventory with another characteristic piece of furniture! Create a variable called stylish_settee_description and assign to it the following string: "Stylish Settee. Faux leather on birch. 29.50 inches high x 54.75 inches wide x 28 inches deep. Black."
- Now let’s set the price for our Stylish Settee. Create a variable stylish_settee_price and assign it the value of 180.50.
- Fantastic, we just need one more item before we’re ready for business. Create a new variable called luxurious_lamp_description and assign it the following: "Luxurious Lamp. Glass and iron. 36 inches tall. Brown with cream shade."
- Let’s set the price for this item. Create a variable called luxurious_lamp_price and set it equal to 52.15.
- In order to be a business, we should also be calculating sales tax. Let’s store that in a variable as well. Define the variable sales_tax and set it equal to .088. That’s 8.8%.
Our First Customer 8. Our first customer is making their purchase! Let’s keep a running tally of their expenses by defining a variable called customer_one_total. Since they haven’t purchased anything yet, let’s set that variable equal to 0 for now. 9. We should also keep a list of the descriptions of things they’re purchasing. Create a variable called customer_one_itemization and set that equal to the empty string "". We’ll tack on the descriptions to this as they make their purchases. 10. Our customer has decided they are going to purchase our Lovely Loveseat! Add the price to customer_one_total. 11. Let’s start keeping track of the items our customer purchased. Add the description of the Lovely Loveseat to customer_one_itemization. 12. Our customer has also decided to purchase the Luxurious Lamp! Let’s add the price to the customer’s total. 13. Let’s keep the itemization up-to-date and add the description of the Luxurious Lamp to our itemization. 14. They’re ready to check out! Let’s begin by calculating sales tax. Create a variable called customer_one_tax and set it equal to customer_one_total times sales_tax. 15. Add the sales tax to the customer’s total cost. 16. Let’s start printing up their receipt! Begin by printing out the heading for their itemization. Print the phrase "Customer One Items:". 17. Print customer_one_itemization. 18. Now add a heading for their total cost: Print out "Customer One Total:" 19. Now print out their total! Our first customer now has a receipt for the things they purchased. 20. Congratulations! We created our catalog and served our first customer. We used our knowledge of strings and numbers to create and update variables. We were able to print out an itemized list and a total cost for our customer. Lovely!
Samba Service Working!
Remember to read the readme for notes. Important notes that I learned:
- user and group IDs are important and they must match between the host and the container.
- Further improvement can be to make a .sh script for the host that creates variables for the IDs and pass these variables to the docker configuration, the minimum automation is 0 steps, but 1 step is also welcomed when not having the most optimal thing, more than 1 step is not friendly enough in my opinion
"9:25am. I am surprised it is this early given that I must have woken up at least an hour ago. Yesterday my sleep was good, but today it was pretty crappy, though not as bad as two days ago.
Well, dropping RI for the time being seems to be paying off. As great as it is, it has definitely been sucking too much of my energy. If only I could deal with my other obsessions, I could reach the ideal mental state.
10:55am. Done with breakfast. Let me read Weapons Systems for a bit and then I will start.
11:25am. Done with chores. Let cool down for 5m and then I wil lstart.
11:30am. Let me start.
It is early morning, but I am already tired. Damn.
Well, it cannot be helped. Though the language is getting closer to completion, my position is pretty bad right now. Until I can get Spiral to an usable state, I will be stuck lugging its heavy weight around. And that weight will impinge on my mental state.
Yesterday I did a lot of thinking and thanks to that I've resolved the issue of how to make the partial evaluator incremental.
11:35am. And in the last few days I've put in the basic helpers and defined the AST. Also the thinking I did yesterday helped me get into the mood a little.
But despite all of that, I am still standing at the entrance to the dungeon. The darkness beckons to me, but I've yet to muster the urge to step inside.
11:45am. I am too tired. And at the same time my mind is too restless. I am caught up in daydreaming and indulgence.
I am weak. No way would a post-human have my attitude. But the only thing I can do is compromise and do a little bit at a time.
First of all me create stumps for the peval function.
11:50am.
let peval (env : TopEnv) x =
let rec term x = failwith ""
and ty x = failwith ""
term x
Every great program starts with the first line.
11:55am. It is difficult. To battle is always difficult.
Before it begins you bolster your ego, you dream of great victory and you step into the fray.
Then you face the bloodshed and the sinister wind of death howls eating away at your resolve and chipping at your soul. You realize that the dreams you had were just empty words and the scene in front of you is the reality. You have the chance to flee.
I believe that the ones who succeed are the ones are the ones who push against the wind. They tell the reality to shove it and bodly proclaim that their dreams are the one true reality.
That is justice.
There is a difference between the sky and the earth. And so is there a difference between the earth and burying one's head in it.
12pm. What is the purpose of terror if not to overcome it? Looking at reality just for the sake of gawking is overrated. Sight exists for a reason.
12:05pm. Damn I am tired.
I just won't be able to do much today. But I will keep it up for as long as possible. I might be tired, but I am also determined. At times like this I find it difficult to believe I am a talented programmer.
type LangEnv = {
trace : Trace
seq : ResizeArray<TypedBind>
cse : Dictionary<Op * Data [], Data> list
i : int ref
env_global_type : Ty []
env_global_value : Data []
env_stack_type : Ty []
env_stack_value : Data []
}
12:10pm. The LangEnv
is the core of the partial evaluator.
Right now I am really struggling to think what comes first.
Sometimes the inspiration comes to you, but sometimes you need to chase after it.
12:15pm. Today I'll try the later. The way to do that is to check out what I had last time. Let me just try doing each case in turn and seeing where that gets me.
12:20pm.
| B -> TyB
| V x -> v x
| Lit x -> TyLit x
| KeywordCreate(k,l) -> TyKeyword(k,Array.map (ev d) l)
Let me do these 4 as an icebreaker. I won't let the depth of my experience become a lie.
Even if I cannot move forward, I will not take a step back. From now till 6p and later, I will be right here on this chair trying to push the boulder in front of me.
12:25pm. Focus me, focus. I still haven't put down even a word. Just do it.
let peval (env : TopEnv) x =
let rec term x =
let ev = term
match x with
| EB -> DB
| EV x -> v x
| ELit(_,x) -> DLit x
| ESymbol(_,x) -> DSymbol x
and ty x = failwith ""
term x
Let me start with this. Now let me implement v
.
let inline v x = if x < 0 then d.env_global_value.[-x-1] else d.env_stack_value.[x]
This is how it used to be in the prototype. I've thought how indexing should be done under current conditions. Let me do it.
12:30pm.
let rec term (s : LangEnv) x =
let ev = term
let v i = if i < s.env_global_value.Length then s.env_global_value.[i] else s.env_stack_value.[i-s.env_global_value.Length]
match x with
| EB -> DB
| EV a -> v a
| ELit(_,a) -> DLit a
| ESymbol(_,a) -> DSymbol a
This is good. Let me do it one by one.
12:35pm. Focus me, focus.
| Inline(on_succ,data) ->
let d =
{d with
env_global_type=Array.map vt data.type'.free_vars
env_global_value=Array.map v data.value.free_vars
env_stack_type=Array.zeroCreate data.type'.stack_size
env_stack_type_ptr=0
env_stack_value=Array.zeroCreate data.value.stack_size
env_stack_value_ptr=0
}
ev d on_succ
Inline I no longer have.
| Inl(on_succ,data) -> function' false on_succ data
| Forall(on_succ,data) -> function' true on_succ data
Now come these two. Focus me.
I need to get into it.
Let me do the plain inl
.
...Actually, let me do it right there directly.
let function' is_forall on_succ (data : ExprData) =
TyFunction(on_succ,
data.type'.stack_size,Array.zeroCreate<_> data.type'.free_vars.Length,
data.value.stack_size,Array.map v data.value.free_vars,
is_forall)
This is all it was? Meh. I was expecting something a lot bigger.
12:45pm. Actually this thing confuses me. Why is that zeroCreate
there?
let peval (env : TopEnv) x =
let vt s i = if i < s.env_global_type.Length then s.env_global_type.[i] else s.env_stack_type.[i-s.env_global_type.Length]
let v s i = if i < s.env_global_value.Length then s.env_global_value.[i] else s.env_stack_value.[i-s.env_global_value.Length]
Let me do it like this.
I am not sure why I am treating the type free vars like that in the prototype, but it is almost certainly a mistake. Did I not have foralls in the prototype maybe? I can't recall. Whatever.
Let me do it right.
1:05pm. Had to take a break.
| EFun'(_,free_vars,i,body,annot) -> DFunction(body,annot,Array.map (v s) free_vars.term.free_vars,Array.map (vt s) free_vars.ty.free_vars,free_vars.term.stack_size,free_vars.ty.stack_size)
I admit the fact that EFun'
has an id, but DFunction does not is stumping me.
| EFun'(_,free_vars,i,body,annot) ->
assert (free_vars.term.free_vars.Length = i)
DFunction(body,annot,Array.map (v s) free_vars.term.free_vars,Array.map (vt s) free_vars.ty.free_vars,free_vars.term.stack_size,free_vars.ty.stack_size)
Let me plug in this assert.
Now let me do the forall.
| EForall'(_,free_vars,i,body) ->
assert (free_vars.ty.free_vars.Length = i)
DForall(body,Array.map (v s) free_vars.term.free_vars,Array.map (vt s) free_vars.ty.free_vars,free_vars.term.stack_size,free_vars.ty.stack_size)
I'll get rid of the asserts later.
For now they are fine.
What is the next case?
| Glob(e) -> ev d !e
| Let(bind,on_succ) -> ev (push_value_var (ev d bind) d) on_succ
The first one is easy.
| ERecursive a -> ev s !a
The reason why it was called global in the prototype is because back then I did not figure out the trick of how to properly compile local mutually recursive statements.
| RecBlock(l,on_succ) ->
let l,d =
let function' is_forall on_succ (data : ExprData) =
TyFunction(on_succ,
data.type'.stack_size,Array.zeroCreate<_> data.type'.free_vars.Length,
data.value.stack_size,Array.zeroCreate<_> data.value.free_vars.Length,
is_forall)
Array.mapFold (fun d x ->
let data,x =
match x with
| Inl(on_succ,data) -> data,function' false on_succ data
| Forall(on_succ,data) -> data,function' true on_succ data
| _ -> raise_type_error d "Compiler error: Expected a inl or a forall in the recursive block."
(data,x), push_value_var x d
) d l
l |> Array.iter (function
| data,TyFunction(_,_,c,_,e,_) ->
data.type'.free_vars |> Array.iteri (fun i x -> c.[i] <- vt x) // Don't mind the lack of d being passed to vt and v.
data.value.free_vars |> Array.iteri (fun i x -> e.[i] <- v x)
| _ -> failwith "impossible"
)
ev d on_succ
Hehehe, I no longer have any need for this.
| ERecBlock -> failwith "Compiler error: Recursive blocks should be inlined and eliminated during the prepass."
This is such a major part of Spiral and it is so much better this time around.
| Let(bind,on_succ) -> ev (push_value_var (ev d bind) d) on_succ
The next one is this. The basic let statement.
1:20pm.
| ELet(r,i,a,b) -> ev (add_trace (store_value_var s i (ev s a)) r) b
Let me make those two helper functions. This time all the let bindings have ids so I can't just keep pushing the variables.
1:25pm. Focus me. Stop getting lost in daydreams.
let add_trace (s : LangEnv) r = {s with trace = r :: s.trace}
let store_value_var (s : LangEnv) i v = s.env_stack_value.[i-s.env_global_value.Length] <- v; s
let store_type_var (s : LangEnv) i v = s.env_stack_type.[i-s.env_global_type.Length] <- v; s
This is good.
1:35pm.
let store_value_var (s : LangEnv) i v = s.env_stack_value.[i-s.env_global_value.Length] <- v
let store_type_var (s : LangEnv) i v = s.env_stack_type.[i-s.env_global_type.Length] <- v
Let me do it like this.
| ELet(r,i,a,b) -> store_value_var s i (ev s a); ev (add_trace s r) b
Now this is more sensible.
| LitTest(a,b,on_succ,on_fail) ->
let b = v b
if lit_to_ty a = data_to_ty b then if_ (eq d (TyLit a) b) on_succ on_fail
else ev d on_fail
| PairTest(x,on_succ,on_fail) ->
match v x with
| TyPair(a,b) -> ev (push_value_var a d |> push_value_var b) on_succ
| _ -> ev d on_fail
| KeywordTest(keyword, bind, on_succ, on_fail) ->
match v bind with
| TyKeyword(keyword', l) when keyword = keyword' -> ev {d with env_stack_value_ptr=Array.fold push_var_ptr d.env_stack_value_ptr l} on_succ
| _ -> ev d on_fail
The next should be these. But this is not what I feel like doing right now.
What I really want to do are join points.
1:45pm.
| DFunction of body : E * annot : T option * term : Data [] * ty : Ty [] * term_stack_size : StackSize * ty_stack_size : StackSize
It really bothers me that this here is T option
...
No, ignore that. If necessary I'll change this, but only if needed.
What is really putting huge pressure on me is...
let data_to_ty closure_convert env x =
let m = Dictionary(HashIdentity.Reference)
let rec f x =
Utils.memoize m (function
| DPair(a,b) -> YPair(f a, f b)
| DSymbol a -> YSymbol a
| DRecord l -> YRecord(Map.map (fun _ -> f) l)
| DNominal(_,a) | DV(L(_,a)) -> a
| DLit x -> lit_to_ty x
| DB -> YB
| DFunction(a,Some b,c,d,e,z) -> closure_convert env a b c d e z
| DFunction(_,None,_,_,_,_) -> raise_type_error env "Cannot convert a function that is not annotated into a type."
| DForall -> raise_type_error env "Cannot convert a forall into a type."
) x
f x
Unlike before I can't convert functions to their type directly. I have to get this out of the way.
1:45pm. I've broken the ice a little and got the feeling for the partial evaluator. But join points are one of the most major parts of it.
I want to do the regular join points and the closure conversion one. If I can do that then I will have trully stepped over the threeshold.
Join points are not a trivial thing by any means. It took me an enormous amount of time to uncover their structure in 2017 and 2018. With my current mental state it would be impossible to do this work today, but I do have my cache of experience and the work on the prototype to go by. I must tackle this.
1:55pm. I am making progress at a snail's pace. But it is important that I say it out loud - I want to do this!
It is like jamming a wedge. I might be tired and unmotivated, but having a clearly stated goal acts as a beacon towards where I need to go. There are a hundred other things I could do, but I do not need to hesitate. I will do the thing I stated because I have stated it.
Let me take a short break here.
2:15pm. Ahhh, the path of transcendence. It does not have to be demonic, but what is right and wrong depends on the context.
Right now my urges for it are so overflowing it is maddening. Why can't the people living in this world see that the universe is a prison? Why is it so hard to accept?
But I am the one who is wrong to feel this way about others. Yet, I cannot stop this. Maybe it was a fate that I should become a villain. I certainly have the poverty aspect of it down.
To me the ideal universe is the one where everyone accepts the path of transcendence. I am not aloof like Fang Yuan - if I had the power I'd definitely not accept any other way in others. I'd spread despair and suffering until the humans are cooked. My realm would be one of nightmares.
2:25pm. I want to make up my mind to whole heartedly dedicate myself to it. I do not want my heart to have a split dedication. I do not want to make any more exceptions.
The fact that I am of this age, and still haven't made a cent despite working so much is amongst the worst case scenarios. Holy shit is real life relentless. First I was coerced in wasting my prime years in school, then I could not beat the markets after that. I keep being coerced by circumstance in such unfavorable positions time after time after time.
Even if I want to be aloof, I have a mad boner for revenge right now. Damn, I am pissed. If I could I'd just stay in bed all day until this feeling of agitation passes, but I have to use my time intelligently.
Eventually, all strong feelings burn themselves away leaving behind wisdom. I look forward to that time.
2:30pm. I've made up my mind. I want to use the power of the path to make this world submit to me. I won't respect anyone else's will. Not unless they prove themselves. And I will consider that justice.
The self improvement loop was justice enough to bring me to tears.
Even though it is unusable for me due to circumstance, there will be other things I can use on the broader path. I will believe in it. The self improvement look is just a small part of it that comes later in the game.
2:35pm. I am mad that I allowed my circumstances to shake my heart so much.
2:40pm. Ok, ok, let me take a real break. Right now this feeling is so intense that there is no way I can focus on programming. Fatigue on one side, this feeling on the other. My distraction is maximal even though I have all the time to myself.
I'll do the chores here and maybe spend the rest of the day in bed.
I need to calm the fuck down."
Walk
Chef and his girlfriend are going to have a promenade. They are walking along the straight road which consists of segments placed one by one. Before walking Chef and his girlfriend stay at the beginning of the first segment, they want to achieve the end of the last segment.
There are few problems:
At the beginning Chef should choose constant integer - the velocity of mooving. It can't be changed inside one segment. The velocity should be decreased by at least 1 after achieving the end of some segment. There is exactly one shop on each segment. Each shop has an attractiveness. If it's attractiveness is W and Chef and his girlfriend move with velocity V then if V < W girlfriend will run away into the shop and the promenade will become ruined. Chef doesn't want to lose her girl in such a way, but he is an old one, so you should find the minimal possible velocity at the first segment to satisfy all conditions.
Revert "no fuck you"
This reverts commit ffa967df2e99b54f8544d7bb78914f46aebf7d85.
Add version anchors to release page
Summary: This allows us to link to specific releases (for as long as they are available on the release page) using an anchor. Example: http://localhost:4000/releases/#0.22.0
This ensures that tweets and other social media posts have good SEO by not always pointing
to the same link (plain /releases/
) over and over, as well as a better user experience
for people looking for old releases.
The implementation is a little unfortunately hacky since there is no way to define offsets for an anchor. We need to make room for the nav bar, and anchoring the target content to the absolute top edge of the screen is not always good UX anyway.
Test Plan:
make serve
Navigating to latest version brings you to the top of the page: http://localhost:4000/releases/#0.22.2
Navigating to most recent past version puts thoe whole past versions table in view: http://localhost:4000/releases/#0.22.1
Navigating to some older versions always puts them in view: http://localhost:4000/releases/#0.22.0 http://localhost:4000/releases/#0.21.13 http://localhost:4000/releases/#0.21.2
Navigating to a very old version lands you on the top of the page: http://localhost:4000/releases/#0.20.0 (IMO this is good, as very old versions will tend to be out of consensus anyway, so encouraging the user to upgrade should be the goal)
Reviewers: #bitcoin_abc, deadalnix
Reviewed By: #bitcoin_abc, deadalnix
Differential Revision: https://reviews.bitcoinabc.org/D7675
Revamping the TCP code, again
I still wasn't very happy with the state of the dnsio_tcp code. It really deserves to be more of a first-class citizen than it has been so far, and there's also the impending DNS Stateful Operations (DSO) draft that we'll want to eventually support. When looking at how DSO would factor into the code, I found there were lots of corner cases that weren't well explored in the existing code, too, and decided to just revamp the whole thing again for the Nth time.
Various highlights:
Parameters
- tcp_clients_per_thread minimum changed from 32 to 16
- tcp_clients_per_thread default changed from 128 to 256
- tcp_fastopen default changed from 128 to 256
- tcp_timeout max value changed from 1080 to 1800
- tcp_backlog param added in case anyone needs a non-default listen() backlog, and the new default is SOMAXCONN.
Behavior
-
tcp_timeout is now the /client/ side timeout (what we tell clients to use as an idle/inactivity timeout if they support such signalling), and the server-side cutoff at which we RST a delinquent inactive connection is now fixed at double the specified client-side timeout. Currently the only signalling is via EDNS TCP Keepalive on applicable responses, but in the future we'd send a similar value via DSO KeepAlive as well.
-
Timeout values are now fixed at runtime and do not auto-scale as connection load rises. This raised too many problematic edge-cases that are difficult to solve efficiently when intersecting with other necessary features.
-
When thread (daemon) shutdown is requested, all advertised timeouts switch to zero (and in the DSO case, we'd send a server-initiated unidirectional DSO KeepAlive to all clients indicating the zero), and a two-phase graceful shutdown commences which can last up to 10 seconds: 5s of continued normal request processing while advertising zero timeouts, then send a DSO Retry Delay or TCP FIN as appropriate and wait a further 5 seconds draining reads and waiting for the client to close before resetting any remaining connections on exit).
-
The response-writing part of the code no longer allows write syscalls to block (well, to return EAGAIN and cause us to return to the event loop with a stalled transaction in its write phase, which is effectively blocking in the context of one connection). If a full response cannot immediately be written to the TCP output buffers (e.g. because they're full and so is the TCP window to the client), it is assumed that client and/or network misbehavior is in play and the connection is reset abruptly.
-
All of the state and logic for implementing DSO is already in place, just not the actual protocol-level support for reading and writing DSO messages.
Testing
While we've always tested TCP in the most-basic sense, we've never had tests that exercise multiple client connections in parallel and reach various corner cases (max clients, timeouts, failures at various mid-transaction points, etc).
The testsuite now configures a daemon with minimal TCP parameters (tcp_timeout=5, tcp_clients_per_thread=16, tcp_threads=1) and overwhelms it with 300 client connections (as fast as it can spawn them) exercising an array of different "good" and "bad" client behaviors with various random artificial delays injected at critical points. It should be fairly thorough at ensuring stupid state and/or behavioral bugs that would only arise with multiple clients are properly caught.
In the parts that test TCP timeouts (including the graceful shutdown timeouts at daemon exit), there's no good way to speed up the slowness of the testing, so a new environment variable SLOW_TESTS=1 must be set to enable the slow parts of these tests. Without the variable we still test the 300 connection scenario, we just don't exercise the case of clients hanging until the server them times out at runtime and during daemon shutdown. It's set in our default QA scripts, but not default for manual "make check" invocations because the additional delay is annoying when you're not working on the TCP code itself.
TODO
The next obvious steps in no particular order are the protocol implementation of DSO itself (which may stall on the publishing of the final RFC) and the refactoring our read-side buffering so that we can guarantee <= 1 read per req (even under pipeline pressure) while still treating concurrent connections fairly. Currently we have the fairness part down, but at the cost of a fixed 2 reads per req. I don't know yet if either of those changes will make the cut for 3.0.0. If not, they might end up in a relatively quick 3.1.0 follow-up.
Boilerplate: Update to d22b1886428528bac433e154f219b9c91437edd0
Conventions:
- openshift/golang-osd-operator: Update
commit: b24e8d5d094a339ad622589e42f3790568e54130 author: Benjamin Dematteo Integrating remaining comments from PR#41 review
commit: 9c5adcc6a9026422324e77d0fbf8c4c3dc2df90f author: Eric Fried Script/target to generate a commit after update
This adds a boilerplate-commit
target brought in by the nexus
makefile, intended for use by consuming repositories. The target invokes
a script of the same name that creates a git commit out of your current
unstaged changes if they relate to boilerplate bootstrap, update, and/or
subscriptions. When the changes include an update, the generated commit
message contains a log summary of the boilerplate commits brought in by
the update, as well as a github compare
URL for the same, in the
spirit of promote.sh.
commit: 039f40dea15739c856a5568707a9d14912bb9cd6 author: Eric Fried Configure golangci-lint to keep going
By default, golangci-lint will stop printing errors after a certain limit. This can be annoying, especially in CI, as you would have to keep running it repeatedly to fix all the problems. So this commit adds configuration values to disable those limits, meaning all errors will be printed on each run.
commit: 7c3a564e8524fc827dc00e0fddcabaf8f12ba5bb author: Eric Fried Disallow (most) dirty checkouts when updating
Since boilerplate update messes with your local checkout, it can be hard to recover pre-existing local changes if something goes wrong and you need to back out. With this commit, update fails quickly if your checkout is not clean.
However, to facilitate the most common workflows, we allow the following exceptions:
- We try to detect when you're bootstrapping, and allow only the files related to that.
- We try to detect when you're only updating the config, i.e. changing subscriptions, and allow that.
commit: 237207a4900095092aa31ec9b0de1edabc084bdf author: Eric Fried Refactor: Rename local vars in update
The variable names in the main update script were ambiguous and confused me every time I had to deal with the script. Change them to be more developer-friendly.
commit: b41514107d7632063be4afd2279fdb5dcffa9670 author: Benjamin Dematteo Adding a check_generation make target to check generated files are not altered
commit: 601c37ed1ce04801cce664f4b97052fe993c7ebe author: Arjun Naik Fixed where git is installed in image
Signed-off-by: Arjun Naik [email protected]
commit: 9fb2d8bbcf252be54f49ec482d4e353b2bb6cdb2 author: Eric Fried s/update-boilerplate/boilerplate-update/
Rename the make
target according to the noun-verb format we've been
standardizing on.
commit: e427cf54e5517edbfb8597eebc3aad7bd536396e author: Eric Fried Update README with a bootstrap scriptlet
Bootstrapping was slightly painful, comprising multiple steps, one of which was clicking around to download a file. This commit adds a paste-into-console-able scriptlet to the README to make it effectively a single step.
commit: 3226121cffff5e42d205e88dbd534b8021f22456 author: Eric Fried golang-osd-operator update calls out codecov integration
Update the output of the openshift/golang-osd-operator
convention's
update
script to point to the code coverage integration SOP.
Jira: OSD-5134
-
added shaders
-
Arcane explosion
-
Earth Quake was changed to Blood Web
-
Blood shader added
-
removed annoying ass camera fuck unity
although
One thing we should remember the authenticity of work is must. I mean "athough" is a small spelling mistake but still important to be corrected as you know whosoever read our README.md would get a wrong impression from these silly mistakes. Sorry it may be annoying but yeah...
Fix render texture fix
No seriously how did the original author not notice that the texture is fine, just the alpha is fucked? I mean FUCK, you know how much time I lost to this shit? FUCK YOU. I already solved that with the old cunt exporter but thought it's a different problem now because this is the shiny new exporter but no. No, it's the same fucking problem. Bloody stupid.
Updated the Complete Crimes of My Life: I was 14 and not older in a couple of the events, I learned from Magic while defeating evil.
[CHECKPOINT] More C++ fixes
I just fucking love C++ - you can't even take random header file from stdlib and simply /parse/ it. Nice shit, love it.
Updates to CSV file (iss #37)
1005 Sch of Landscape Architecture 1003 Drachman Institute 3506 School of Theatre Arts 3507 School of Media Arts 1001 CAPLA Administration 3501 Fine Arts Administration 2D 2D 3D 3D ARH ART HISTORY AVCE ARTS AND VISUAL CULTURE EDUCATION CERA CERAMICS CST COSTUME FNDN FOUNDATIONS GALY GALLERIES PHTO PHOTOGRAPHY PRNT PRINTMAKING PTDR PAINTING AND DRAWING SCLP SCULPTURE VISC VISUAL COMMUNICATIONS VRC VISUAL RESOURCE CENTER AJDS AZ JASS DANCE SHOWCASE CNTS SEASON CONCERTS GC GRADUATE STUDENT CONCERT SEDT STEVIE ELLER DANCE THEATRE ESTE LARRY ESTES HARA MB HARALOVICH JENK JENNY JENKINS MAKI YURI MAKINO MARP MARPL MULC MICHAEL MULCAHY OWCZ KIM OWCZARSKI PETT HOMER PETTEY RODD PATRICK RODDY ROOM DOT ROOME SECK BEVERLY SECKINGER SELZ BARBARA SELZNICK SKY LISANNE SKYLER ADM TAR ADMIN OFFICE LGT LIGHTING MKT MARKETING PNT PAINT PRP PROPS SCN SCENE SND SOUND STD TAR STUDIES 3001 Eller Administration 8304 Testing Office 0118 Agric & Resource Econ-Ins 2418 Agricultural Resource Econ-Res 3002 School of Public Admin and Policy 3003 Finance 3004 Management and Organizations 3005 Economic Business Research Ctr 3006 Marketing 3007 School of Accountancy 3010 Management Information Systems 3012 Karl Eller Grad School of Mgmt 3013 Economic Science Laboratory 3014 Ctr for Mgmt of Information 3016 Eller Undergraduate Programs 1404 PHYSICAL EDUCATION PROGRAM 3208 Teaching Teacher Education 3212 Language Reading and Culture 3201 Education - Dean's Office 0460 Ctr Interpretation Test & Rsch 0467 Sch of Intl Lang Lit & Culture 0472 Public & Applied Humanities 0473 Center for Buddhist Studies 0474 Center for Digital Humanities 9303 Ctr for Educ Rsch in Culture 0439 East Asian Studies 0427 Humanities Administration 0452 Writing Skills Improvement 2505 GUADALAJARA SUMMER SCHOOL HMNT College of Humanities 3601 Law Administration 3602 Law Library 3603 Law Instruction 3301 College of Nursing 3302 CON Accelerated Partnership Pg 0655 COM PHX Emergency Med Rsch Ctr 0660 COM Phx Basic Medical Sci 0662 COM Phx NanoBioscience & Med 0664 COM Phx Anesthesiology 0665 COM Phx Biomedical Informatics 0666 COM Phx Child Health 0667 COM Phx Emergency Medicine 0668 COM Phx Family Commun&Prev Med 0669 COM Phx Internal Medicine 0670 COM Phx Neurology 0671 COM Phx Obstetrics&Gynecology 0672 COM Phx Ophthalmology 0673 COM Phx Orthopedics 0674 COM Phx Psychiatry 0675 COM Phx Physical Med & Rehab 0676 COM Phx Radiology 0677 COM Phx Surgery 0678 COM Phx Neurosurgery 0679 COM Phx Urology 0680 COM Phx Pathology 0681 COM Phx Dermatology 0682 COM Phx Molecular Medicine 0683 COM Phx Radiation Oncology 0684 COM Phx Bioethics Med Humanism 0686 COM Phx Ctr Tox&Pharm Ed&Res 0687 COM Phx Translational Neurosci 0688 COM-Phx Interdisc Oncology 0659 COM Phx Campus Administration 1902 Pharmaceutical Sciences 1903 Pharmacology and Toxicology 1904 Center for Phytomedicine Rsch 1905 Pharmacy Practice and Science 1906 HOPE Center 1907 Center for Toxicology 1908 Poison Control Center 1901 Pharmacy Administration 0700 Otolaryngology 0702 Surgery 0703 Obstetrics and Gynecology 0704 Family and Community Medicine 0705 Physiology 0707 Immunobiology 0708 Chemistry & Biochemistry-Med 0709 Pediatrics 0710 Cellular & Molecular Medicine 0711 Medical Imaging 0712 Arizona Center on Aging 0715 Anesthesiology 0713 Medicine 0716 Sarver Heart Center 0717 Psychiatry 0718 Neurology 0719 Pharmacology 0720 Pathology 0724 Ophthalmology & Vision Science 0729 Biomedical Communications 0741 Radiation Oncology 0744 Clinical Teaching 0750 Dept of Emergency Medicine 0752 Medical Student Research Prog 0755 Physiology-Research 0757 Immunobiology-Research 0758 Chemistry & Biochemistry-Rsch 0760 Cellular & Molecular Med-Rsch 0763 Medicine-Research 0768 Neurology-Research 0769 Pharmacology-Research 0771 Arthritis Center-Research 0772 Children's Research Center 0775 AZ Emergency Medicine Rsch Ctr 0779 Liver Research Institute 0784 Arizona Telemedicine Program 0785 COM Clinical Rural Rotations 0786 Orthopaedic Surgery 0788 Andrew Weil Ctr Intgrtv Med 0790 COM General - Research 0792 AHS Continuing Medical Educ 0795 Valley Fever Ctr for Excellnc 0805 Neurosurgery 0810 Urology 0850 Diabetes Research 0851 Neuro Degeneration&Repair Rsch 0852 Cardiovascular Biology Rsch 0853 Cancer Research 0854 Adv Rsch Inst Biomed Imaging 1401 Physiology-Undergraduate Prog 6810 AHS General 0701 Medicine Administration 0796 AHS Provost Administration 0798 COM Administration-Research 4203 Health Education-Undergraduate 4204 Epidemiology and Biostatistics 4205 Health Promotion Sciences 4206 Community Environment & Policy 4207 Canyon Ranch Ctr Health Promo 4211 Global Health Institute 4212 Public Hlth Pract & Trans Rsch 4213 ESRAC 6816 Ctr of Excellence Womens Hlth 4201 Public Health Administration 60XX BMS Department 60YY BMS Graduate Program 84BE COM Phx Bioethics 65BI COM Phx BMI 65CD COM Phx Clinical Decision 65CI COM Phx Clinical Informatics 60AG BMS- A. Gallitano 85MM COM-Phx IMM Lab 85PI COM-Phx Pediatric Infectious Disease 85RF COM Phx Neuro-Dev Disorders Lab R Frye 85NG COM Phx NG Lab 85NT COM Phx NT Lab 86CD COM P Program for Clinical Decision Supt 86CT COM Phx CTPER 86MD COM Phx Center for Med Decision Support 86PM COM Phx Precision Medicine 55EM COM Phx Emerg Med 68FC COM Phx FCM 69CR COM Phx Cardiology 69CI COMP Clinical Informatics 69CS COM Phx Clin Data Analytics & Dec Spt 69CT COM Phx Clinical Trials-Internal Med 69EN COM Phx Endocrinology 69GI COM Phx Gastroenterology 69HT COM Phx Hospitalist Internal Medicine 69ID COM Phx Infectious Disease 69IG COM Phx Internal Geriatric 69PU COM Phx Pulmonary 69RE COM Phx Rheumatology 62NB NanoBioscience Department 78BA Neurosurgery Banner 78BN Neurosurgery BNI 71OB COM Phx Obstetrics & Gynecology 60AS BMS- A. Sertil 60AT BMS- A. Titelbaum 60BH BMS- B. Handa 77ES COM Phx Endocrinology Surgery 77OL COM Phx Otolaryngology 77PL COM Phx Plastics Surgery 60DF BMS- D. Ferguson 77TR COM Phx Trauma Surgery 77TS COM Phx Transplant Surgery 60EG BMS-E. Garofalo 87TN COM Phx Translational Neuroscience 88IO COM Phx Interdisciplinary Oncology 69CD COM Phx Cardiolgoy 69IM COM Phx Internal Medicine 69LT COM Phx Liver Transplant Internal Med 69PM COM Phx PMI internal Medicine 60EN BMS- E. Nikulina 60HG BMS- H. Glowacka 60JH BMS- J. Hsieh 60KG BMS- K. Gustin 60KH BMS- K. Hastings 60KW BMS- K. Whitfield 60MH BMS- M. Herbst-Kralovetz 60MO BMS- M. O'Neil 60PB BMS- P. Boehmer 60PS BMS- P. Standley 60RF BMS- R. Fisher 60RG BMS- R. Gonzales 60RH BMS- R. Hammer 60SK BMS- S. Kim 60SQ BMS- S. Qiu 60SS BMS- S. Sharma 60SZ BMS- S. Zack 60TA BMS- T. Anderson 60TH BMS- T. Hale 60WL BMS- W. Lee 62FZ Nano- F. Zenhausern 62JG Nano- Jian Gu 62JL Nano- J. Lacombe 69GR COM Phx Cardiolgoy - Guy Reed 69MG COM Phx Cardiolgoy - Martha Gulati 69JH COM P Internal Medicine- Jui-Cheng Hsieh 69MF COM Phx Internal Medicine - Mike Fallon 85JL COM Phx NT Lab - Jonathan Lifshitz 85RR COM Phx NT Lab - Rachel Rowe 85TT COM Phx NT Lab - Theresa Thomas 85MK COM Phx NG Lab - Michael Kruer 69KK COM Phx Pulmonary - Ken Knox 69TW COM Phx Pulmonary - Ting Wang 85TS COM-Phx Ped Infect Dis - Terrence Stull 85DA COM-Phx IMM Lab - David Azorsa 0721 Cancer Center Division 0723 Asthma/Airway Disease Rsch Ctr 0753 Hispanic Center of Excellence 0799 AZ Simulation Technology & Edu 3310 AZ Health Education Centers 6802 UAHS Clin & Interprof Skills 6807 UAHS Research 6815 All of Us Research Program 6820 UAHS Brain Science 9941 UAHS Banner Space ABCD AZ Cntr for Biology of Complex Diseases EMBI Evelyn F. McKnight Brain Institute MCRO Microcirculation NSMA Neural Systems Memory and Aging OPSC James C Wyant Coll Optical Sci 0102 Veterinary Sci & Microbio-Ins 0108 Agric Educ Tech & Innov-Ins 0112 Sch of Natural Resources-Ins 0115 Arid Lands Studies-Ins 0121 Environmental Science-Ins 0123 Nutritional Sciences-Ins 0124 Animal Sciences-Ins 0125 School of Plant Sciences-Ins 0131 Entomology-Ins 0150 Animal&Biomedical Sciences-Ins 1202 Water Resources Rsch Ctr-Res 2402 VeterinaryA Sci & Microbio-Res 2406 Campus Agriculture Center 2408 Agric Educ Tech & Innov-Res 2411 Arizona Experiment Station 2412 Sch of Nat Resource&Enviro-Res 2415 Safford Agriculture Center 2416 YCEDA 2419 Citrus Agriculture Center 2421 Environmental Science-Res 2423 Nutritional Sciences-Res 2424 Animal Sciences-Res 2425 School of Plant Sciences-Res 2426 MARANA AGRICULTURE CENTER 2427 DK Ranch 2428 V-Bar-V Ranch-Res 2429 Yuma Agriculture Center-Res 2430 Maricopa Agricultural Ctr-Res 2431 Entomology-Res 2433 AZ Veterinary Diagnostic Lab 2450 Animal&Biomedical Sciences-Res 2503 Arid Lands Studies-Res 2504 Agriculture Demonstration Farm 0402 Atmospheric Sciences 0417 Molecular and Cellular Biology 0422 Astronomy 0425 Chemistry 0426 Planetary Sciences 0438 MMT Observatory 0501 Institute Atmospheric Physics 2508 Biochem & Molecular Biophysics 2519 Neuro Communication Disorders 2522 AZ Research Labs - Science 2524 AZ RESEARCH LABS - CHEMISTRY 2525 AZ Research Labs - Geosciences 2526 AZ Research Labs - Physics 2528 Sch of Info: Sci Tech & Arts 2533 GIDP Neuroscience 2536 Chemistry & Biochemistry-Sci 2871 Lowell Institute for Min Res 0152 CALS Administration 0442 Science Administration 1101 Flandrau Science Center SCNC College of Science CARS Carson Scholars Programs CBPR CommunityBased Participatory Environment CCAS Ctr for Climate Adapt Sci and Solutions CLMS Climate Assessment for the Southwest HESJ Haury Prgm in Envr and Social Justice IEA IE Administration IRAP International Research Applications Prgm SWCA Southwest Climate Adaptation Science Ctr ABMS Analytical & Biological Mass Spec NPGP Peyghambarian Group BIOT Biotechnology CGF Cryogenics & Compressed Gas Facility CIS Center for Insect Science CORE Research Core Services CSGP Center for Insect Science GIDP FGC Functional Genomics Core FLOW Flow Cytometry Facility GENE Human Evolutionary Genetics IMGC Imaging Cores MNFC Micro/Nano Fabrication Center MSC Molecular Structures Core NRL Nuclear Reactor Laboratory SOCD Social Development TBIR Translational BioImaging Resource UAGC University of Arizona Genetics Core 2523 Planning Degree Program 0403 Political Science 0414 Bur of Applied Rsch in Anthro 0443 Social & Behavioral Sci Admin 0444 Soc & Behavioral Sci Rsch Inst 0445 SW Institute for Rsch on Women 0447 Southwest Studies Center 0449 Medieval Reformation Studies 0476 Political Economy & Moral Sci 1801 Arizona Quarterly 2701 Journal of the Southwest 3206 Sch of Info Res & Library Sci SBSC College of Social & Behav Sci 0153 CALS Comm and Technologies 0601 Bureau of Mineral Technology 2306 Engineering Experiment Station 2309 School of Sustainable Engr Sys 0122 Biosystems Engineering - Ins 2422 Biosystems Engineering - Res 2301 Engineering Administration BCF Bio Computing Facility BMGP Biomedical Engineering GIDP MWC Machine & Welding Center