正在加载视频...

视频加载失败

What's next for OpenTUI? Here's a technical write-up. Over the last few months OpenTUI gained a lot of stability improvements, new unnecessary but fun features like live audio streaming, and useful features like rendering to the scrollback buffer mixed with a live TUI, called footer mode. Overall the feature...

29,430 次观看 • 1 个月前 •via X (Twitter)

0 条评论

暂无评论

原始帖子的评论将显示在这里

相关视频

"Please fix Markdown tables!" Okay: text-only, wrapping, columnar selection, proper border conjunctions, fill full width, in opencode beta now. "What took so long?" Here's a writeup: OpenTUI uses yoga layout and has elements called Renderables. Boxes with borders, plain text, code with tree-sitter backed highlighting and other primitives. Organised in a tree structure resembling somewhat of a DOM. Approaching a table naively, given the primitives are there, one would think to just stack box and text elements the right way in a flex-box layout to visually represent a table. Boxes support borders. Problem solved. This is what an LLM would one-shot in a working state, given OpenTUI's API surface. Ignoring the fact that just using box local borders don't handle border conjunctions properly. Benchmarking something like that quickly shows that instantiating an average table takes >70ms and incremental updates become expensive. Hugely due to yoga-layout via wasm having a painful price on yoga API calls. The whole ordeal becomes memory hungry, because a Text element handles more than just plain text. A simple 4x6 table needs a Box and Text per cell, ending up with 48 heavy nodes that yoga must lay out. "But that's just OpenTUI being slow" - you might say. Yes, but no. Yoga should be integrated in the zig native binary core of OpenTUI. It is on the roadmap to do so, which will speed up render passes by 2-5x. Yoga-layout has an open PR to support CSS Grids, which would greatly ease building something like a table. We will use that for fully laid out tables when it gets there. Below the typescript core level Renderables, there are lower level primitives like TextBuffers and TextBufferViews, bound via FFI and completely handled in Zig. I was stuck expecting a table primitive to handle a full layout like a table in the browser does. For Markdown all we need is a text-only table. So we had to come up with a better idea, something that is feasible now. A table layout is pretty straight forward. No need to have yoga deal with that. Using TextBufferViews for cells directly gives lower level control and eliminates some overhead that Boxes and Text renderables have. A simple native method to draw a grid with proper conjunctions is a nice library method. It will surely be used for other cases, so that's what we added. Using this simplified approach we were able to bring down initial instantiation to <1ms, more than 70x improvement. With a far smaller memory footprint. Given all the low level primitives are known and implementing a text-only table like this is possible, Codex was of great help to carve out the PoC, setup the benchmarks and tests. That's only a fraction of what was needed though. The table needs options to span the full available width, render different border styles, show/hide borders, padding, selection etc. So many iterations later OpenTUI now has a text-only, performant and relatively cheap TextTable that we can leverage to render Markdown tables in a streaming/incremental manner. Efficiently and properly.

kmdr

208,295 次观看 • 6 个月前

Why did so many languages copy async/await from C#? Anders Hejlsberg(Anders Hejlsberg) - creator of TypeScript, C# & Turbo Pascal - on what they got right with the design: #1 - async/await was designed to solve a common problem in the event-loop model: "A lot of languages are built around cooperative multitasking in the sense that they have an event loop that sits and dispatches events. Then you handle the event and then you yield back to the event handler loop. And it all runs in a single thread cooperatively. The problem with that is if you then want to do some long running work: how do I stop in the middle of this piece of long running work and yield back to the event loop cooperatively? And then when my result is ready, I can come back and continue executing here." #2 - state machines are the solution, but hard to build: "Well, in order to do that in an inverted architecture like that, you have to build a state machine. State machines are notoriously hard for people to implement because you've got to move all of your state off of the stack into objects. And then you have this big case statement that envelopes your entire logic. It's a nightmare to figure out. But, the transformation from serially executing code into a state machine, its continuation-passing-style translation is actually one that you can do in a machine-based fashion." #3 - compilers are good at writing state machines: "You can have the compiler write the state machine if you introduce syntax that allows you to indicate where you want to yield. And that's what await is. Await is basically saying, I want to yield here, and I want to yield this promise, and then when the promise completes, I want you to come back here and continue executing. Then the compiler writes a state machine around it and it actually turns it into this big switch statement and moves all of the state that survives across the await into something that's heap allocated. So it can be brought back. And doing all of that work is something that compilers are great at. And so that was sort of the idea that we have this new style of programming where we're using promises or the equivalent of promises and the ability to yield and then we have callbacks. But trying to write your program in that style, that's also what JavaScript suffered from a lot. It's like all this callback style stuff. With Async and Await, you get the illusion that you're just writing normal sequential code and then the compiler does the painful transformation for you. That turns out to be really useful."

