from cache

Here are some quick takeaways of some books I read this year.

Million Dollar Weekend – Noah Hagan

  • Nice lessons: Always ask for what you want. Quantity > Quality. Visualize. A nice book to be put into a productive gear.

Sapiens – Yuval Noah Harari

  • Sample theses: Physical communities are being replaced by virtual communities. Natural religions (nationalism, capitalism, moral frameworks, etc.) are replacing traditional deities. Real peace is the implausibility of war.
  • In the last chapter, Harari describes Sapiens as god-like, but also perpetually dissatisfied and irresponsible. It’s less of a history textbook and more of a book using history to justify commentary on human behavior.

Zero to One – Peter Theil

  • This is a book for the contrarian. What important truth do very few people agree with you on? Some main ideas are (1) Competition is bad. (2) Start small and don’t disrupt. (3) The power law – hedge in winners.
  • I have reread this book once every few years. I can think about recent changes (AI, tech companies, competition, etc.) within the context of some simple ideas provided by this book.

The Best American Essays 2023 – Vivian Gornick

  • This is basically an anthology of eclectic voices (e.g. a doctor treating an unusually unstable drug addict, a young adult in maximum security prison turned writer due to solitude, a girl finding out her mom is gay at the very end of her mom’s life through old photos, etc.)
 
Read more...

from Build stuff; Break stuff; Have fun!

Creating Database and Tables! This one is a bit “harder” because I have to plan the data model correctly. For the auth, I can reuse the Supabase auth tables, so the focus will be on the tables.

For the application I need 3 tables and a many-to-many table. For now this is enough to get the app going.

After creating the tables in the Supabase UI, I used the Supabase CLI to generate the types and applied them. Additionally, I added some API functions to be more prepared for the next day.

That was Day 04. ✅


62 of #100DaysToOffload
#log #AdventOfProgress
Thoughts?

 
Weiterlesen... Discuss...

from Douglas Vandergraph

There is a moment in every believer’s life when God stops speaking to us where we are… and starts calling us into a place we didn’t expect. Scripture often names that place “the wilderness.” It's the quiet space between who you were and who you're becoming. It’s the open land where God strips away the noise, the assumptions, the masks, and every version of yourself that can’t walk into your future.

Matthew 3 is a chapter built entirely on this idea.

Not the flashy place. Not the powerful place. Not the comfortable place.

But the right place—the place where God prepares you.

And nowhere is that clearer than in the figure of John the Baptist, a man who lived a life so radically different, so unapologetically obedient, that he became the bridge between the old world and the arrival of Jesus Himself.

Today, we walk through this chapter not just as observers but as participants—because Matthew 3 isn’t only history. It is the blueprint for transformation, purification, calling, identity, and surrender.

And if you read it slowly—if you let it breathe in your chest—you’ll discover something astonishing

Jesus did not begin His ministry in the spotlight. He began it in the wilderness.

So today, let’s step into that wilderness with Him.


THE WILDERNESS IS WHERE GOD CALLS YOU WHEN THE WORLD CAN NO LONGER SHAPE YOU

Matthew 3 opens with a shocking detail: John the Baptist is preaching far away from the temples, the cities, and the centers of influence.

He wasn’t in Jerusalem. He wasn’t in the courts of power. He wasn’t among the elite.

He was in the wilderness—yet Israel came to him.

They left their routines, their traditions, their comfort, and their definitions of “religion” to find a man who wasn’t even trying to be found.

Because when the Spirit of God rests upon someone, people hunger for what they carry.

John didn’t need a stage. He didn’t need approval. He didn’t need status.

He needed obedience.

And when obedience becomes your oxygen, God becomes your platform.

There is a holy discomfort in this truth: God often prepares His vessels far from where people expect greatness to be born. The wilderness is not the punishment; it is the classroom of destiny.

Many people fear the wilderness because it feels like isolation. But heaven sees it as concentration.

God calls you there to cut away what you’ve outgrown, to awaken the voice you forgot you had, and to introduce you to the version of yourself that He always saw—even when you didn’t.