The Pragmatic Engineer

13,258 次观看 • 2 个月前

This is probably the most complex workflow I’ve ever built, only with open-source tools. It took my 4 days. It takes four inputs: author, title, and style; and generates a full visual animated story in one click in ComfyUI . I worked on it for four days. There are still some bugs, but here’s the first preview. Here’s a quick breakdown: - The four inputs are sent to LLMs with precise instructions to generate: first, prompts for images and image modifications; second, prompts for animations; third, prompts for generating music. - All voices are generated from the text and timed precisely, as they determine the length of each animation segment. - The first image and video are generated to serve as the title, but also as the guide for all other images created for the video. - Titles and subtitles are also added automatically in Comfy. - I also developed a lot of custom nodes for minor frame calculations, mostly to match audio and video. - The full system is a large loop that, for each line of text, generates an image and then a video from that image. The loop was the hardest part to build in this workflow, so it can process either a 20-second video or a 2-minute video with the same input. - There are multiple combinations of LLMs that try to understand the text in the best way to provide the best prompts for images and video. - The final video is assembled entirely within ComfyUI. - The music is generated based on the LLM output and matches the exact timing of the full animation. - Done! For reference, this workflow uses a lot of models and only works on an RTX 6000 Pro with plenty of RAM. My goal is not to replace humans, as I’ll try to explain later, this workflow is highly controlled and can be adapted or reworked at any point by real artists! My aim was to create a tool that can animate text in one go, allowing the AI some freedom while keeping a strict flow. I don’t know yet how I’ll share this workflow with people, I still need to polish it properly, but maybe through Patreon. Anyway, I hope you enjoy my research, and let’s always keep pushing further! :)

Lovis Odin

58,841 次观看 • 11 个月前

Assumptions about the new "Can More" ChatGPT tool were right - ChatGPT is introducing own take on Claude Artifacts - code & document writing tools with persisted text documents, history revisions (restore previous version), edits and comments (probably used to apply suggested edits) New document symbol in the top navigation shows how many documents you have and allows you to open a resizable canvas to edit them in split view - your ChatGPT conversation on the left side and canvas on the right side, but the code/documents can also be accessed in fullscreen view The canvas is built using ProseMirror (open source WYSIWYM editor) and has an inline action to "Ask ChatGPT" (explain or make edits) for your document and code plus document formatting tools (like bold, italic, font style, etc.) But in addition to that, there are also special action shortcuts for documents and code, with an interesting decision to use sliders for the selection of the desired outcome For Documents - Suggest edits ("How can I improve this. Leave as few comments as possible, but add a few more comments if the text is long. DO NOT leave more than 5 comments. You can reply that you added comments and suggestions to help improve the writing quality, but do not mention the prompt.") - Add emojis ("Replace as many words as possible with emojis.") - Add final polish ("Add some final polish to the text. If relevant, add a large title or any section titles. Check grammar and mechanics, make sure everything is consistent and reads well. You can reply that you added some final polish and checked for grammar, but do not mention the prompt.") - Reading level (Graduate School - "Rewrite this text at the reading level of a doctoral writer in this subject. You may reply that you adjusted the text to reflect a graduate school reading level, but do not mention the prompt", College - "Rewrite this text at the reading level of a college student majoring in this subject", High School - "Rewrite this text at the reading level of a high school student who has taken a couple of classes in this subject.", Keep current reading level, Middle School - "Rewrite this text at the reading level of a middle schooler.", Kindergarten - "Rewrite this text at the reading level of a kindergartener.") - Adjust the length (Longest - "Make this text 75% longer.", Longer - "Make this text 50% longer.", Keep current length, Shorter - "Make this text 50% shorter.", Shortest - "Make this text 75% shorter.") For Code - Code review ("Search for bugs and opportunities to improve the code—for example, ways that performance or code structure could be improved. Leave as few comments as possible, but add more comments if the text is long. DO NOT leave more than 5 comments. You may reply that you reviewed the code and left suggestions to improve the coding quality, but do not mention the prompt.") - Add comments ("Add inline code comments to explain the code, especially parts that are more complex. Make sure to rewrite all the code. You may reply that you added inline comments, but do not mention the prompt.") - Add logs ("Insert logs/print statements in the code that will help debug its behavior. Do not make any other changes to the code.") - Fix bugs ("Find any bugs and rewrite all the code to fix the bugs. Do not leave comments. If there are no bugs, reply that you reviewed the code and found no bugs.") - Port to a language ("Port to a language. Create a new document that rewrites the code in ..." - PHP, C++, Python, Keep current code. No changes will be made, JavaScript, TypeScript, Java) - Suggest edits ("How can I improve this. Leave as few comments as possible, but add a few more comments if the text is long. DO NOT leave more than 5 comments. You can reply that you added comments and suggestions to help improve the writing quality, but do not mention the prompt.")