And when God calls you into the wilderness… it is never to leave you there. It is to meet you there.


JOHN'S MESSAGE WAS SIMPLE—BUT IT SHATTERED THE WORLD

“Repent, for the kingdom of heaven is at hand.”

Repent—not as a sentence of shame, but as an invitation to return to who you were meant to be.

The word “repent” doesn’t mean grovel. It doesn’t mean self-loathing. It doesn’t mean drowning in regret.

It means:

Turn around. Come back home. Change direction. Walk toward the light that is already pursuing you.

This message wasn’t cruel. It wasn’t condemning. It wasn’t meant to crush the spirit. It was a call to awaken the spirit.

John’s voice cracked open a nation because he spoke the truth people had been starving for:

“You are not stuck where you are. God is closer than you think. Your story can change.”

That message shook the religious establishment—not because John was wrong, but because he was right.


THE PEOPLE CAME BECAUSE THEY WANTED TRANSFORMATION, NOT RELIGIOUS RITUAL

Israel didn’t walk miles into the wilderness because they wanted better rituals.

They weren’t looking for tradition. They weren’t trying to check a box. They weren’t trying to impress anybody.

They wanted change.

They lined up at the Jordan River because something inside them whispered:

“There’s more. There has to be more. My soul knows it.”

And the river became a symbol of cleansing—not just from sin, but from heaviness, old identity, and spiritual exhaustion.

What a picture for us today.

People aren’t craving better productions in church. They aren’t craving louder sermons. They aren’t craving more complicated theology.

They crave what the crowds craved at the Jordan:

Authenticity. Healing. Identity. A fresh start.

This is why your life, your testimony, and your voice matter more than you think. When people see someone authentically transformed, they want to know the God responsible for the transformation.

You don’t need perfection to inspire others—just honesty.


THE RELIGIOUS LEADERS MISSED THE POINT—AND MANY STILL DO

The Pharisees and Sadducees showed up, too—not to repent, but to inspect.

They didn’t come to change. They came to critique.

And John confronts them with fire:

“Bear fruit in keeping with repentance.”

In other words:

“You want the reputation of righteousness without the transformation of righteousness.”

Religion without repentance is pride. Repentance without fruit is performance. Fruit without Jesus is impossible.

John reminds them—and us—that heritage doesn’t save you. Titles don’t save you. Appearances don’t save you.

God is not impressed by spiritual posturing.

He is moved by surrender.

This moment is a warning for every generation:

You can be near the things of God and miss the heart of God. You can know Scripture but not know the Savior. You can talk about holiness but never taste freedom.

Transformation begins with humility. Humility begins with repentance. Repentance begins with invitation.

And Jesus always answers an invitation.


THE MESSIAH ARRIVES—AND EVERYTHING CHANGES

The most staggering moment of Matthew 3 arrives quietly:

“Then Jesus came from Galilee to the Jordan to John, to be baptized by him.”

Pause and feel the weight of that.

Jesus—the sinless One. Jesus—the spotless Lamb. Jesus—the Son of the Living God.

He steps into the water and asks John to baptize Him.

Not because He needed cleansing—but because we did.

Jesus enters the waters of repentance so that one day we could enter the waters of redemption.

He joins humanity in the act of surrender so humanity can join Him in the victory of resurrection.

This is the humility of God on display.

John is stunned. He protests. He tries to reverse the roles.

But Jesus answers with one of the most important phrases in Scripture:

“Let it be so now, for thus it is fitting for us to fulfill all righteousness.”

Jesus isn’t just being baptized. He is stepping into His mission. He is identifying with the broken, the weary, the seeking.

He is showing us that the path to glory begins with obedience, not applause.


THE HEAVENS OPEN—AND GOD SPEAKS OVER HIS SON

As Jesus rises from the water, the heavens tear open.

The Spirit descends like a dove. The Father’s voice breaks across the sky.

And the most beautiful affirmation in human history is spoken:

“This is My beloved Son, in whom I am well pleased.”

Before Jesus performs a miracle. Before He teaches a sermon. Before He heals the sick. Before He walks on water. Before He goes to the cross.

God declares:

“You are My beloved. I am already pleased with You.”

Identity precedes assignment. Love precedes labor. Belonging precedes purpose.

And God speaks the same truth over you.

You are not working for God’s love. You are working from it.

You are not earning worth. You were born with it.

God’s pleasure is not the reward for performance—it is the starting point for transformation.


MATTHEW 3 IS YOUR INVITATION TO STEP INTO YOUR OWN TRANSFORMATION

This chapter invites you to:

Leave the noise and step into your wilderness. Let God carve clarity out of confusion. Let repentance become the doorway to renewal. Let the river wash off what life has tried to attach to you. Let Jesus meet you at the waterline of surrender. Let the Spirit rest upon you. Let the Father speak identity over you again.

Because the moment you receive this truth—not just read it, but receive it—your life begins to change:

You stop living for approval and start living from identity. You stop dragging your past into your future. You stop apologizing for your calling. You stop resisting transformation and begin walking in it.

And just like Jesus, you rise from those waters ready for what comes next.


FINAL REFLECTION

Matthew 3 is not a call to religion. It is a call to rebirth.

Every chapter of your life changes—when you finally let God change you.

The wilderness is preparation. The river is cleansing. The baptism is surrender. The opened heavens are affirmation.

And your future? It begins the moment you believe God is already pleased to call you His own.


**Watch Douglas Vandergraph’s inspiring faith-based videos on YouTube **

Support the ministry by buying Douglas a coffee

Your friend,

Douglas Vandergraph

#faith #Jesus #Matthew3 #ChristianInspiration #Hope #Encouragement #SpiritualGrowth

 
Read more...

from The happy place

The silver full moon shines even through the clouds; illuminating them on the brownish blue night sky.

!!

And the frozen slush of molten dirty snow is blank and slippery — against the sky, however, it looks like it glimmers with gold.

And in the car it’s warm. And the dogs are warm.

And I have my family with me.

My whole world in this dark warm car.

Isn’t that something?

#poetry

 
Läs mer... Discuss...

from Douglas Vandergraph

Anxiety is something nearly everyone battles, but almost no one talks about honestly. You can see someone smiling, laughing, posting pictures, raising kids, running a business, serving at church, and they’ll look completely fine on the outside—while inside their mind feels like it’s spinning at a hundred miles an hour. The world sees composure. God sees a child bracing for impact from storms they never asked for.

Anxiety doesn’t show up politely. It doesn’t knock on the door and wait to be invited. It slides in unnoticed. It sits in your chest. It echoes in your mind. It interrupts sleep. It magnifies small things into disasters and turns harmless thoughts into heavy ones. And it has a way of convincing you that you’re the only person in the room feeling that way—which is the biggest lie of them all.

Because one of the greatest truths you will ever learn is this:

You can love God deeply and still battle anxiety. You can be a believer and still feel overwhelmed. You can walk with Christ and still wake up afraid.

Feeling anxiety does not mean you’re weak. It means you’re alive. It means you’re human. It means your heart cares so much that it trembles when uncertainty comes close.

But here’s the part anxiety never tells you:

You were never created to carry it by yourself.

The Quiet War No One Sees

There is a reason anxiety feels heavier when you’re alone. The mind likes to replay the worst possibilities when nobody is there to interrupt it. Anxiety loves silence. It loves the late hours. It loves the moments when your guard is down and you feel too tired to fight.

And because you feel it deeply, you start questioning yourself:

“Why can’t I calm down?” “Why does my heart race for no reason?” “Why do I always expect something to go wrong?” “Why does peace feel like something other people get to have?”

Then the guilt piles on:

“I must not trust God enough.” “I must not be strong spiritually.” “I should be able to handle this.” “I pray… so why do I still feel like this?”

Let me speak freedom into you right now:

You can have a strong faith and still fight a strong battle.

Faith is not the absence of anxiety. Faith is the decision to hand your anxiety to Someone stronger than you.

God Is Not Ashamed of Your Feelings

Sometimes people talk as if Christians should never struggle… never feel fear… never feel overwhelmed. But that’s not Scripture. That’s not the human experience. And that’s not God.

Look at David—one of the strongest, most courageous figures in the Bible. He fought lions, bears, and giants, but he still wrote things like:

“My anxiety is great within me.” “My heart is troubled.” “My soul is cast down.”

If David—chosen, anointed, favored—felt anxiety, then your struggle does not disqualify you from God’s love or His calling.

God does not look at your anxious thoughts and say, “Why can’t you be stronger?” He looks at them and says, “Come here. Let Me hold what you’re trying to carry.”

You are never judged for your fear. You are invited into His presence because of it.

What Anxiety Really Steals

Anxiety steals from the inside out.

It steals today by dragging your mind into tomorrow. It steals peace by feeding you possibilities that haven’t happened. It steals confidence by whispering that you’re not enough. It steals rest by convincing you that the world will fall apart if you stop moving.

Anxiety paints a future where God isn’t present—because anxiety only knows how to speak in the language of fear.

But fear is always inaccurate when God is in the picture.

Fear exaggerates. God reassures. Fear imagines chaos. God speaks peace. Fear says, “You won’t make it.” God says, “I will carry you.”

Fear never gets the final word when God is involved.

The Storm That Didn’t Wake Jesus

Do you ever wonder why Jesus could sleep during a violent storm while the disciples were panicking for their lives?

Because the storm didn’t threaten Him. But their fear moved Him.

Think about that:

The storm didn’t wake Jesus. Their anxiety did.

He didn’t get up because He was scared of the wind. He got up because His children were overwhelmed.

And that is exactly what He does now.

Your anxious moments do not drive Him away—they draw Him in. Your fear does not annoy Him—it moves Him with compassion. Your shaking heart does not frustrate Him—it invites His nearness.

When Anxiety Speaks Loud, Let Truth Speak Louder

Anxiety has a voice. But God has a stronger one.

Anxiety says, “You’re all alone.” God says, “I will never leave you.”

Anxiety says, “You can’t handle this.” God says, “My strength is made perfect in weakness.”

Anxiety says, “Everything is going wrong.” God says, “I work all things together for good.”

Anxiety says, “It’s falling apart.” God says, “I am upholding all things by My power.”

Anxiety says, “You’re not safe.” God says, “I am your refuge and fortress.”

Every lie anxiety whispers is dismantled by the truth of God’s presence.

The Shift That Breaks Anxiety’s Grip

Anxiety thrives on one question: “What if?”

“What if it goes wrong?” “What if I fail?” “What if they leave?” “What if I don’t know what to do?” “What if this time is different?” “What if I can’t get through it?”

But faith doesn’t live in “what if.” Faith lives in “even if.”

“What if I lose my job?” becomes “Even if I do, God will provide.”

“What if I make the wrong decision?” becomes “Even if I stumble, God will redirect me.”

“What if the outcome isn’t what I hoped?” becomes “Even if it isn’t, God will carry me through.”

“What if I feel anxious again tomorrow?” becomes “Even if I do, God will meet me there.”

When you shift from what if to even if, anxiety loses its power to predict your future.

You Don’t Have To Be Fearless—Just Faithful

Sometimes believers think the goal is to eliminate fear completely. It isn’t.

God never said, “You must be fearless.” He said, “Do not fear, for I am with you.”

Meaning: Fear may come, but it doesn’t get to stay. Fear may whisper, but it doesn’t get to lead. Fear may show up, but it doesn’t get to decide your life.

Courage is not never feeling anxiety. Courage is choosing God in the middle of it.

Even with trembling hands. Even with a racing mind. Even with uncertainty swirling.

God doesn’t wait for you to feel strong. He becomes your strength when you feel weak.

When You Feel Like You're Failing Spiritually