Tibor Blaho

136,084 次观看 • 1 年前

AI is changing the software engineering craft. Anders Hejlsberg (Anders Hejlsberg) - creator of C#, TypeScript and industry legend - on why code review needs to get more enjoyable in response: #1 - AI is shifting the craft from writing code, to reviewing code: "In a sense, we're all turning into project managers. We can have an army of junior programmers, called agents, that will just spit out reams of code but someone's got to have the big picture and review all of that. And so, increasingly, our craft is going from one of writing the code, to one of reviewing the code and building the architecture of the code and overseeing the work. It's a different kind of craft. It's a different kind of enjoyment. I've always liked writing the code. To me that was the fulfilling part, seeing it work. In a way, AI robs a little bit of that, because I am less interested in reviewing code." #2 - The code review experience should be improved: "I think we could also make the process of reviewing code much more interesting than it is today. I mean, today, you see a list of diffs in alphabetical order and now it's up to you to make heads or tails of it. There are more pedagogical ways of presenting that. And you could have commentary generated by the AI that tells you what the changes are and whatever, and then tries to guide you along. So that symbiotic relationship, I think we need to work on that more and to keep the enjoyment in there."

The Pragmatic Engineer

39,073 次观看 • 3 个月前

"Today, we can see the futility of the political route and the bankruptcy of the political system writ large." "Scotland is annexed, a dominion under the English crown. And it is the English crown, not the fictional UK crown, that we're all told about. "Not a partner, not of any kind. In fact, the whole partnership story is a concoction fashioned to convince the world that Scots are part of a joint state and to disguise the fact that Scotland is, in reality, nothing other than a colony. "It's not a partner in a marriage, but a kidnap victim. And you do not escape from a kidnapper by filing for divorce from a fictional marriage. "Second, even if it were possible to break free through a referendum or an election, or to propose any other route that would be approved as lawful by the kidnapping state, the political system in Scotland would not guarantee any of the things that sing in our bones as Scots. We dream of justice, compassion, equality, prosperity and care for all without preference or privilege. "But what we have is an english system of concentrated power and privilege, which those Scots who enjoy it will not give up easily. Where the government sits in authority over the people, and the people surrender their hopes, their ambitions and their human and civil rights to the whims of their elected representatives. Where all that we hold dear, all that we depend on for decency, fairness and security, depends on the honor, honesty and good faith of those elected. "Because once it is elected, we have no means of curbing, challenging or preventing anything a government may choose to do, whether or not that's lawful, just, rational or humane. "Today, we can see the futility of the political route and the bankruptcy of the political system writ large. Our helplessness in the face of the state marching side by side with destitution and despair. "This is why liberation was born. Because the route to the Scotland we dream of neither can nor will come through the present political system, but through the restoration of the political, territorial and judicial rights, the constitutional provisions that belong to the people of this nation, in law and in justice, even under the terms of this fraudulent union, and certainly under international law. "They mean that we, the people, are sovereign, in fact, not in sound bite, the ultimate authority of this nation of Scotland. "They mean that the interests of the people, collectively known as the common good, are not only the primary purpose of government, but the only condition on which it's permitted to exist. "They mean that we are entitled to overrule, remove or replace a government that violates that condition of its existence, that fails to honour its promises, to consult the people or to act according to their wishes and welfare. "And in the modern world, that means the right to all the mechanisms that we see in a nation like Switzerland, which will make that sovereign power a reality. "All this is part of what we call decolonization, true Scottish self determination. And it is the soul and purpose of liberation Scotland. "Impossible? Other nations have trodden the path to decolonisation. Not one has bowed to the kidnapper and asked for permission. "We know now that we can gain our independence as a state by first gaining independence from a colonizing power. So that instead of waiting to reclaim real sovereignty of the people after independence, we gain our independence by first reclaiming our sovereign Scottish rights. "The next step on this road is establishing the committee of the Scottish Liberation Movement. This committee will be elected from the membership of Liberation and will operate under a ratified constitution. "And it will register Scotland's Liberation Movement with the United Nations." Sara Salyers @TheScotCongress Iain.lawson27 Salvo.Scot Colette Walker

ScotNews

20,333 次观看 • 2 年前

60 years ago, Ronald Reagan gave Americans a warning that has stood the test of time. This is from Reagan's "Time for Choosing" speech: "If we lose freedom here, there is no place to escape to. This is the last stand on Earth. And this idea that government is beholden to the people, that it has no other source of power except to sovereign people, is still the newest and most unique idea in all the long history of man's relation to man. This is the issue of this election. Whether we believe in our capacity for self-government or whether we abandon the American revolution and confess that a little intellectual elite in a far-distant capital can plan our lives for us better than we can plan them ourselves." "You and I are told increasingly that we have to choose between a left or right, but I would like to suggest that there is no such thing as a left or right. There is only an up or down--up to a man's age-old dream, the ultimate in individual freedom consistent with law and order--or down to the ant heap totalitarianism, and regardless of their sincerity, their humanitarian motives, those who would trade our freedom for security have embarked on this downward course." ... "Well, I for one resent it when a representative of the people refers to you and me--the free man and woman of this country--as 'the masses.' This is a term we haven't applied to ourselves in America. But beyond that, 'the full power of centralized government'--this was the very thing the Founding Fathers sought to minimize. They knew that governments don't control things. A government can't control the economy without controlling people. And they know when a government sets out to do that, it must use force and coercion to achieve its purpose. They also knew, those Founding Fathers, that outside of its legitimate functions, government does nothing as well or as economically as the private sector of the economy." ... "They say we are always 'against' things, never 'for' anything. Well, the trouble with our liberal friends is not that they are ignorant, but that they know so much that isn't so." ... "Mr. Democrat himself, Al Smith, the great American, came before the American people and charged that the leadership of his party was taking the part of Jefferson, Jackson, and Cleveland down the road under the banners of Marx, Lenin, and Stalin." ... "Our natural, inalienable rights are now considered to be a dispensation of government, and freedom has never been so fragile, so close to slipping from our grasp as it is at this moment." ... "You and I know and do not believe that life is so dear and peace so sweet as to be purchased at the price of chains and slavery. If nothing in life is worth dying for, when did this begin--just in the face of this enemy? Or should Moses have told the children of Israel to live in slavery under the pharaohs? Should Christ have refused the cross? Should the patriots at Concord Bridge have thrown down their guns and refused to fire the shot heard 'round the world? The martyrs of history were not fools, and our honored dead who gave their lives to stop the advance of the Nazis didn't die in vain. Where, then, is the road to peace? Well, it's a simple answer after all." "You and I have the courage to say to our enemies, 'There is a price we will not pay.' There is a point beyond which they must not advance." ... "You and I have a rendezvous with destiny. We will preserve for our children this, the last best hope of man on Earth, or we will sentence them to take the last step into a thousand years of darkness." Doesn't it feel like Reagan is speaking to us TODAY?

Kyle Becker

104,422 次观看 • 2 年前