Let’s address something many people won’t admit:

There are days when anxiety is so strong that prayer feels difficult. Not because you don’t love God. Not because you’re resisting Him. But because your mind feels overwhelmed.

And in those moments, the enemy loves to whisper, “See? Your faith isn’t real. If you trusted God, you wouldn’t feel this way.”

That is a lie.

You’re not failing spiritually because you feel anxious. You’re not failing because you’re exhausted. You’re not failing because your thoughts are loud.

You are fighting a battle that God is helping you win— even when you don’t feel strong.

The Promise God Speaks Directly Into Your Anxiety

There is a verse that has carried countless believers through their darkest moments. And I want you to receive it personally today:

“Do not fear, for I am with you. Do not be dismayed, for I am your God. I will strengthen you. I will help you. I will uphold you with My righteous right hand.” —Isaiah 41:10

Notice the pattern:

I am with you. I am your God. I will strengthen. I will help. I will uphold.

This isn’t a suggestion. This isn’t wishful thinking. This isn’t hopeful language.

This is God promising— with the full authority of Heaven— to hold you steady when your heart feels unsteady.

A Prayer for Every Person Fighting Anxiety Today

“Lord, I lift up every son and daughter reading this. You see the battles they fight silently. You see the thoughts that overwhelm them. You see the burdens they try so hard to carry alone. Wrap them in Your peace now. Let Your presence calm what their mind cannot. Push back every lie anxiety has planted. Speak Your truth into every fearful corner of their heart. Strengthen them in ways they didn’t know they could be strengthened. Comfort them in ways they didn’t know they needed comfort. And remind them that they are not alone—not for one second. In Jesus’ name, Amen.”

A Final Word to Your Heart

Listen closely:

You are not broken. You are not weak. You are not a disappointment to God. You are not falling apart.

You are a human being walking through something hard, with a God who walks beside you step by step.

There will be days when the anxiety is softer. There will be days when the fear disappears completely. And there will be days when the weight feels lighter—not because life changed, but because you did.

God is strengthening you through this. He is maturing you through this. He is forming something unshakeable inside you through this.

And you will come out of this storm not just surviving— but transformed.

Hold on. Breathe. Take one step at a time. And remember:

You are loved. You are held. You are carried. You are never alone.


Watch Douglas Vandergraph’s inspiring faith-based videos on YouTube

Support the ministry by buying Douglas a coffee

—Douglas Vandergraph

#faith #encouragement #Jesus #hope #anxiety #ChristianMotivation #inspiration

 
Read more...

from 💚

Death of The Far Right

And men came to riches You and I were forever Impossibly bare Intoning what could be Extending our day The Price is Right Seconds to film See what works for the lampstand Made to fail inner workings And to not marry Alone at international customs The size of a hummingbird Preciously waiting with widgets Hair of a Druze just for her We were people on LinkedIn Maine sold a story Of the ever-bunch and bottomless pit Oversymptomification for four This day is running you Like a place without water Noticed every sin What a trapeze would have honoured- A slight spill There was Erudite change And spoken English But of someone cousin, and the love, Making perfect in the act- We were put out for bankruptcy because we were poor We ran for the gates Were put in government Nobody showed us the door Became the President I am the little one Praying for years about sex And a tiny embargo- A fortune- Was days from war And we owed and we sued For trouble of carriage Last in line Just like you

We, The People, Expected this world Were perfunctorily perfect Mythes of second hair A lil frail Popsicle on time Precious top Eating early Hatin’ no-one Friends for life Yeah we was no-one And we left the world better- In Black Power And Christ came

 
Read more...

from 💚

Bring This To Heaven

I am the main event Even flowers were invited An incident to the left Cover your ears Juniper on Sunday Enjoying every canoe By remote there was wonder And I smashed the CRT A window to the touch High regret to one month 6 arrays of heaven And a drawer full of sleep The black and white princess With pictures for the press In peace by forever A Macintosh creation Saving the sane, The crazy ones, Fit for Heaven, Advancing here In biggest wonder Triumphant- Upon this day When applications ran free In a fire of sixteen, Finding my red balloon

⌨️

 
Read more...

from The Europe–China Monitor

Pat McCarthy (left) with students in Liaoning, where he invested his life savings to advance education for the children of rural China through his non-profit school. Photo captured at the November 2025 Ireland-China Speech Festival.

Liaoning’s Dawn

In Liaoning's fields where quiet dreams reside,

Pat walks with purpose, love his only guide.

He gave his all—life’s savings in his hand—

To plant a school where hope could take its stand.

He does not beg, but beckons those with might,

To join his cause and bring the dawn to light.

O stewards of tomorrow, lend your flame—

Let legacy, not wealth alone, define your name.

To support this mission and help widen the horizon for children in rural China, please consider contributing through the GlobalGiving initiative Give 1,000 Rural Children an English Education.

#poetry

#IrelandChinaRelations

#RuralChina

#CharityinChina

© 2025 Europe China Monitor News Team

 
Read more... Discuss...

from 💚

Incheon

The river joy is understood People to pray for signs- Better luck with a new hope Endowments of circumstance- to the American elect This is stillwater Erasing fewer days, Seoul is capstone No corporation but the integral ones A sane place for dinner Flowers in hand Dreams for the future Mystical days ahead in Korea Future wars are none decided Best days in June Money woes for a quarter The agency is yours, Lord Grant us peace in Christ Amen

 
Read more...

from 💚

The Colour Stays Here-

In vision Across the form of Earth For sizes of Apple And a British hewing Maximum heart And Nathan breathing Bits of clover and woodrose In patches of wool And then there was Santa Winning caution to the aware Five times the Uncle As a patient young man Summer days- To be sure- An impression of wisdom Spokes of all men Flying wind to the fights To stay forever good In this Honda creation What policy but of brothers Waking early for chance And in the affair of theirs, Septuagenic writing For this field of roses, And what is his, And what is wonder

 
Read more...

from 💚

Return of The Caveman

In creation comfort, A mode of roles Confiding in action Across a span of places Foursquare and Times A retrofit Peace to this day And actual places of effect To Tuesdays in general, a man softly weeping For his day of opposites- Of joy, of frustration To be so in heart Never because of the bad deal Raging capitulations- Of the car- Finding maximum speed And merriness Apostles in rainclothes, furthering the scuttle In science a way of standing For this little Earth of being With the Rosary as our desert rote And viewing Winter In the waist-high Maximum shine Upon these years For hope to reform A nice form in the dark- Fires burning To catch all that is sweet In a Caveman year, such as this

 
Read more...

from koanstudy

It’s 4am. The worst time. LT – 6 months old – is crying. Again. She last cried 40 minutes ago. And she cried 40 minutes before that. I’ve lost count and track of the times before. This is unusual. I’m not equipped for it.

But I’ve had enough. It’s late. Or is it early? I’ve had no sleep, and I have important things to do in the morning. (Not really, but they seem it at 4am.)

Six months. That’s old enough for her to be trying it on, isn’t it? This is beginning to feel like a tantrum. I’ll let her work it out by herself…

But she’s not stopping. She’s just working up to more and more distress. So I pick her up. Of course I do. And I hug, and I soothe, and I beg because I don’t know what else to do. She comes into our bed, and with some hugs and kisses and songs she eventually gets back off to sleep.

I look at the clock and decide I may as well get up. And I go to work, and I type, almost on autopilot. And I go to Smith’s where I forget to buy what I went in for, and leave my debit card in the machine when I go back in for the second time. And then I go home, tired, grumpy and dreading the night ahead.

“Her first tooth has come through!” my partner grins. And in six words, the confusion of the night before crystallises into sense. And I feel awful, because it wasn’t a tantrum, and I was a horrible Dad. And I realise those important things I had to do were, in fact, minuscule.

And I feel wonderful because she’s growing up and I’m there to see it.