Peter Thiel gave a speech in a Hilton in 2010 that holds the keys to unlocking the source of many of America’s most severe problems. Key quote: “The task in this world… where politics has become so broken… is to find a way to escape from it. It’s not a way to fix it.” Palantir is currently tightening its grip around all of our data. Elon Musk is diverting untold billions into a Mars fantasy. All of the anarchist, antidemocratic ideas of the PayPal Mafia and the “Dark Enlightenment”—to use technology as an “escape”—were already well in process 15 years ago. —The internet as “alternate virtual reality” so you don’t have to “constantly convince people.” This is why he funded Satoshi (Bitcoin), MAGA3X (Pizzagate, Q), and pushed Musk to buy Twitter —PayPal (now blockchain/crypto/BTC) was to “overturn the monetary system” —“Escape” now more often referred to as “exit” —“Autonomous countries” now known as the “network state” JD Vance is a full member of the cult of the broligarchs. Unfortunately, this has been a very thorough coup and they have backup. It’s worth really absorbing what the living Antichrist, Peter Thiel, is saying here: “I don't think despair is the only answer. And I don't think, and it's because I don't think politics is the only way to go. And my thinking on this, you know, started to take a turn towards a more optimistic perspective in the mid to late '90s when I got involved in the tech boom in Silicon Valley. I ended up being the co-founder of a company called PayPal where -- and the initial founding vision was that we were going to use technology to change the whole world and basically overturn on the monetary system of the world. And, you know, we can debate on how much it succeeded or how little it succeeded. And there were parts of it that I think have worked, and parts of it were, you know, the jury is still out. But the basic idea was that we could never win an election on getting certain things. Because we were in such a small minority. But maybe you could actually unilaterally change the world without having to constantly convince people and beg people and plead with people who are never going to agree with you through a technological means. And this is where I think technology is this incredible alternative to politics. And, you know, there are a number of different technologies we can outline, but the task in this world where politics has become so broken and so dysfunctional is to find a way to escape from it. It's not a way to fix it. It is a way to escape. And there are, you know, a number of different options. I think the promising one of the 1990s and this last decade has been to escape onto the Internet and to sort of create an alternate virtual reality. Questions, of course, is still how does it intersect with the real world? There are, I think, escaping to outer space is a promise, although I think the space technology is not quite there. So I think that's sort of for the second half of the 21st century. I think we can try to, you know, create autonomous countries on oceans, underwater, all sorts of other spaces. But I think technology is the vehicle for how we should be looking to escape and move beyond politics as we find it today.”

Jim Stewartson, Decelerationist 🇨🇦🇺🇦🇺🇸

156,800 次观看 • 1 年前

🚨Relief effort update - yes it is a long post, but please read. I want to start off by explaining how strong the Appalachia people are, because the scale of devastation is truly bizarre. We have had team members on the ground reach some of the most rural places that havent seen a single "agency" since this has all happened. Our crews have reached people whose homes no longer exist, who have lost loved ones and who have nothing but the clothes on their backs, people completely cut off from the outside world. That being said, the common theme through every one of these interactions, is that the citizens who live in these communities still have their heads held high and have rolled up their sleeves and begun the process of trying to clean the FEET thick layer of mud covering everything to see what is even left to salvage. These people are "mountain tough" and their resolve is unbreakable, but they need our help, AS A COUNTRY. One of our forward crew member on the ground, providing updates on road conditions into towns that are cut off and need help, has hiked into several places that have been neglected. The pictures i include in this post are of the area in and surrounding the Green Mountain area. The level of destruction depicted in the photos and videos do not do the scope of the damage justice, but you can tell from the imagery, that this situation is not only challenging, but dire. Critical infrastructure is completely decimated in most of these places and will take months if not longer to repair or rebuild. We have coordinated a group of Doctors that will be bringing life saving medical supplies, well above and beyond basic first aid needs. They will be traveling by helicopter to areas that are inaccessible by vehicle to give that life saving aid. We have been able to get supplies into the remote town of Marshall, where their homes have been either damaged by the flood waters to the point of being unlivable or just completely deleted from the earth. Talking with these people, they have concerns for the future, and not just the coming days or weeks, but in the near future as winter creeps into the area. As that happens, the challenges they are presented with become exponentially more difficult and so much more dire. From the difficulty of building temporary housing to the logistics and availability of supplies to rebuild, the geographical location of this devastation is creating more problems to overcome than what most would associate with "hurricane damage". As the country descends on Asheville, supplies and help has become bountiful there and our operations will begin to shift further into the mountains to help those that have not had help. Supply needs are changing rapidly, and as they do we are having to pivot on what we are procuring to bring into the affected areas. I call on the people of this country to help us help these people. They have been largely neglected and are deserving of our compassion and help in any way that we can deliver it. I can't speak for the government and what they are or aren't doing, but i can speak for our efforts. We are just everyday citizens, husbands, wives, sons and daughters, standing together to help those in need. We will not stop, until our mission is complete.