I go to her, and she looks at me, and beams that big toothless grin – not so toothless now – and I sit beside her, and she reaches out and rests her hand on me. And whatever she’s capable of thinking or feeling, I feel welcome, forgiven and loved.

#notes #november2014

 
Read more...

from Liwei Su

the origin repo is here.

this note records my questions and solutions of this project.

First two questions are:

  • what is the code const todoInput = document.querySelector(".todo-input") try to do?
  • what “event listeners” are (like the addEventListener parts)? or who listening the event?

The first one is to use dot selector to pass the todo-input-related to todoInput, and the code could use it for event listening logic writing. The second one is the browser that listening the event, the event listeners maybe a process of a browser, and when the code which contain addEventListener, browser then create a process for event listen. but actually I'm not sure the explain is right or not.

The whole things are: user write the content, and click the so called Send button, browser listening this button event, cuz the JS code we write is running in the browser, and the browser know, then execute the specific function, for example, addTodo.

Then another question is: if don't create div tag, what will happen?

If we change the code in addTodo from this:

todoDiv.appendChild(newTodo);
todoDiv.appendChild(completedButton);
todoDiv.appendChild(trashButton);
todoList.appendChild(todoDiv);

image-20251201145242811

to this:

todoList.appendChild(newTodo);
todoList.appendChild(completedButton);
todoList.appendChild(trashButton);

image-20251201145346573

which mean directly put the Send button, Delete button, and div on todoList. we could see: after changing the code, those three are divided, much ugly. Although I don't know why I refresh the page and everything become normal(maybe the browser is correcting my code).

Refactor

After read the function of getTodos, I know why after refresh. The page become normal because after refresh, the getTodos function is called, and there also a create todo logic in it, since there the logic is right, the page will still perform right.

But this also come up an issue that, there are repetitive codes in addTodo and getTodos, we can DRY that code.

I DRY that code myself, but seems some bugs occur, so I think I should read twice before coding.

Before, the functions addTodo and getTodos are looked like this:

function addTodo(e) {
  e.preventDefault();
  
  // Create todo div
  const todoDiv = document.createElement("div");
  todoDiv.classList.add("todo");
  
  // Create list
  const newTodo = document.createElement("li");
  newTodo.innerText = todoInput.value;
  
  // Save to local
  saveLocalTodos(todoInput.value);
  newTodo.classList.add("todo-item");
  todoDiv.appendChild(newTodo);
  todoInput.value = "";
  
  // Create Completed Button
  const completedButton = document.createElement("button");
  completedButton.innerHTML = `✓`;
  completedButton.classList.add("complete-btn");
  todoDiv.appendChild(completedButton);
  
  // Create trash button
  const trashButton = document.createElement("button");
  trashButton.innerHTML = `✗`;
  trashButton.classList.add("trash-btn");
  todoDiv.appendChild(trashButton);
  
  // Final Todo
  todoList.appendChild(todoDiv);
}

function getTodos() {
  let todos;
  
  if (localStorage.getItem("todos") === null) {
    todos = [];
  } else {
    todos = JSON.parse(localStorage.getItem("todos"));
  }
  
  todos.forEach(function (todo) {
    // Create todo div
    const todoDiv = document.createElement("div");
    todoDiv.classList.add("todo");
    
    // Create list
    const newTodo = document.createElement("li");
    newTodo.innerText = todo;
    newTodo.classList.add("todo-item");
    todoDiv.appendChild(newTodo);
    todoInput.value = "";
    
    // Create Completed Button
    const completedButton = document.createElement("button");
    completedButton.innerHTML = `✓`;
    completedButton.classList.add("complete-btn");
    todoDiv.appendChild(completedButton);
    
    // Create trash button
    const trashButton = document.createElement("button");
    trashButton.innerHTML = `✗`;
    trashButton.classList.add("trash-btn");
    todoDiv.appendChild(trashButton);
    
    // Final Todo
    todoList.appendChild(todoDiv);
  });

I think it's hard to refactor now, at least at this form.

About these code, here are some questions:

  • what is 'e' and what is preventDefault do?
  • why we need todoInput.value = "";

As we all know, when a button is submit type, its default action is submit the form to the remote server. But since here we only use local memory to keep the todo list, so don't need to do that. And the 'e' here is just a parameter to pass the related variable of clicking event define by browser.

Delete Myth

After commenting out the style.css link in index.html, I find a strange problem of this code: when I input, submit, and delete the note, it didn't delete at once, but after a refresh. Code is here:

function deleteTodo(e) {
  const item = e.target;

  if (item.classList[0] === "trash-btn") {
    const todo = item.parentElement;
    
    todo.classList.add("fall");
    todo.classList.add("completed");
    removeLocalTodos(todo);
    
    todo.addEventListener("transitionend", (e) => {
      todo.remove();
    });
  }
  
  if (item.classList[0] === "complete-btn") {
    const todo = item.parentElement;
    
    todo.classList.toggle("completed");
  }
}

Here I use console.log to test what is item, and found it is button. But something beyond my surprise:

const todo = item.parentElement;
console.log(todo)
todo.classList.add("fall");
todo.classList.add("completed");
console.log(todo)
removeLocalTodos(todo);

The first and the second log show the same content! which is a div have 3 class.

Last Word

Well, this project is poorly written, I give up reading it. Never, ever, read a rubbish project.

 
Read more... Discuss...

from Liwei Su

A long time after ChatGPT release, we heavily depending on all kinds of AI products.

  • At the end of my college year, 80% of my paper was written by AI.
  • After having a job(which is writting script), I use it to coding and give up coding myself.
  • During AdventureX 2025, most of the products(including ours) here were created by AI.
  • Even some Art Gallery start to put some so-called “AI-generated art” to show.
  • Lots of “vibe coders” emege, develop software seems a thing that everyone could do.

We are so damn rely it that we almost lost our own thinking.

Of course I know someone will argue: “then why don't you criticise Google, Facebook, or Tiktok?” My answer is, they only change the way we see the infomation. Or worst, they just push what we wanna hear or see, we could still read the other media. But using AI, most of people will lost their thinking ability.

Don't use, you lose. When AI start its deep thinking, who the hell will think by themself? Once people are not thinking by themself, they are just a AI-prompt speaker, say what AI say, do what AI suggest.

Here is a talk from TED, it hold the same point with me.

 
Read more... Discuss...

from Liwei Su

On Feb 24th, I finish my first time hackthon on Devpost, with other three friends.

On June 24th, I receive an invitation email from AdventureX 2025. On July 28th, I finished the five days hackathon in Hangzhou.

AdventureX 2025 invitation mail

Later, I joined a hackathon launched by Hackathon Weekly, a organization in Shenzhen.

I was excited, passionate, fall in love with these hackathons. I once hope that, in China, there will be more well-organized hackathons there waiting for people to join in. But now, what I wanna say is: Don't join any hackathon in China, and here are why.

Root weak here

Open Source community is weak in China, and due to the network policy, even in code&design, some people still don't know how to use oversea services.

Most of the hackathons in China don't have the enough revenue to run. They seldom have support from Big Tech like Tencent, Alibaba, Baidu or ByteDance, except for those launched by Big Tech. So there is far less hackathons here in China, and is reasonable why the hackathons in China is poor and low-quality: it just hard to launch new one.

Hasty is evil

Maybe this is not a special one in China, the hackathon oversea is also. But I still wanna say: lots of people are hasty here.

When I join in AdventureX 2025, you could hear at least five people here are drop out, or just don't care school work, just for join hackahton or embrace innovation. Everyone seems want to be next Elon, Jobs, Gates, want to build something great, but hardly sit for a single thing to do.

 
Read more... Discuss...

from koanstudy

This won't just be a home for old writings. Just putting a few things here while I shutter some internet presences. Writings anonymised and in one place. Lovely.

#notes #december2025

 
Read more...

Join the writers on Write.as.

Start writing or create a blog