Ryan Tyre 🇺🇸

338,266 次观看 • 1 年前

** MEGA Parodius Scaling Effects Part 1 ** One of the big challenges with the Parodius Megadrive port is Stage 8's boss - The puffer-fish *Pooyan* with his full screen scaling effect. The goal is to be very close to the arcade (with extras on top ) so I thought lets tackle it head on to see how close we can get. I was also keen to jump into another scaling code rabit hole haha. Pyron pulled out all the stops and got me the source frames and reworked the BG tiles for this test - a big thankyou to him , Vector Orbitex is busy working on Stage 2 tracks so the team is working hard all round on this port. The MD has no sprite / background GFX scaling hardware , however the VDPs Vertical scroll can be updated per scanline to help vertical scaling on backgrounds, but there is a cpu cost to manage all the interupts so thats not free either. With the Horizontal scaling there is no help at all , apart from a semi-friendly packed pixel format for the cpu to work with, its not quite chunky format but better than planar format still for scaling. So its falls back to the 68k CPU to do all of the horizontal expansion which is the largest cpu cost. Basically drawing strips of either 1x, 2x, 3x or 4x wide columns at speed. So we are one week into this Boss's routine and you can see from the below video the horizontal scaling is implented ( vertical will be in the next update ) . We are scaling from 1x to 4x in the video below in 74 steps for testing . The column distributions are always a bit painfull to do - thankfully they are all worked out now. This is the third scaler I have built and the goal was with this one to make it really flexible for use in other projects also, sometimes when you optimise something to the last degree all the flexibility gets taken out of it. Currenty scaling at 12-25 FPS update here, I had some rules against some optimisations which I would use and some I wouldn't , thankfully we are a bit ahead of the Arcades animation frame rate here still and I may yet find optimisations that fit within the scope. We have vertical scaling and sprite spikes to add yet so Im hoping i can find a few more optimisations to offset things when they are implemented also. In a scale frame update we are processing close to 42000 pixels in ram before using DMA to send to VRAM . Using a 41x16 (656 tile scale buffer) - single buffered for now due to its size in VRAM. So thats nearly 21k in tiles ! I had to re-organise ram a bit to support a buffer of that size for the stage. The scaling function is written in 68k assembly , with a little C code handling the Vertical interupt code ( so the game logic can actually run & DMA updates etc ) . The DMA routines are in assembly also and customised for large chunk size ( big blocks of tiles ) which suits the scaler. I had some race conditions to sort out where the cpu was faster than DMA (sending tiles from RAM to VRAM ) and in some cases where it wasn't so it had to be balanced. We may be able to add more detail into the top and bottom of the background yet but its low priority for now until all the other bits are in !! #SGDK #SegaMegadrive #Genesis #Parodius

Shannon Birt

25,545 次观看 • 7 个月前

I've become a missionary with one message. Every time I meet a young person, the same words: have children, get married, build a family. I did not decide on this calling. It overtook me. And it overtook me for a single reason. I had no idea. I genuinely did not understand how much joy, how much meaning, how much sheer beauty pours out of a child until I was holding one of my own and felt the floor of my life drop into something deeper than I knew was there. I grew up white, affluent, secular, comfortable, and insulated. That world does not put babies in front of you. None of my friends were starting families. Out of my whole circle, almost no one has a big one. We were not formed by the presence of children. We were formed by their absence, by the strange quiet of homes built for two careers and no cradle. And a person believes what his world shows him. So we believed. What we believed was a lie. It is a lie with an author, and that the author is the enemy of joy himself. It is the gospel of the world, and its commandment is wait. Wait until you are older. Wait until the career is built and the savings are stacked and the twenties are properly spent. Enjoy your freedom. You are not ready. It does not arrive sounding like temptation. It arrives sounding like wisdom, like prudence, like the responsible thing, and that is exactly why it works. The most effective lies are the ones that wear the face of virtue. And the maddening thing is that it collapses from every angle at once. It is not rooted in biology, because the body is made for this work precisely in the years we are told to postpone it. The flesh keeps a calendar the culture pretends not to see. And it is not rooted in theology either. You will not find this deferral anywhere in the Christian imagination, in any of the fathers, in any of the scriptures. So choose whatever lens you like. Take the cold secular measure or the ancient sacred one. By either light the counsel is rotten. It is bad for the body and bad for the soul and bad for the society downstream of both. This is why I have come to see it as one of the central tragedies of my generation. Every age carries its own wound. The Great Depression was a depression of bread, a scarcity in the world of matter, hunger you could measure. Ours is a depression of a different order. It is a famine of the spirit in the middle of abundance. We have more than any people who ever lived and we are starving in a way our ancestors would not recognize, because the thing we are refusing cannot be bought and cannot be banked. The ones most made to give and receive this love are quietly declining it. They are walking away from the one inheritance that actually compounds, and the cruelest part is that they do not feel the loss as loss. You cannot grieve what you were taught not to want. That is the deepest cut of it. The lie does not only steal the thing. It steals the capacity to know the thing was stolen. A man can spend his whole life on the far side of a door he never knew was a door, mistaking the wall for the edge of the world. Because this beauty is not ordinary beauty. It is not the pleasure of a good meal or a clear morning. It is participation in something that comes down from above, the same generative love that spoke everything out of nothing and called it good. To make a person, to be undone and remade by loving that person more than your own life, is to be drawn for a moment inside the very act that holds the cosmos together. A child does not merely add to your life. A child reorders the soul. It teaches you what you are by asking everything of you, and you discover, kneeling there exhausted at three in the morning, that you had a capacity for self gift you never suspected, a depth in yourself you had no other way to reach. In the Gospel of John, on the last night, Jesus prays, these things I have spoken to you that my joy may be in you, and that your joy may be complete. And I have come to understand why family is the road into that fullness, why it is not one path among many but the one most fitted to the shape of the promise. Consider who is praying. Christ does not come to us as a lone figure dropped out of the sky. He comes out of a family older than the world, the eternal communion of Father and Son, the love between them so total and so alive that theologians dared to call it a third person. Before there was anything, there was a family. The deepest fact about reality is not a force or a law or a void. It is a household. It is begetting and being begotten, giving and receiving, a Father who is only a Father because there is a Son. So when Jesus speaks of joy made complete, he is not pointing away from family toward something higher. He is pointing toward the very thing he came from, the life he has known from eternity and came to share. His joy is the joy of belonging utterly to a Father and pouring himself out for those he loves. When you marry, when you bring a child into the world, when you wear yourself down in the small unseen labors of a home, you are not stepping outside that divine life. You are stepping into a small image of it. Your family is a created echo of an uncreated one. The love you give your child rhymes with the love the Father has for the Son. The exhaustion, the tenderness, the way a parent would tear the sky open to protect a sleeping infant, all of it is the heavens pressed faintly into flesh, the eternal household leaving its fingerprint on yours. That is why the joy is not merely added to family but completed in it. We were made in the image of a God who is, at his very root, relation and gift and generation. To found a family is to do the most Godlike thing a creature can do, to participate from below in the begetting that God does from all eternity. Your home becomes a window. Through it, dimly and imperfectly, you glimpse the country you came from and are going to. And now a word for the young people reading this, the ones who do not yet have children. I want to tell you what it is like from where I stand. When I am out somewhere, a restaurant, anywhere, and a large family comes through the door, the noise and the chaos and the small bodies of them, something happens in me on two levels at once. The first is joy. A pure gladness at the sight, the way you feel watching something good and alive. But underneath it, almost in the same instant, a sadness reaches up and takes hold of my heart. Because I know now, at my age, after my own years of waiting, that I will never have that. I will never know the particular fruit of a family that large, the fullness of that table, the weight of all those lives gathered under one roof. The door to it has quietly closed, and I felt it close. And I am telling you plainly, because I love you and have no reason to lie to you: you will feel this too. You will. The day will come when you see what you passed up, and you will recognize the ache for what it is, and it will be too late to answer it. So please, learn from a man who got it wrong. Let my regret be worth something by becoming your wisdom. Do not wait yourself into a grief you cannot undo. Choose now, while the door is open, so that you may step into a joy that does not end.

Kirk Rollins

78,104 次观看 • 3 个月前