Compare commits
2 Commits
e8aa6882bd
...
617f44b7d5
| Author | SHA1 | Date | |
|---|---|---|---|
| 617f44b7d5 | |||
| 1d89d91a64 |
4
.gitignore
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
public/
|
||||
old-site/
|
||||
src/
|
||||
opencodetmp/
|
||||
11
changelog.txt
Normal file
@@ -0,0 +1,11 @@
|
||||
2025-02-25 made public (v1.0.1)
|
||||
- forked from https://github.com/oskarwickstrom/monospace-web
|
||||
- bash script to build HTML & PDF from markdown
|
||||
- css & js:
|
||||
- added clickable/linkable heading anchors
|
||||
- added code blocks
|
||||
- added blockquotes
|
||||
- added (product) cards
|
||||
- grid changes
|
||||
- added new hr style
|
||||
- added dark mode toggle & related image color adjustments
|
||||
63
content/blog/Sun-Ultra-98-Build.md
Normal file
@@ -0,0 +1,63 @@
|
||||
---
|
||||
title: Sun Ultra 98 Build
|
||||
subtitle: Building my linux workstation
|
||||
author: Eric Taylor
|
||||
lang: en
|
||||
toc: true
|
||||
enable-response: true
|
||||
---
|
||||
## Specs
|
||||
|
||||
- MB: Gigabyte Vision D-P Motherboard B550
|
||||
- CPU: AMD Ryzen 7 3800X 8 Core 16 Thread
|
||||
- RAM: 64GB System Memory 2x32GB DDR4-3200 PC4-25600 2Rx8 ECC
|
||||
- GPU: Radeon Pro WX 9100 (Vega 64) 16 GB HBM2 Memory
|
||||
- STORAGE: 1TB SK Hynix Gold NVMe M.2
|
||||
- PS: EVGA P6 850 watt 80+ Platinum
|
||||
- CASE: Sun Microsystems Ultra 27
|
||||
- [Kingwin USB ](https://www.amazon.com/dp/B01K0RPTN0?psc=1&ref=ppx_yo2ov_dt_b_product_details)Other: Kingwin USB hub/media reader on the front panel
|
||||
- 4 port Intel NIC
|
||||
- OS: Fedora Workstation
|
||||
|
||||
> Inspiration for this build came from [Sun Ultra 24 - Reborn](http://mroach.com/2020/08/sun-ultra-24-reborn/)
|
||||
|
||||
## Exterior
|
||||
|
||||
[](./../files/img/sun_ultra98_10.jpg)
|
||||
|
||||
[](./../files/img/sun_ultra98_09.jpg)
|
||||
|
||||
[](./../files/img/sun_ultra98_07.jpg)
|
||||
|
||||
Got the case real cheap it is a little scuffed up but otherwise in good shape. I may try and touch up the scratched paint someday if I can get a good color match.
|
||||
|
||||
|
||||
## Desktop
|
||||
|
||||
[](./../files/img/sun_ultra98_06.png)
|
||||
|
||||
[](./../files/img/sun_ultra98_05.png)
|
||||
|
||||
|
||||
## Interior
|
||||
|
||||
[](./../files/img/sun_ultra98_04.jpg)
|
||||
|
||||
[](./../files/img/sun_ultra98_08.jpg)
|
||||
|
||||
[](./../files/img/sun_ultra98_03.jpg)
|
||||
|
||||
The case was really easy to build in however I did run into a few sags:
|
||||
|
||||
1. Most of the cables for the front panel didn’t reach their location on the motherboard necessitating the use of extensions.
|
||||
2. Front panel power connector required a custom pinout adapter.
|
||||
3. No place to hide cables.
|
||||
|
||||
[](./../files/img/sun_ultra98_02.jpg)
|
||||
|
||||
[](./../files/img/sun_ultra98_01.jpg)
|
||||
|
||||
I didn't have the correct size fan for the front so I just zip tied it on.
|
||||
|
||||
For a workstation motherboard I am a little disappointed that there isn’t more PCIE slots. With a video card an and NIC I have only 1 slot left at the bottom of the case.
|
||||
|
||||
12
content/blog/georgia-aquarium-video.md
Normal file
@@ -0,0 +1,12 @@
|
||||
---
|
||||
title: EricTaylor.me/Blog
|
||||
subtitle: Georgia Aquarium Visit
|
||||
author: Eric Taylor
|
||||
lang: en
|
||||
toc: false
|
||||
---
|
||||
|
||||
<iframe width="720" height="400" src="https://www.youtube.com/embed/Yt6oDjwr3gs?si=fnAP7PI9QffEKPwn" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
|
||||
|
||||
|
||||
I made this video when I visited the Georgia Aquarium in the fall of 2024.
|
||||
33
content/blog/index.md
Normal file
@@ -0,0 +1,33 @@
|
||||
---
|
||||
title: EricTaylor.me/Blog
|
||||
subtitle: Random musings.
|
||||
author: Eric Taylor
|
||||
lang: en
|
||||
toc: false
|
||||
---
|
||||
<img height="242px" class="theme-aware-image" src="./../files/img/2_macintosh.png" alt="1 bit computer clipart">
|
||||
|
||||
## Highligted
|
||||
|
||||
None.
|
||||
|
||||
## Notes
|
||||
|
||||
- [Quotes](quotes.html)
|
||||
- [The Rules to Live By](rules-to-live-by.html)
|
||||
- [Living as a Citizen of Heaven](living-as-a-citizen-of-heaven.html)
|
||||
- [Trading Everything for Christ](trading-everything-for-christ.html)
|
||||
- [The Blessing of suffering](the-blessing-of-suffering.html)
|
||||
- [Maintaining an unwavering joy](maintaining-an-unwavering-joy.html)
|
||||
- [Sun Ultra 98 Build](Sun-Ultra-98-Build.html)
|
||||
|
||||
## Video
|
||||
|
||||
- [Georgia Aquarium](georgia-aquarium-video.html)
|
||||
|
||||
|
||||
## Test
|
||||
|
||||
- [Lorem ipsum](lorem-ipsum.html)
|
||||
|
||||
|
||||
62
content/blog/living-as-a-citizen-of-heaven.md
Normal file
@@ -0,0 +1,62 @@
|
||||
---
|
||||
title: Living as a Citizen of Heaven
|
||||
subtitle: Hope and freedom comes from being a citizen of heaven
|
||||
author: Eric Taylor
|
||||
lang: en
|
||||
toc: true
|
||||
enable-response: true
|
||||
---
|
||||
|
||||
> Brethren, be followers together of me, and mark them which walk so as ye have us for an ensample.(For many walk, of whom I have told you often, and now tell you even weeping, that they are the enemies of the cross of Christ: Whose end is destruction, whose [God](https://christiananswers.net/dictionary/god.html) is their [belly](https://christiananswers.net/dictionary/belly.html), and whose glory is in their shame, who mind earthly things.) For our [conversation](https://christiananswers.net/dictionary/conversation.html) is in heaven; from whence also we look for the [Saviour](https://christiananswers.net/dictionary/savior.html), the [Lord](https://christiananswers.net/dictionary/lord.html) [Jesus Christ](https://christiananswers.net/jesus/home.html): Who shall change our vile body, that it may be fashioned like unto his glorious body, according to the working whereby he is able even to subdue all things unto himself. [Philippians 3:17-21 KJV](https://christiananswers.net/bible/phil3.html#17)
|
||||
|
||||
Philippians 3 continues to challenge us to re-evaluate our priorities, shifting our focus from earthly pursuits to a heavenly perspective. It’s a call to live as citizens of a different kingdom, impacting how we follow, what we admire, and where we place our hope.
|
||||
|
||||
## **Follow Heavenly-Minded Examples**
|
||||
|
||||
Paul urges the Philippians, “Be followers of me, and look to those who walk as we do” (Philippians 3:17). This isn’t about blind obedience, but about observing those who are intentionally living out their faith. It's about identifying those whose lives reflect the character of Christ and intentionally learning from them.
|
||||
|
||||
Paul emphasizes that “walk” refers to the *pattern* of your life, your habits, your values, and your daily choices. Just as we need leaders to follow, we also have a responsibility to *be* godly examples to others.
|
||||
|
||||
## **Avoid Following Earthly Examples**
|
||||
|
||||
However, not everyone is worthy of imitation. Paul warns about those who are “enemies of the cross of Christ” (Philippians 3:18), people whose lives are defined by self-indulgence and shame. It’s a stark reminder to be discerning about who we allow to influence us.
|
||||
|
||||
How do we identify these dangerous influences? Paul points to several key characteristics:
|
||||
|
||||
* **Living against God’s law:** They disregard biblical principles and prioritize their own desires.
|
||||
* **Prioritizing earthly things:** Their focus is solely on material possessions, pleasure, and self-gratification.
|
||||
* **Boasting in shameful things:** They celebrate behaviors that should bring them shame.
|
||||
|
||||
The law, Paul explains, serves three vital purposes: it restrains evil, reveals God’s will, and exposes our own sinfulness. We must be wary of those who flaunt their disobedience and disregard God’s standards. Beware of false prophets and teachers who disguise themselves as sheep in wolves clothing!
|
||||
|
||||
Paul illustrates this with a powerful analogy: “Whose god is their belly, and whose glory is in their shame” (Philippians 3:19). Their appetites, desires, and self-worship become their ultimate priority.
|
||||
|
||||
Remember, as Romans 6:1-4 reminds us, if we’ve died to sin, we shouldn’t continue living in it. We are called to “walk in newness of life” and 1 John 2:15 warns us not to love the world or the things in it.
|
||||
|
||||
> What shall we say then? Shall we continue in sin, that grace may abound? God forbid. How shall we, that are dead to sin, live any longer therein? Know ye not, that so many of us as were baptized into Jesus Christ were baptized into his death? Therefore we are buried with him by baptism into death: that like as Christ was raised up from the dead by the glory of the Father, even so we also should walk in newness of life.
|
||||
[Romans 6:1-4 KJV](https://christiananswers.net/bible/rom6.html#1)
|
||||
|
||||
## **Have a Heavenly-Minded Hope**
|
||||
|
||||
Ultimately, our true home isn’t on earth; it’s in heaven. Paul declares, “For our citizenship is in heaven, from where we eagerly await a Savior, the Lord Jesus Christ” (Philippians 3:20).
|
||||
|
||||
|
||||
> For our conversation is in heaven; from whence also we look for the _Saviour_, the Lord Jesus Christ: Who shall change our vile body, that it may be fashioned like unto his glorious body, according to the working whereby he is able even to subdue all things unto himself.
|
||||
[Philippians 3:20-21 KJV](https://christiananswers.net/bible/phil3.html#20)
|
||||
|
||||
This heavenly perspective transforms our lives. We are merely “passing through” this world, and our hope is rooted in the promise of a future resurrection and a glorified body, fashioned like Christ’s (Philippians 3:21).
|
||||
|
||||
|
||||
> These all died in faith, not having received the promises, but having seen them afar off, and were persuaded of them, and embraced them, and confessed that they were strangers and pilgrims on the earth. For they that say such things declare plainly that they seek a country. And truly, if they had been mindful of that country from whence they came out, they might have had opportunity to have returned. But now they desire a better country, that is, an heavenly: wherefore God is not ashamed to be called their God: for he hath prepared for them a city.
|
||||
[Hebrews 11:13-16 KJV](https://christiananswers.net/bible/heb11.html#13)
|
||||
|
||||
Hebrews 11:13-16 beautifully portrays this reality: the patriarchs of faith “died in faith, not having received the promises, but having seen them afar off.” They recognized they were strangers and pilgrims on earth, seeking a better country – a heavenly one.
|
||||
|
||||
This hope compels us to shift our priorities. Instead of laying up treasures on earth, we should focus on storing up eternal rewards in heaven (1 Peter 1:4).
|
||||
|
||||
> To an inheritance incorruptible, and undefiled, and that fadeth not away, reserved in heaven for you,
|
||||
[1 Peter 1:4 KJV](https://christiananswers.net/bible/1pet1.html#4)
|
||||
|
||||
Our earthly bodies are temporary and imperfect. But the promise of a glorified body—one that reflects the perfection and glory of Christ—should inspire us to live with a heavenly mindset, eagerly awaiting the return of our Savior.
|
||||
|
||||
|
||||
20
content/blog/lorem-ipsum.md
Normal file
@@ -0,0 +1,20 @@
|
||||
---
|
||||
title: Lorem ipsum
|
||||
subtitle: Lorem ipsum dolor sit amet, consectetur adipiscing elit.
|
||||
author: John Doe
|
||||
lang: en
|
||||
toc: false
|
||||
---
|
||||
|
||||
|
||||
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque quis sagittis diam. Nunc nec nisi venenatis, varius ipsum sed, interdum ex. Nullam lacinia ex at sapien maximus mattis. Donec felis leo, viverra sit amet augue at, convallis laoreet ex. Cras luctus lacinia mi vitae tincidunt. Duis pellentesque consequat sapien a gravida. Donec tincidunt diam turpis, nec imperdiet est faucibus at. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae;
|
||||
|
||||
Phasellus posuere, magna ut vulputate tincidunt, ipsum libero euismod mi, sit amet tincidunt risus sem in tellus. Quisque vestibulum sem sed orci rutrum euismod euismod sit amet velit. Phasellus pharetra dui eget metus pellentesque, vitae blandit leo tempus. Pellentesque commodo a magna vitae maximus. Aliquam hendrerit justo quis metus sollicitudin, ut tempus sapien tincidunt. Nam vitae mollis nunc, non iaculis neque. Cras ornare velit nec eros faucibus rhoncus. Praesent porttitor lectus lectus, nec luctus lectus sagittis sit amet. Fusce ultrices tincidunt commodo.
|
||||
|
||||
Fusce pulvinar sit amet neque sit amet ultrices. Sed facilisis non dui a consectetur. Cras vitae sem nisi. Nunc at tortor eu leo facilisis ultrices et eget lorem. Sed et odio nunc. Quisque mattis congue porta. Integer aliquet eleifend urna, eget molestie justo fermentum a. Phasellus ut efficitur tellus. Nulla posuere nisi vitae nisl dapibus mollis.
|
||||
|
||||
Integer condimentum libero ut ligula tempus dictum. Pellentesque dignissim mauris eget sapien consequat bibendum. Integer interdum risus nec quam egestas, id consequat arcu rutrum. Quisque viverra arcu ex, ut varius neque volutpat ut. Quisque et mattis nulla. Suspendisse congue orci id velit tincidunt rhoncus. Sed luctus odio nec augue vulputate, sit amet hendrerit lacus commodo. Duis auctor nisi orci, ut suscipit ipsum aliquet id. Etiam elementum orci sed augue iaculis, vitae condimentum justo pellentesque. Morbi eget tortor ullamcorper, eleifend tellus non, iaculis sapien. Aenean pellentesque laoreet ante, eu suscipit nisi imperdiet sit amet. Ut non dapibus tellus, posuere dignissim lacus. Aliquam aliquet malesuada porttitor. Maecenas tincidunt id ante at ultricies.
|
||||
|
||||
Fusce id libero vel diam faucibus congue. Cras sed molestie leo. Cras lobortis blandit orci dignissim pulvinar. Morbi ut fermentum erat. Suspendisse varius est lacinia mauris lacinia pellentesque. Duis non purus suscipit, dapibus ante ut, finibus metus. Nam dictum placerat suscipit. Suspendisse sapien ex, rutrum ut efficitur sed, suscipit ut justo. Donec venenatis libero vitae lobortis tristique. Aliquam ultricies mi consequat lectus rhoncus vestibulum. Curabitur consectetur in sem id tempor. Fusce eget ex mauris. Nunc porta porta arcu, vitae viverra ante gravida ut. Maecenas luctus condimentum nisi a cursus. Aenean blandit dolor vel velit rhoncus, vitae consectetur sem tincidunt. In ac tortor sit amet justo eleifend tincidunt eget quis justo.
|
||||
67
content/blog/maintaining-an-unwavering-joy.md
Normal file
@@ -0,0 +1,67 @@
|
||||
---
|
||||
title: Maintaining an Unwavering Joy
|
||||
subtitle: maintain joy in a world filled with hardship and uncertainty
|
||||
author: Eric Taylor
|
||||
lang: en
|
||||
toc: true
|
||||
enable-response: true
|
||||
---
|
||||
|
||||
> Rejoice in the Lord alway: and again I say, Rejoice. Let your moderation be known unto all men. The Lord is at hand. Be careful for nothing; but in every thing by prayer and supplication with thanksgiving let your requests be made known unto God. And the peace of God, which passeth all understanding, shall keep your hearts and minds through Christ Jesus.
|
||||
> [Philippians 4:4-7 KJV](http://christiananswers.net/bible/phili4.html#4)
|
||||
|
||||
How do we maintain joy in a world filled with hardship and uncertainty? Paul offers a powerful path to unwavering joy in Philippians 4:4-7 – a joy rooted not in our circumstances, but in our relationship with Christ.
|
||||
|
||||
# **The Idea:**
|
||||
|
||||
Because we are in Christ, we seek to be shaped by the gospel and not by the world. So when trials and hardships come, we can stand firm and maintain our joy.
|
||||
|
||||
## **How Can We Do This?**
|
||||
|
||||
### **1. Rejoice in the Lord (v4)**
|
||||
|
||||
Paul doesn’t just *suggest* we rejoice, he *commands* it – “Rejoice in the Lord alway: and again I say, Rejoice.” This isn’t a superficial happiness, but a deep-seated joy planted in our union with Christ.
|
||||
|
||||

|
||||
|
||||
* **Don't let your joy be shaken:** Our joy shouldn't be dependent on external circumstances.
|
||||
* **Rejoice always!:** Even in the hard times, find comfort in your faith.
|
||||
* **Overflowing Joy:** Be so filled with joy that it excites and encourages others.
|
||||
* **Don't let sin steal your joy:** Sin diminishes our connection to God and drains our joy.
|
||||
* **Don't let good things distract you:** Even positive things can become idols if they pull our focus away from God.
|
||||
|
||||
### **2. Work at Being Gentle (v5)**
|
||||
|
||||
Gentleness, or moderation, is a hallmark of a Christ-follower. It’s about acting with kindness and humility, even when wronged.
|
||||
|
||||
* [Philippians 2:3-5](https://christiananswers.net/bible/phil2.html#3) & [1 Peter 2:21](https://christiananswers.net/bible/1pet2.html#21) call us to follow the example of Christ, who humbled himself.
|
||||
* **We are not called to seek revenge:** Respond to injustice with grace and forgiveness.
|
||||
* **Check yourself:** Knowing that God is near should motivate us to live with gentleness and humility.
|
||||
|
||||
### **3. Overcome Anxiety Through Prayer (v6-7)**
|
||||
|
||||
#### Anxiety is a common struggle, but Paul offers a powerful solution: prayer.
|
||||
|
||||
* **Don't be anxious:** Worry is a sign of distrust in God's provision.
|
||||
* **Be careful for nothing:** It's okay to have genuine concern, but not crippling worry.
|
||||
* **Don't live as if there is no God:** Our faith should shape how we approach life’s challenges.
|
||||
* **The pagans and atheists live this way:** They have no hope or assurance beyond this life.
|
||||
|
||||
#### Instead of succumbing to anxiety, Paul encourages us to:
|
||||
|
||||
* **Present our requests to God in prayer.**
|
||||
* **Approach Him with thankful hearts,** not just demanding requests.
|
||||
* **Rejoice even when our prayers aren’t answered the way we want,** trusting in His sovereignty and perfect knowledge.
|
||||
|
||||
> “Therefore I tell you, do not worry about your life, what you will eat or drink, or about your body, what you will wear. Isn’t there more to life than food and more to the body than clothing? Look at the birds in the sky: They do not sow, or reap, or gather into barns, yet your heavenly Father feeds them. Aren’t you more valuable than they are? [Matthew 6:25-26 NET](https://christiananswers.net/bible/mat6.html#5)
|
||||
|
||||
> And which of you by worrying can add even one hour to his life? [Matthew 6:27 NET](https://christiananswers.net/bible/mat6.html#27)
|
||||
|
||||
## And the promise?
|
||||
|
||||
**“And the peace of God, which passeth all understanding, shall keep your hearts and minds through Christ Jesus.”**
|
||||
|
||||
This peace isn't a fleeting emotion; it's a deep-seated assurance that transcends logic and reason. It’s a peace the world knows nothing about.
|
||||
|
||||
**Our greatest need has already been met.** Through Christ, we have peace with God, and that peace can guard our hearts and minds, enabling us to maintain unwavering joy even in the midst of life’s challenges.
|
||||
|
||||
68
content/blog/quotes.md
Normal file
@@ -0,0 +1,68 @@
|
||||
---
|
||||
title: Quotes
|
||||
subtitle: Some quotes have collected.
|
||||
author: Eric Taylor
|
||||
lang: en
|
||||
toc: false
|
||||
enable-response: false
|
||||
---
|
||||
|
||||
<div class="grid">
|
||||
<img height="60px" class="theme-aware-image" src="./../files/img/1_clipart.png" alt="paper clips">
|
||||
<p></p>
|
||||
<p></p>
|
||||
</div>
|
||||
"Forgiveness is an act of the will, and the will can function regardless of the temperature of the heart." </br>
|
||||
– [Corrie Ten Boom](https://en.wikipedia.org/wiki/Corrie_ten_Boom)
|
||||
|
||||
"Worrying is carrying tomorrow's load with today's strength- carrying two days at once. It is moving into tomorrow ahead of time. Worrying doesn't empty tomorrow of its sorrow, it empties today of its strength."</br>
|
||||
– [Corrie Ten Boom](https://en.wikipedia.org/wiki/Corrie_ten_Boom)
|
||||
|
||||
“The world is a book and those who do not travel read only one page.” </br>
|
||||
– [St. Augustine](https://en.wikipedia.org/wiki/Augustine_of_Hippo)
|
||||
|
||||
"When the truth offends, we lie and lie until we can no longer remember it is even there. But it is...still there. Every lie we tell incurs a debt to the truth. Sooner or later, that debt is paid."</br>
|
||||
— [Valery Legasov](https://en.wikipedia.org/wiki/Valery_Legasov), Chernobyl, Miniseries: Open Wide, O Earth
|
||||
|
||||
“Twenty years from now you will be more disappointed by the things you didn’t do than by the ones you did do. So throw off the bowlines, sail away from the safe harbor. Catch the trade winds in your sails. Explore. Dream. Discover.” </br>
|
||||
– [Mark Twain](https://en.wikipedia.org/wiki/Mark_Twain)
|
||||
|
||||
<img height="83px" class="theme-aware-image" src="./../files/img/5_globe.png" alt="Globe Clipart">
|
||||
|
||||
"What is morally wrong can never be advantageous, even when it enables you to make some gain that you believe to be to your advantage. The mere act of believing that some wrongful course of action constitutes an advantage is pernicious." </br>
|
||||
— [Cicero](https://en.wikipedia.org/wiki/Cicero)
|
||||
|
||||
"There is all the difference in the world between treating people equally and attempting to make them equal." </br>
|
||||
— [F.A. Hayek](https://en.wikipedia.org/wiki/Friedrich_Hayek)
|
||||
|
||||
"In the absence of any other proof, the thumb alone would convince me of God's existence." </br>
|
||||
— [Isaac Newton](https://en.wikipedia.org/wiki/Isaac_Newton)
|
||||
|
||||
<div class="grid">
|
||||
"Atheism is so senseless. When I look at the solar system, I see the earth at the right distance from the sun to receive the proper amounts of heat and light. This did not happen by chance." </br>
|
||||
— [Isaac Newton](https://en.wikipedia.org/wiki/Isaac_Newton)
|
||||
|
||||
<img height="80px" class="theme-aware-image" src="./../files/img/1_saturn.png" alt="Saturn">
|
||||
</div>
|
||||
|
||||
"The heavens declare the glory of God; and the firmament sheweth his handywork. Day unto day uttereth speech, and night unto night sheweth knowledge. There is no speech nor language, where their voice is not heard." </br>
|
||||
[Psalm 19:1-3](https://christiananswers.net/bible/psa19.html#1)
|
||||
|
||||
"What is the cost of lies? It's not that we'll mistake them for the truth. The real danger is that if we hear enough lies, then we no longer recognize the truth at all. What can we do then? What else is left but to abandon even the hope of truth, and content ourselves instead with stories? In these stories, it doesn't matter who the heroes are. All we want to know is: who is to blame?"</br>
|
||||
— [Valery Legasov](https://en.wikipedia.org/wiki/Valery_Legasov), Chernobyl, Miniseries: Open Wide, O Earth
|
||||
|
||||
"The beauty of a living thing is not the atoms that go into it, but the way those atoms are put together."
|
||||
|
||||
<img height="45px" class="theme-aware-image" src="./../files/img/1_atom.png" alt="Atom clipart">
|
||||
|
||||
"Everything is negotiable. Except physics."<br>
|
||||
— Rands
|
||||
|
||||
"You can never learn that Christ is all you need, until Christ is all you have."</br>
|
||||
– [Corrie Ten Boom](https://en.wikipedia.org/wiki/Corrie_ten_Boom)
|
||||
|
||||
"Tact is the art of making a point without making an enemy."</br>
|
||||
— [Isaac Newton](https://en.wikipedia.org/wiki/Isaac_Newton)
|
||||
|
||||
"I can calculate the motion of heavenly bodies, but not the madness of people."</br>
|
||||
— [Isaac Newton](https://en.wikipedia.org/wiki/Isaac_Newton)
|
||||
83
content/blog/rules-to-live-by.md
Normal file
@@ -0,0 +1,83 @@
|
||||
---
|
||||
title: The Rules
|
||||
subtitle: Rules to live by.
|
||||
author: Eric Taylor
|
||||
lang: en
|
||||
toc: false
|
||||
enable-response: false
|
||||
---
|
||||
|
||||
<img height="29px" class="theme-aware-image" src="./../files/img/5_ruler.png" alt="Ruler Clipart">
|
||||
|
||||
- First of all, love the Lord God with your whole heart, your whole soul, and your whole strength.
|
||||
- Then, love your neighbor as yourself.
|
||||
- Do not murder.
|
||||
- Do not commit adultery.
|
||||
- Do not steal.
|
||||
- Do not covet.
|
||||
- Do not bear false witness.
|
||||
- Honor all people.
|
||||
- Do not do to another what you would not have done to yourself.
|
||||
- Deny oneself in order to follow Christ.
|
||||
- Chastise the body.
|
||||
- Do not become attached to pleasures.
|
||||
- Love fasting.
|
||||
- Relieve the poor.
|
||||
- Clothe the naked.
|
||||
- Visit the sick.
|
||||
- Bury the dead.
|
||||
- Be a help in times of trouble.
|
||||
- Console the sorrowing.
|
||||
- Be a stranger to the world's ways.
|
||||
- Prefer nothing more than the love of Christ.
|
||||
- Do not give way to anger.
|
||||
- Do not nurse a grudge.
|
||||
- Do not entertain deceit in your heart.
|
||||
- Do not give a false peace.
|
||||
- Do not forsake charity.
|
||||
- Do not swear, for fear of perjuring yourself.
|
||||
- Utter only truth from heart and mouth.
|
||||
- Do not return evil for evil.
|
||||
- Do no wrong to anyone, and bear patiently wrongs done to yourself.
|
||||
- Love your enemies.
|
||||
- Do not curse those who curse you, but rather bless them.
|
||||
- Bear persecution for justice's sake.
|
||||
- Be not proud.
|
||||
- Be not addicted to wine.
|
||||
- Be not a great eater.
|
||||
- Be not drowsy.
|
||||
- Be not lazy.
|
||||
- Be not a grumbler.
|
||||
- Be not a detractor.
|
||||
- Put your hope in God.
|
||||
- Attribute to God, and not to self, whatever good you see in yourself.
|
||||
- Recognize always that evil is your own doing, and to impute it to yourself.
|
||||
- Fear the Day of Judgment.
|
||||
- Be in dread of hell.
|
||||
- Desire eternal life with all the passion of the spirit.
|
||||
- Keep death daily before your eyes.
|
||||
- Keep constant guard over the actions of your life.
|
||||
- Know for certain that God sees you everywhere.
|
||||
- When wrongful thoughts come into your heart, dash them against Christ immediately.
|
||||
- Disclose wrongful thoughts to your spiritual mentor.
|
||||
- Guard your tongue against evil and depraved speech.
|
||||
- Do not love much talking.
|
||||
- Speak no useless words or words that move to laughter.
|
||||
- Do not love much or boisterous laughter.
|
||||
- Listen willingly to holy reading.
|
||||
- Devote yourself frequently to prayer.
|
||||
- Daily in your prayers, with tears and sighs, confess your past sins to God, and amend them for the future.
|
||||
- Fulfill not the desires of the flesh; hate your own will.
|
||||
- Obey in all things the commands of those whom God has placed in authority over you even though they (which God forbid) should act otherwise, mindful of the Lord's precept, "Do what they say, but not what they do."
|
||||
- Do not wish to be called holy before one is holy; but first to be holy, that you may be truly so called.
|
||||
- Fulfill God's commandments daily in your deeds.
|
||||
- Love chastity.
|
||||
- Hate no one.
|
||||
- Be not jealous, nor harbor envy.
|
||||
- Do not love quarreling.
|
||||
- Shun arrogance.
|
||||
- Respect your seniors.
|
||||
- Love your juniors.
|
||||
- Pray for your enemies in the love of Christ.
|
||||
- Make peace with your adversary before the sun sets.
|
||||
- Never despair of God's mercy.
|
||||
63
content/blog/the-blessing-of-suffering.md
Normal file
@@ -0,0 +1,63 @@
|
||||
---
|
||||
title: The Blessing of Suffering
|
||||
subtitle: Finding Joy in Trials for Christ
|
||||
author: Eric Taylor
|
||||
lang: en
|
||||
toc: true
|
||||
enable-response: true
|
||||
---
|
||||
|
||||
As Christians, we often talk about blessing, joy, and peace. But what about suffering? Is it possible for suffering to *be* a blessing? The Bible says yes. Today we’ll explore how suffering for Christ isn’t something to fear, but something to *rejoice* in.
|
||||
|
||||

|
||||
|
||||
## **A Call to Holiness**
|
||||
|
||||
> But as he which hath called you is holy, so be ye holy in all manner of conversation; Because it is written, Be ye holy; for I am holy. [1 Peter 1:15-16](https://christiananswers.net/bible/1pet1.html#15)
|
||||
|
||||
1 Peter 1:15-16, a clear call to holiness: “But as he which hath called you is holy, so be ye holy in all manner of conversation.” God calls us to live differently, to be set apart, and that difference will inevitably attract attention – and sometimes, persecution.
|
||||
|
||||
## **Christian Suffering: Not a Surprise, But an Expectation**
|
||||
|
||||
1 Peter 4:12-14 is a powerful passage that directly addresses the topic of suffering:
|
||||
|
||||
> “Beloved, think it not strange concerning the fiery trial which is to try you, as though some strange thing happened unto you: But rejoice, inasmuch as ye are partakers of Christ's sufferings; that, when his glory shall be revealed, ye may be glad also with exceeding joy. If ye be reproached for the name of Christ, happy are ye; for the spirit of glory and of God resteth upon you…” [1 Peter 4:12-14 KJV](https://christiananswers.net/bible/1pet4.html#12)
|
||||
|
||||
Peter doesn't tell us to *seek* out suffering, but he urges us not to be surprised when it comes. He reminds us that suffering is *normal* for those who follow Christ. We will look different to the world around us, and that difference will attract opposition. In fact, it’s a better sign to be persecuted than to blend in seamlessly!
|
||||
|
||||
## **Our Response to Christian Suffering**
|
||||
|
||||
How should we respond when suffering comes? There are two paths we can take:
|
||||
|
||||
### **Negative Response: Don't Be Afraid**
|
||||
|
||||
Peter starts by telling us *not* to be surprised (v. 12). This isn't a random event; it’s part of God’s plan and a test of our faith. All believers will experience persecution, and sometimes, hatred.
|
||||
|
||||
### **Positive Response: Rejoice!**
|
||||
|
||||
This might sound counterintuitive, but rejoicing in suffering isn't about enjoying the pain. It's about finding joy in the fact that God is working *in* us and *through* us, even in the midst of difficulty. It’s about recognizing that we are partakers of Christ’s sufferings and that His glory will be revealed.
|
||||
|
||||
## **Fiery Trials: Refining Our Faith**
|
||||
|
||||
<div class="grid">
|
||||
<img height="276px" class="theme-aware-image no-invert" src="./../files/img/slag-pot.png" alt="Slag Pot">
|
||||
<p>Just as a furnace refines precious metals, suffering purifies our faith. The slag , the impurities, get scraped away, leaving behind a stronger, more refined believer. Think of the parable of the soils (Matthew 13). Only the seed that falls on good soil, often after facing hardship, will produce a harvest.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
||||
[Malachi 3:2-3](https://christiananswers.net/bible/mal3.html#2) beautifully illustrates this: “For he is like a refiner's fire, and like fullers' soap: And he shall sit as a refiner and purifier of silver: and he shall purify the sons of Levi, and purge them as gold and silver, that they may offer unto the Lord an offering in righteousness.”
|
||||
|
||||
## **Why Rejoice?**
|
||||
|
||||
* **Proof of Belonging:** Suffering demonstrates that we truly belong to Him.
|
||||
* **Genuine Faith:** When endured, our faith is proven genuine.
|
||||
* **Future Glory:** We rejoice knowing that when His glory is revealed, we will share in that joy.
|
||||
* **Exaltation:** This isn’t just happiness; it’s a joyous leaping for joy!
|
||||
|
||||
### **Another Reason for Rejoicing: Bearing His Name**
|
||||
|
||||
We rejoice because we bear His name. The Holy Spirit rests upon us, providing peace that surpasses understanding. All the fruit of the Spirit: love, joy, peace, patience, kindness, goodness, faithfulness, gentleness, and self-control are available to us to use in order to help us endure. Think of Stephen, who faced martyrdom with grace and forgiveness.
|
||||
|
||||
Don't be surprised if persecution doesn't happen. If you're blending in perfectly with the world, you might be missing out on the blessing of sharing in Christ’s sufferings.
|
||||
|
||||
64
content/blog/trading-everything-for-christ.md
Normal file
@@ -0,0 +1,64 @@
|
||||
---
|
||||
title: Trading Everything for Christ
|
||||
subtitle: A Race Worth Running
|
||||
author: Eric Taylor
|
||||
lang: en
|
||||
toc: true
|
||||
enable-response: true
|
||||
---
|
||||
|
||||
> But what things were gain to me, those I counted loss for Christ. Yea doubtless, and I count all things but loss for the excellency of the knowledge of Christ Jesus my Lord: for whom I have suffered the loss of all things, and do count them but dung, that I may win Christ, And be found in him, not having mine own righteousness, which is of the law, but that which is through the faith of Christ, the righteousness which is of God by faith: That I may know him, and the power of his resurrection, and the fellowship of his sufferings, being made conformable unto his death; If by any means I might attain unto the resurrection of the dead. Not as though I had already attained, either were already perfect: but I follow after, if that I may apprehend that for which also I am apprehended of Christ Jesus. Brethren, I count not myself to have apprehended: but this one thing I do, forgetting those things which are behind, and reaching forth unto those things which are before, I press toward the mark for the prize of the high calling of God in Christ Jesus. Let us therefore, as many as be perfect, be thus minded: and if in any thing ye be otherwise minded, God shall reveal even this unto you.
|
||||
[Philippians 3:7-15 KJV](https://christiananswers.net/bible/phil3.html#7)
|
||||
|
||||
Philippians 3 paints a powerful picture of a life completely surrendered to Christ. Paul, once a highly respected Pharisee, considered everything he had achieved – his lineage, his religious zeal, his status – as utterly worthless compared to knowing Christ. This isn’t a dismissal of good works, but a radical reordering of priorities. It begs the question: what do *we* consider gain, and are we willing to count it all as loss for the sake of Christ?
|
||||
|
||||
## **Acknowledging We Haven't Arrived**
|
||||
|
||||
Paul doesn't present himself as having *arrived* at perfection. In fact, he explicitly states in verse 12, “Not as though I had already attained, either were already perfect…” This is a humbling truth for any believer. We often fall into the trap of comparing ourselves to others or dwelling on past successes, forgetting that our standard is a *perfect* God.
|
||||
|
||||
Think about it – the more we learn about Christ, the more we realize how far we still have to go. It's like John 15:8, where Jesus tells his disciples they will bear *more* fruit when they truly abide in Him. Everything we’ve done, all the “good” we've accomplished, pales in comparison to the surpassing greatness of knowing Christ. It’s not about earning salvation, but about recognizing that *everything* is a gift earned by Him.
|
||||
|
||||
## **Continue Striving Toward the Goal**
|
||||
|
||||
If we haven’t arrived, what do we do? We *press on*. Paul uses vivid language – “I follow after…forgetting those things which are behind, and reaching forth unto those things which are before.” (Philippians 3:13-14) He wasn’t casually strolling; he was *running* a race, fiercely pursuing a prize.
|
||||
|
||||
This pursuit isn’t about willpower or self-improvement. It’s about responding to the fact that Christ *laid hold* of us, and now we make Him the relentless pursuit of our lives. He saved us for a purpose, and that purpose fuels our growth and conformity to His image (1 Timothy 2:11).
|
||||
|
||||
## **What Distracts Us From the Race?**
|
||||
|
||||
The challenge is, the race is littered with distractions. We’re tempted to look back:
|
||||
|
||||
* **Past Failures and Sins:** Dwelling on what we've done wrong can paralyze us.
|
||||
* **Past Regrets:** “What ifs” steal our joy and focus.
|
||||
* **Past Successes:** We can become complacent, resting on former glories.
|
||||
|
||||
Remember the proverb: "If you chase two rabbits, you will not catch either.” We must fix our eyes on the prize and resist the urge to look backward.
|
||||
|
||||
Hebrews 12:1-2 beautifully illustrates this: "…let us run with patience the race that is set before us, looking unto Jesus..." It’s a challenging race, full of trials and hardships, but the reward is infinitely worth it.
|
||||
|
||||
> Wherefore seeing we also are compassed about with so great a cloud of witnesses, let us lay aside every weight, and the sin which doth so easily beset us, and let us run with patience the race that is set before us, Looking unto Jesus the author and finisher of our faith; who for the joy that was set before him endured the cross, despising the shame, and is set down at the right hand of the throne of God. [Hebrews 12:1-2 KJV](https://christiananswers.net/bible/heb12.html#1)
|
||||
|
||||
## **Christ: The Ultimate Prize**
|
||||
|
||||
What *is* the prize? It’s not simply heaven, although that is a glorious promise. It’s Christ Himself. Paul longed to *behold* Him, to *be like* Him, to *know* Him (1 Timothy 4:7).
|
||||
|
||||
Ephesians 4:12-13 speaks of believers maturing to "the measure of the stature of the fullness of Christ." We aren't called to simply *walk* toward the prize, but to *run* with all our strength!
|
||||
|
||||
## **Following Heavenly Examples**
|
||||
|
||||
Paul encourages those who are “perfect” (mature) to be “thus minded” and calls on God to reveal even further truth to those who disagree (Philippians 3:15). This highlights the importance of godly leadership and following the example of those who are further along in their faith.
|
||||
|
||||
It's a powerful reminder that life *is* a race, and Christ is the prize. God will redirect us if our eyes wander, keeping us aligned with His purpose. We don't need to add our own works or follow false teachings – His Word is complete.
|
||||
|
||||
## **Are *You* Running?**
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
Are you truly running this race? It requires a radical reordering of priorities. You can't run if you don't treasure Christ above all else. He demands perfection, not as a standard to *achieve* for salvation, but as a goal to *pursue* in gratitude for it.
|
||||
|
||||
What changes need to be made in your life so you can run faster, with greater focus and unwavering devotion?
|
||||
|
||||
**Life is a race Christ is the prize.**
|
||||
|
||||
822
content/files/css/index.css
Normal file
@@ -0,0 +1,822 @@
|
||||
/* ==========================================================================
|
||||
Fonts
|
||||
========================================================================== */
|
||||
|
||||
@import url('https://fonts.cdnfonts.com/css/jetbrains-mono-2');
|
||||
|
||||
/* ==========================================================================
|
||||
Berkeley Mono™
|
||||
© Copyright 2025, U.S. Graphics, LLC.
|
||||
Licensed under SKU LT-02 to Eric Taylor (Taylor IT Solutions LLC)
|
||||
https://usgraphics.com/products/berkeley-mono
|
||||
========================================================================== */
|
||||
|
||||
@font-face {
|
||||
font-family: 'Berkeley Mono';
|
||||
src: url('http://erictaylor.me/files/font/BerkeleyMono-Regular.woff2') format('woff2'),
|
||||
url('http://erictaylor.me/files/font/BerkeleyMono-Regular.woff') format('woff');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Berkeley Mono';
|
||||
src: url('http://erictaylor.me/files/font/BerkeleyMono-Bold.woff2') format('woff2'),
|
||||
url('http://erictaylor.me/files/font/BerkeleyMono-Bold.woff') format('woff');
|
||||
font-weight: bold;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Berkeley Mono';
|
||||
src: url('http://erictaylor.me/files/font/BerkeleyMono-Italic.woff2') format('woff2'),
|
||||
url('http://erictaylor.me/files/font/BerkeleyMono-Italic.woff') format('woff');
|
||||
font-weight: normal;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
/* ==========================================================================
|
||||
Base & Variables
|
||||
========================================================================== */
|
||||
|
||||
@font-face {
|
||||
font-family: 'Berkeley Mono';
|
||||
src: url('http://erictaylor.me/files/font/BerkeleyMono-BoldItalic.woff2') format('woff2'),
|
||||
url('http://erictaylor.me/files/font/BerkeleyMono-BoldItalic.woff') format('woff');
|
||||
font-weight: bold;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
:root {
|
||||
--font-family: "Berkeley Mono", "JetBrains Mono", "Cascadia Code", "Fira Code", "Source Code Pro",
|
||||
Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
|
||||
--line-height: 1.20rem;
|
||||
--border-thickness: 2px;
|
||||
--text-color: #000;
|
||||
--text-color-alt: #666;
|
||||
--background-color: #fff;
|
||||
--background-color-alt: #eee;
|
||||
|
||||
--font-weight-normal: 500;
|
||||
--font-weight-medium: 600;
|
||||
--font-weight-bold: 800;
|
||||
|
||||
font-family: var(--font-family);
|
||||
font-optical-sizing: auto;
|
||||
font-weight: var(--font-weight-normal);
|
||||
font-style: normal;
|
||||
font-variant-numeric: tabular-nums lining-nums;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
:root {
|
||||
--text-color: #fff;
|
||||
--text-color-alt: #aaa;
|
||||
--background-color: #000;
|
||||
--background-color-alt: #222;
|
||||
}
|
||||
}
|
||||
|
||||
[data-theme="dark"] {
|
||||
--text-color: #fff;
|
||||
--text-color-alt: #aaa;
|
||||
--background-color: #000;
|
||||
--background-color-alt: #222;
|
||||
}
|
||||
|
||||
[data-theme="light"] {
|
||||
--text-color: #000;
|
||||
--text-color-alt: #666;
|
||||
--background-color: #fff;
|
||||
--background-color-alt: #eee;
|
||||
}
|
||||
|
||||
* {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
*+* {
|
||||
margin-top: var(--line-height);
|
||||
}
|
||||
|
||||
.theme-toggle {
|
||||
cursor: pointer;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
vertical-align: middle;
|
||||
width: 1.5ch;
|
||||
height: 1.5ch;
|
||||
margin: 0 0 0 0;
|
||||
}
|
||||
|
||||
.theme-toggle svg {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
fill: var(--text-color);
|
||||
}
|
||||
|
||||
.theme-toggle:hover svg {
|
||||
fill: var(--text-color-alt);
|
||||
}
|
||||
|
||||
/* ==========================================================================
|
||||
Layout & Grid
|
||||
========================================================================== */
|
||||
|
||||
html {
|
||||
display: flex;
|
||||
width: 100%;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
background: var(--background-color);
|
||||
color: var(--text-color);
|
||||
}
|
||||
|
||||
body {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
margin: 0;
|
||||
padding: var(--line-height) 2ch;
|
||||
max-width: calc(min(80ch, round(down, 100%, 1ch)));
|
||||
line-height: var(--line-height);
|
||||
overflow-x: hidden;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 480px) {
|
||||
:root {
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
body {
|
||||
padding: var(--line-height) 1ch;
|
||||
}
|
||||
}
|
||||
|
||||
@media print {
|
||||
.page, .page-break { break-after: page; }
|
||||
}
|
||||
|
||||
/* Override universal margins for grid */
|
||||
.grid {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
.grid>* {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
/* Fix grid spacing */
|
||||
.grid {
|
||||
--grid-cells: 0;
|
||||
display: flex;
|
||||
gap: 1ch;
|
||||
width: calc(round(down, 100%, (1ch * var(--grid-cells)) - (1ch * var(--grid-cells) - 1)));
|
||||
margin-bottom: var(--line-height);
|
||||
}
|
||||
|
||||
.grid>*,
|
||||
.grid>input {
|
||||
flex: 0 0 calc(round(down, (100% - (1ch * (var(--grid-cells) - 1))) / var(--grid-cells), 1ch));
|
||||
}
|
||||
|
||||
.grid:has(> :last-child:nth-child(1)) {
|
||||
--grid-cells: 1;
|
||||
}
|
||||
|
||||
.grid:has(> :last-child:nth-child(2)) {
|
||||
--grid-cells: 2;
|
||||
}
|
||||
|
||||
.grid:has(> :last-child:nth-child(3)) {
|
||||
--grid-cells: 3;
|
||||
}
|
||||
|
||||
.grid:has(> :last-child:nth-child(4)) {
|
||||
--grid-cells: 4;
|
||||
}
|
||||
|
||||
.grid:has(> :last-child:nth-child(5)) {
|
||||
--grid-cells: 5;
|
||||
}
|
||||
|
||||
.grid:has(> :last-child:nth-child(6)) {
|
||||
--grid-cells: 6;
|
||||
}
|
||||
|
||||
.grid:has(> :last-child:nth-child(7)) {
|
||||
--grid-cells: 7;
|
||||
}
|
||||
|
||||
.grid:has(> :last-child:nth-child(8)) {
|
||||
--grid-cells: 8;
|
||||
}
|
||||
|
||||
.grid:has(> :last-child:nth-child(9)) {
|
||||
--grid-cells: 9;
|
||||
}
|
||||
|
||||
/* ==========================================================================
|
||||
Typography
|
||||
========================================================================== */
|
||||
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6 {
|
||||
font-weight: var(--font-weight-bold);
|
||||
margin: calc(var(--line-height) * 2) 0 var(--line-height);
|
||||
line-height: var(--line-height);
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 2rem;
|
||||
line-height: calc(2 * var(--line-height));
|
||||
margin-bottom: calc(var(--line-height) * 2);
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 1rem;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.header-anchor {
|
||||
opacity: 0;
|
||||
text-decoration: none;
|
||||
margin-left: 1ch;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
h1:hover .header-anchor,
|
||||
h2:hover .header-anchor,
|
||||
h3:hover .header-anchor,
|
||||
h4:hover .header-anchor,
|
||||
h5:hover .header-anchor,
|
||||
h6:hover .header-anchor {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
hr {
|
||||
position: relative;
|
||||
display: block;
|
||||
height: var(--line-height);
|
||||
margin: calc(var(--line-height) * 1.5) 0;
|
||||
border: none;
|
||||
color: var(--text-color);
|
||||
}
|
||||
|
||||
hr:after {
|
||||
display: block;
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: calc(var(--line-height) / 2 - var(--border-thickness));
|
||||
left: 0;
|
||||
width: 100%;
|
||||
border-top: calc(var(--border-thickness) * 3) double var(--text-color);
|
||||
height: 0;
|
||||
}
|
||||
|
||||
hr.thin {
|
||||
position: relative;
|
||||
height: var(--line-height);
|
||||
margin: var(--line-height) 0;
|
||||
}
|
||||
|
||||
hr.thin:after {
|
||||
display: block;
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: calc(var(--line-height) / 2);
|
||||
left: 0;
|
||||
width: 100%;
|
||||
border-top: var(--border-thickness) solid var(--text-color-alt);
|
||||
height: 0;
|
||||
}
|
||||
|
||||
p {
|
||||
word-break: break-word;
|
||||
word-wrap: break-word;
|
||||
hyphens: auto;
|
||||
margin-bottom: var(--line-height);
|
||||
}
|
||||
|
||||
strong {
|
||||
font-weight: var(--font-weight-bold);
|
||||
}
|
||||
|
||||
em {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
a {
|
||||
text-decoration-thickness: var(--border-thickness);
|
||||
}
|
||||
|
||||
a:link,
|
||||
a:visited {
|
||||
color: var(--text-color);
|
||||
}
|
||||
|
||||
sub {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
margin: 0;
|
||||
vertical-align: sub;
|
||||
line-height: 0;
|
||||
width: calc(1ch / 0.75);
|
||||
font-size: .75rem;
|
||||
}
|
||||
|
||||
/* ==========================================================================
|
||||
Components
|
||||
========================================================================== */
|
||||
|
||||
|
||||
/* Tables */
|
||||
table {
|
||||
position: relative;
|
||||
top: calc(var(--line-height) / 2);
|
||||
width: calc(round(down, 100%, 1ch));
|
||||
border-collapse: collapse;
|
||||
margin: 0 0 calc(var(--line-height) * 2);
|
||||
}
|
||||
|
||||
th,
|
||||
td {
|
||||
border: var(--border-thickness) solid var(--text-color);
|
||||
padding:
|
||||
calc((var(--line-height) / 2)) calc(1ch - var(--border-thickness) / 2) calc((var(--line-height) / 2) - (var(--border-thickness)));
|
||||
line-height: var(--line-height);
|
||||
vertical-align: top;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
table tbody tr:first-child>* {
|
||||
padding-top: calc((var(--line-height) / 2) - var(--border-thickness));
|
||||
}
|
||||
|
||||
th {
|
||||
font-weight: var(--font-weight-bold);
|
||||
}
|
||||
|
||||
/* Forms */
|
||||
input,
|
||||
button,
|
||||
textarea {
|
||||
border: var(--border-thickness) solid var(--text-color);
|
||||
padding: calc(var(--line-height) / 2 - var(--border-thickness)) calc(1ch - var(--border-thickness));
|
||||
margin: 0;
|
||||
font: inherit;
|
||||
font-weight: inherit;
|
||||
height: calc(var(--line-height) * 2);
|
||||
width: auto;
|
||||
overflow: visible;
|
||||
background: var(--background-color);
|
||||
color: var(--text-color);
|
||||
line-height: normal;
|
||||
-webkit-font-smoothing: inherit;
|
||||
-moz-osx-font-smoothing: inherit;
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
|
||||
input[type=checkbox],
|
||||
input[type=radio] {
|
||||
display: inline-grid;
|
||||
place-content: center;
|
||||
vertical-align: top;
|
||||
width: 2ch;
|
||||
height: var(--line-height);
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
input[type=checkbox]:checked:before,
|
||||
input[type=radio]:checked:before {
|
||||
content: "";
|
||||
width: 1ch;
|
||||
height: calc(var(--line-height) / 2);
|
||||
background: var(--text-color);
|
||||
}
|
||||
|
||||
input[type=radio],
|
||||
input[type=radio]:before {
|
||||
border-radius: 100%;
|
||||
}
|
||||
|
||||
button:focus,
|
||||
input:focus {
|
||||
--border-thickness: 3px;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
input {
|
||||
width: calc(round(down, 100%, 1ch));
|
||||
}
|
||||
|
||||
::placeholder {
|
||||
color: var(--text-color-alt);
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
::-ms-input-placeholder {
|
||||
color: var(--text-color-alt);
|
||||
}
|
||||
|
||||
button::-moz-focus-inner {
|
||||
padding: 0;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
button {
|
||||
text-transform: uppercase;
|
||||
font-weight: var(--font-weight-medium);
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
button:hover {
|
||||
background: var(--background-color-alt);
|
||||
}
|
||||
|
||||
button:active {
|
||||
transform: translate(2px, 2px);
|
||||
}
|
||||
|
||||
label {
|
||||
display: block;
|
||||
width: calc(round(down, 100%, 1ch));
|
||||
height: auto;
|
||||
line-height: var(--line-height);
|
||||
font-weight: var(--font-weight-medium);
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
label input {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.tree, .tree ul {
|
||||
position: relative;
|
||||
padding-left: 0;
|
||||
list-style-type: none;
|
||||
line-height: var(--line-height);
|
||||
}
|
||||
.tree ul {
|
||||
margin: 0;
|
||||
}
|
||||
.tree ul li {
|
||||
position: relative;
|
||||
padding-left: 1.5ch;
|
||||
margin-left: calc(1.5ch - var(--border-thickness));
|
||||
border-left: var(--border-thickness) solid var(--text-color);
|
||||
}
|
||||
.tree ul li:before {
|
||||
position: absolute;
|
||||
display: block;
|
||||
top: calc(var(--line-height) / 2);
|
||||
left: 0;
|
||||
content: "";
|
||||
width: 1ch;
|
||||
border-bottom: var(--border-thickness) solid var(--text-color);
|
||||
}
|
||||
.tree ul li:last-child {
|
||||
border-left: none;
|
||||
padding-left: calc(1.5ch + var(--border-thickness));
|
||||
}
|
||||
.tree ul li:last-child:after {
|
||||
position: absolute;
|
||||
display: block;
|
||||
top: 0;
|
||||
left: 0;
|
||||
content: "";
|
||||
height: calc(var(--line-height) / 2);
|
||||
border-left: var(--border-thickness) solid var(--text-color);
|
||||
}
|
||||
|
||||
/* Code Blocks */
|
||||
pre {
|
||||
white-space: pre;
|
||||
overflow-x: auto;
|
||||
margin: var(--line-height) 0;
|
||||
overflow-y: hidden;
|
||||
}
|
||||
|
||||
pre,
|
||||
code {
|
||||
font-family: var(--font-family);
|
||||
}
|
||||
|
||||
code {
|
||||
font-weight: var(--font-weight-medium);
|
||||
}
|
||||
|
||||
code:not(pre code) {
|
||||
background: var(--background-color-alt);
|
||||
padding: 0 0.5ch;
|
||||
border-radius: 2px;
|
||||
font-size: 0.95em;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
pre code {
|
||||
display: block;
|
||||
padding: calc(var(--line-height) / 2) 2ch;
|
||||
background: var(--background-color-alt);
|
||||
border-radius: 2px;
|
||||
overflow-x: auto;
|
||||
line-height: var(--line-height);
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
pre code::-webkit-scrollbar {
|
||||
height: calc(var(--line-height) / 2);
|
||||
}
|
||||
|
||||
pre code::-webkit-scrollbar-thumb {
|
||||
background: var(--text-color-alt);
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
pre code::-webkit-scrollbar-track {
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
/* Lists */
|
||||
ul,
|
||||
ol {
|
||||
padding: 0;
|
||||
margin: 0 0 var(--line-height);
|
||||
}
|
||||
|
||||
ul {
|
||||
list-style-type: square;
|
||||
padding: 0 0 0 2ch;
|
||||
}
|
||||
|
||||
ol {
|
||||
list-style-type: none;
|
||||
counter-reset: item;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
ol ul,
|
||||
ol ol,
|
||||
ul ol,
|
||||
ul ul {
|
||||
padding: 0 0 0 3ch;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
ol li:before {
|
||||
content: counters(item, ".") ". ";
|
||||
counter-increment: item;
|
||||
font-weight: var(--font-weight-medium);
|
||||
}
|
||||
|
||||
li {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
li::marker {
|
||||
line-height: 0;
|
||||
}
|
||||
|
||||
/* Blockquotes */
|
||||
blockquote {
|
||||
margin: var(--line-height) 3ch;
|
||||
padding-left: 2ch;
|
||||
border-left: var(--border-thickness) solid var(--text-color);
|
||||
color: var(--text-color-alt);
|
||||
}
|
||||
|
||||
blockquote p {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
blockquote+blockquote {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
/* Details */
|
||||
details {
|
||||
border: var(--border-thickness) solid var(--text-color);
|
||||
padding: calc(var(--line-height) - var(--border-thickness)) 1ch;
|
||||
margin-bottom: var(--line-height);
|
||||
}
|
||||
|
||||
summary {
|
||||
font-weight: var(--font-weight-medium);
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
details[open] summary {
|
||||
margin-bottom: var(--line-height);
|
||||
}
|
||||
|
||||
details ::marker {
|
||||
display: inline-block;
|
||||
content: '▶';
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
details[open] ::marker {
|
||||
content: '▼';
|
||||
}
|
||||
|
||||
details :last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
/* Media */
|
||||
img,
|
||||
video {
|
||||
display: block;
|
||||
width: 100%;
|
||||
object-fit: contain;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
img {
|
||||
font-style: italic;
|
||||
color: var(--text-color-alt);
|
||||
}
|
||||
|
||||
figure {
|
||||
margin: calc(var(--line-height) * 2) 3ch;
|
||||
overflow-x: auto;
|
||||
overflow-y: hidden;
|
||||
}
|
||||
|
||||
figcaption {
|
||||
display: block;
|
||||
font-style: italic;
|
||||
margin-top: var(--line-height);
|
||||
}
|
||||
|
||||
/* ==========================================================================
|
||||
Utilities
|
||||
========================================================================== */
|
||||
|
||||
.width-min {
|
||||
width: 0%;
|
||||
}
|
||||
|
||||
.width-auto {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.header {
|
||||
margin-bottom: calc(var(--line-height) * 2);
|
||||
}
|
||||
|
||||
.header h1 {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.header tr td:last-child {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
|
||||
/* ==========================================================================
|
||||
Debug
|
||||
========================================================================== */
|
||||
|
||||
.debug .debug-grid {
|
||||
--color: color-mix(in srgb, var(--text-color) 10%, var(--background-color) 90%);
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
z-index: -1;
|
||||
background-image:
|
||||
repeating-linear-gradient(var(--color) 0 1px, transparent 1px 100%),
|
||||
repeating-linear-gradient(90deg, var(--color) 0 1px, transparent 1px 100%);
|
||||
background-size: 1ch var(--line-height);
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.debug .off-grid {
|
||||
background: rgba(255, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
.debug-toggle-label {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
|
||||
/* ==========================================================================
|
||||
Miscellaneous
|
||||
========================================================================== */
|
||||
|
||||
/* Product Cards */
|
||||
.product-card {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.product-card > *:not(nav) {
|
||||
flex: 1 0 auto;
|
||||
}
|
||||
|
||||
.product-card nav {
|
||||
display: flex;
|
||||
gap: 1ch;
|
||||
align-items: stretch;
|
||||
margin-top: auto;
|
||||
}
|
||||
|
||||
.product-card nav a {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding: calc(var(--line-height) / 4) 0;
|
||||
background: var(--background-color-alt);
|
||||
text-decoration: none;
|
||||
min-height: calc(var(--line-height) * 1.5);
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
.product-card nav a:hover {
|
||||
background: var(--text-color);
|
||||
color: var(--background-color);
|
||||
}
|
||||
|
||||
.product-card {
|
||||
border: var(--border-thickness) solid var(--text-color);
|
||||
padding: calc(var(--line-height) - var(--border-thickness)) 1ch;
|
||||
width: 100%;
|
||||
margin-top: var(--line-height);
|
||||
}
|
||||
|
||||
.product-card img, .product-card video {
|
||||
margin: 0 -1ch;
|
||||
width: calc(100% + 2ch);
|
||||
max-height: calc(var(--line-height) * 8);
|
||||
object-fit: cover;
|
||||
}
|
||||
|
||||
.product-card h3 {
|
||||
margin-top: var(--line-height);
|
||||
margin-bottom: 0;
|
||||
font-weight: var(--font-weight-bold);
|
||||
}
|
||||
|
||||
.product-card p {
|
||||
color: var(--text-color-alt);
|
||||
margin-bottom: var(--line-height);
|
||||
}
|
||||
|
||||
.product-card table {
|
||||
font-size: 0.9em;
|
||||
margin-bottom: var(--line-height);
|
||||
}
|
||||
|
||||
/* Override the universal margin for nav elements and their children */
|
||||
nav,
|
||||
nav + *,
|
||||
nav > *,
|
||||
nav > * + * {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
/* Also override for nav when it's inside a product-card */
|
||||
.product-card nav {
|
||||
margin-top: auto; /* This pushes the nav to the bottom while removing the default margin */
|
||||
}
|
||||
|
||||
/* Ensure nav children (links/buttons) don't have top margin */
|
||||
.product-card nav > * {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
|
||||
/* Transformations */
|
||||
.rotate-90 {
|
||||
transform: rotate(90deg);
|
||||
transform-origin: center center;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
/* theme-aware images */
|
||||
.theme-aware-image {
|
||||
filter: none;
|
||||
}
|
||||
|
||||
[data-theme="dark"] .theme-aware-image:not(.no-invert) {
|
||||
filter: invert(1) hue-rotate(180deg);
|
||||
}
|
||||
|
||||
/* Optional: Add specific adjustments for certain images if needed */
|
||||
[data-theme="dark"] .theme-aware-image.adjust-contrast {
|
||||
filter: invert(1) hue-rotate(180deg) contrast(0.8);
|
||||
}
|
||||
48
content/files/css/reset.css
Normal file
@@ -0,0 +1,48 @@
|
||||
/* http://meyerweb.com/eric/tools/css/reset/
|
||||
v2.0 | 20110126
|
||||
License: none (public domain)
|
||||
*/
|
||||
|
||||
html, body, div, span, applet, object, iframe,
|
||||
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
|
||||
a, abbr, acronym, address, big, cite, code,
|
||||
del, dfn, em, img, ins, kbd, q, s, samp,
|
||||
small, strike, strong, sub, sup, tt, var,
|
||||
b, u, i, center,
|
||||
dl, dt, dd, ol, ul, li,
|
||||
fieldset, form, label, legend,
|
||||
table, caption, tbody, tfoot, thead, tr, th, td,
|
||||
article, aside, canvas, details, embed,
|
||||
figure, figcaption, footer, header, hgroup,
|
||||
menu, nav, output, ruby, section, summary,
|
||||
time, mark, audio, video {
|
||||
/*margin: 0;*/
|
||||
padding: 0;
|
||||
border: 0;
|
||||
font-size: 100%;
|
||||
font: inherit;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
/* HTML5 display-role reset for older browsers */
|
||||
article, aside, details, figcaption, figure,
|
||||
footer, header, hgroup, menu, nav, section {
|
||||
display: block;
|
||||
}
|
||||
body {
|
||||
line-height: 1;
|
||||
}
|
||||
ol, ul {
|
||||
list-style: none;
|
||||
}
|
||||
blockquote, q {
|
||||
quotes: none;
|
||||
}
|
||||
blockquote:before, blockquote:after,
|
||||
q:before, q:after {
|
||||
content: '';
|
||||
content: none;
|
||||
}
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0;
|
||||
}
|
||||
13
content/files/eric-taylor.asc
Normal file
@@ -0,0 +1,13 @@
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
mDMEYPuwoBYJKwYBBAHaRw8BAQdA0o4SMwujFo4me0pY/KZwsl8OapGixHt7JeSk
|
||||
q3EY6bK0EzxlcmljQHRheWxvcnMubGlmZT6IiwQQFggAMwIZAQUCYPuwoAIbAwQL
|
||||
CQgHBhUICQoLAgMWAgEWIQSOLnHXzCf2q8YL9YDnB41H4BDimAAKCRDnB41H4BDi
|
||||
mKGKAQCB7x/JKdvB86WYXSHllbPHe8F9BythI7kCsfSctX5JOAEAuYLXle9eVq0T
|
||||
7pzroQio0UxSd3nMbwNpn6lsjXBQfA+4OARg+7CgEgorBgEEAZdVAQUBAQdAJtEu
|
||||
vle4g4RvUz8hVKGccuxe4yDN7s33mFehysaK0DYDAQgHiHgEGBYIACAFAmD7sKAC
|
||||
GwwWIQSOLnHXzCf2q8YL9YDnB41H4BDimAAKCRDnB41H4BDimALWAPsFBaBRyXL+
|
||||
Ezrx3gUOJWyNFyDBPaW5tL6FqZdwY3ORCQD6Ajww2CwOUIFlbB6JJImc/TLe5GA6
|
||||
VgO+I+9vbeMEmwE=
|
||||
=RgtN
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
BIN
content/files/img/1_atom.png
Normal file
|
After Width: | Height: | Size: 251 B |
BIN
content/files/img/1_clipart.png
Normal file
|
After Width: | Height: | Size: 255 B |
BIN
content/files/img/1_saturn.png
Normal file
|
After Width: | Height: | Size: 918 B |
|
After Width: | Height: | Size: 108 KiB |
BIN
content/files/img/2_macintosh.png
Normal file
|
After Width: | Height: | Size: 2.6 KiB |
BIN
content/files/img/2_mail_compose.png
Normal file
|
After Width: | Height: | Size: 161 B |
BIN
content/files/img/2_small_speech.png
Normal file
|
After Width: | Height: | Size: 197 B |
BIN
content/files/img/3_compact.png
Normal file
|
After Width: | Height: | Size: 98 B |
BIN
content/files/img/4_clockman.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
content/files/img/4_shoe.png
Normal file
|
After Width: | Height: | Size: 412 B |
BIN
content/files/img/5_globe.png
Normal file
|
After Width: | Height: | Size: 694 B |
BIN
content/files/img/5_ruler.png
Normal file
|
After Width: | Height: | Size: 235 B |
BIN
content/files/img/apple-touch-icon.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
content/files/img/eric-jaime.gif
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
content/files/img/favicon-96x96.png
Normal file
|
After Width: | Height: | Size: 808 B |
BIN
content/files/img/favicon.ico
Normal file
|
After Width: | Height: | Size: 15 KiB |
3
content/files/img/favicon.svg
Normal file
@@ -0,0 +1,3 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 200 200"><rect width="200" height="200" fill="url('#gradient')"></rect><defs><linearGradient id="SvgjsLinearGradient1001" gradientTransform="rotate(107 0.5 0.5)"><stop offset="0%" stop-color="#000000"></stop><stop offset="100%" stop-color="#191819"></stop></linearGradient></defs><g><g fill="#ffffff" transform="matrix(7.007016024252923,0,0,7.007016024252923,13.49475061577499,149.81925973446147)" stroke="#ffffff" stroke-width="0.95"><path d="M9.89-8.57L9.89-6.03L4.50-6.03L4.50-2.64L10.87-2.64L10.87 0L1.07 0L1.07-14.22L10.89-14.22L10.89-11.57L4.50-11.57L4.50-8.57L9.89-8.57ZM23.62-14.22L23.62-11.57L19.36-11.57L19.36 0L15.93 0L15.93-11.57L11.74-11.57L11.74-14.22L23.62-14.22Z"></path></g></g></svg><style>@media (prefers-color-scheme: light) { :root { filter: none; } }
|
||||
@media (prefers-color-scheme: dark) { :root { filter: none; } }
|
||||
</style></svg>
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
BIN
content/files/img/job-suffering.png
Normal file
|
After Width: | Height: | Size: 27 KiB |
65
content/files/img/mail-message-new.svg
Normal file
|
After Width: | Height: | Size: 22 KiB |
69
content/files/img/mail-unread.svg
Normal file
@@ -0,0 +1,69 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
id="svg1180"
|
||||
width="640px"
|
||||
version="1.1"
|
||||
height="640px"
|
||||
sodipodi:docname="chicago95_tmp_file.svg"
|
||||
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)">
|
||||
<sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="640"
|
||||
inkscape:window-height="480"
|
||||
id="namedview593"
|
||||
showgrid="false"
|
||||
inkscape:zoom="0.36875"
|
||||
inkscape:cx="320"
|
||||
inkscape:cy="320"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="0"
|
||||
inkscape:current-layer="svg1180" />
|
||||
<metadata
|
||||
id="metadata1184">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<defs
|
||||
id="defs2" />
|
||||
<path
|
||||
style="fill:#c0c0c0"
|
||||
d="M 60 180 L 60 201 L 80 201 L 80 221 L 100 221 L 100 241 L 120 241 L 120 261 L 140 261 L 140 281 L 160 281 L 160 301 L 180 301 L 180 320 L 180 321 L 180 340 L 160 340 L 160 360 L 140 360 L 140 380 L 120 380 L 120 400 L 100 400 L 100 420 L 80 420 L 80 440 L 60 440 L 60 461 L 81 461 L 81 441 L 101 441 L 101 421 L 121 421 L 121 401 L 141 401 L 141 381 L 161 381 L 161 361 L 181 361 L 181 341 L 200 341 L 201 341 L 220 341 L 220 361 L 240 361 L 240 381 L 260 381 L 260 401 L 280 401 L 281 401 L 300 401 L 301 401 L 320 401 L 321 401 L 340 401 L 341 401 L 361 401 L 361 381 L 380 381 L 381 381 L 401 381 L 401 361 L 421 361 L 421 341 L 440 341 L 440 361 L 460 361 L 460 381 L 480 381 L 480 401 L 500 401 L 500 421 L 520 421 L 520 441 L 540 441 L 540 461 L 561 461 L 561 440 L 541 440 L 541 420 L 521 420 L 521 400 L 501 400 L 501 380 L 481 380 L 481 360 L 461 360 L 461 340 L 441 340 L 441 321 L 441 320 L 441 301 L 461 301 L 461 281 L 481 281 L 481 261 L 501 261 L 501 241 L 521 241 L 521 221 L 541 221 L 541 201 L 561 201 L 561 180 L 540 180 L 540 200 L 520 200 L 520 220 L 500 220 L 500 240 L 480 240 L 480 260 L 460 260 L 460 280 L 440 280 L 440 300 L 420 300 L 420 320 L 400 320 L 400 340 L 380 340 L 380 360 L 360 360 L 360 380 L 341 380 L 340 380 L 321 380 L 320 380 L 301 380 L 300 380 L 281 380 L 280 380 L 261 380 L 261 360 L 241 360 L 241 340 L 221 340 L 221 320 L 201 320 L 201 300 L 181 300 L 181 280 L 161 280 L 161 260 L 141 260 L 141 240 L 121 240 L 121 220 L 101 220 L 101 200 L 81 200 L 81 180 L 60 180 z "
|
||||
id="rect950" />
|
||||
<path
|
||||
style="fill:#ffff00"
|
||||
d="M 520 140 L 520 161 L 541 161 L 541 140 L 520 140 z M 480 160 L 480 181 L 501 181 L 501 160 L 480 160 z M 480 200 L 480 221 L 501 221 L 501 200 L 480 200 z M 440 220 L 440 241 L 461 241 L 461 220 L 440 220 z M 520 220 L 520 241 L 541 241 L 541 220 L 520 220 z M 400 240 L 400 261 L 421 261 L 421 240 L 400 240 z M 520 260 L 520 281 L 541 281 L 541 260 L 520 260 z M 400 280 L 400 301 L 421 301 L 421 280 L 400 280 z M 480 280 L 480 301 L 501 301 L 501 280 L 480 280 z M 360 300 L 360 321 L 381 321 L 381 300 L 360 300 z M 440 300 L 440 321 L 461 321 L 461 300 L 440 300 z M 520 300 L 520 321 L 541 321 L 541 300 L 520 300 z M 160 320 L 160 341 L 181 341 L 181 320 L 160 320 z M 240 320 L 240 341 L 261 341 L 261 320 L 240 320 z M 280 320 L 280 341 L 301 341 L 301 320 L 280 320 z M 320 320 L 320 341 L 341 341 L 341 320 L 320 320 z M 480 320 L 480 341 L 501 341 L 501 320 L 480 320 z M 120 340 L 120 361 L 141 361 L 141 340 L 120 340 z M 520 340 L 520 361 L 541 361 L 541 340 L 520 340 z M 160 360 L 160 381 L 181 381 L 181 360 L 160 360 z M 400 360 L 400 381 L 421 381 L 421 360 L 400 360 z M 480 360 L 480 381 L 501 381 L 501 360 L 480 360 z M 200 380 L 200 401 L 221 401 L 221 380 L 200 380 z M 360 380 L 360 401 L 381 401 L 381 380 L 360 380 z M 440 380 L 440 401 L 461 401 L 461 380 L 440 380 z M 520 380 L 520 401 L 541 401 L 541 380 L 520 380 z M 80 400 L 80 421 L 101 421 L 101 400 L 80 400 z M 240 400 L 240 421 L 261 421 L 261 400 L 240 400 z M 320 400 L 320 421 L 341 421 L 341 400 L 320 400 z M 400 400 L 400 421 L 421 421 L 421 400 L 400 400 z M 480 400 L 480 421 L 501 421 L 501 400 L 480 400 z M 120 420 L 120 441 L 141 441 L 141 420 L 120 420 z M 200 420 L 200 441 L 221 441 L 221 420 L 200 420 z M 280 420 L 280 441 L 301 441 L 301 420 L 280 420 z M 360 420 L 360 441 L 381 441 L 381 420 L 360 420 z M 440 420 L 440 441 L 461 441 L 461 420 L 440 420 z M 160 440 L 160 461 L 181 461 L 181 440 L 160 440 z M 240 440 L 240 461 L 261 461 L 261 440 L 240 440 z M 320 440 L 320 461 L 341 461 L 341 440 L 320 440 z M 400 440 L 400 461 L 421 461 L 421 440 L 400 440 z M 480 440 L 480 461 L 501 461 L 501 440 L 480 440 z M 200 460 L 200 481 L 221 481 L 221 460 L 200 460 z M 280 460 L 280 481 L 301 481 L 301 460 L 280 460 z M 360 460 L 360 481 L 381 481 L 381 460 L 360 460 z M 440 460 L 440 481 L 461 481 L 461 460 L 440 460 z M 520 460 L 520 481 L 541 481 L 541 460 L 520 460 z M 80 480 L 80 501 L 101 501 L 101 480 L 80 480 z M 160 480 L 160 501 L 181 501 L 181 480 L 160 480 z M 240 480 L 240 501 L 261 501 L 261 480 L 240 480 z M 320 480 L 320 501 L 341 501 L 341 480 L 320 480 z M 400 480 L 400 501 L 421 501 L 421 480 L 400 480 z M 480 480 L 480 501 L 501 501 L 501 480 L 480 480 z "
|
||||
id="rect1056" />
|
||||
<path
|
||||
style="fill:#ffffff"
|
||||
d="M 60 140 L 60 161 L 80 161 L 80 181 L 100 181 L 100 201 L 120 201 L 120 221 L 140 221 L 140 241 L 160 241 L 160 261 L 180 261 L 180 281 L 200 281 L 200 301 L 220 301 L 220 321 L 240 321 L 241 321 L 260 321 L 260 340 L 260 341 L 260 361 L 280 361 L 281 361 L 300 361 L 301 361 L 320 361 L 321 361 L 340 361 L 341 361 L 361 361 L 361 341 L 381 341 L 381 321 L 401 321 L 401 301 L 401 300 L 401 281 L 420 281 L 421 281 L 441 281 L 441 261 L 461 261 L 461 241 L 481 241 L 481 221 L 481 220 L 481 201 L 500 201 L 501 201 L 521 201 L 521 181 L 541 181 L 541 161 L 561 161 L 561 140 L 540 140 L 540 160 L 521 160 L 521 140 L 501 140 L 500 140 L 481 140 L 480 140 L 461 140 L 460 140 L 441 140 L 440 140 L 421 140 L 420 140 L 401 140 L 400 140 L 381 140 L 380 140 L 361 140 L 360 140 L 341 140 L 340 140 L 321 140 L 320 140 L 301 140 L 300 140 L 281 140 L 280 140 L 261 140 L 260 140 L 241 140 L 240 140 L 221 140 L 220 140 L 201 140 L 200 140 L 181 140 L 180 140 L 161 140 L 160 140 L 141 140 L 140 140 L 121 140 L 120 140 L 101 140 L 100 140 L 81 140 L 80 140 L 60 140 z M 481 161 L 500 161 L 500 180 L 481 180 L 481 161 z M 60 200 L 60 220 L 60 221 L 60 240 L 60 241 L 60 260 L 60 261 L 60 280 L 60 281 L 60 300 L 60 301 L 60 320 L 60 321 L 60 340 L 60 341 L 60 360 L 60 361 L 60 380 L 60 381 L 60 400 L 60 401 L 60 420 L 60 421 L 60 441 L 80 441 L 80 460 L 60 460 L 60 480 L 60 481 L 60 501 L 81 501 L 81 481 L 100 481 L 100 501 L 120 501 L 121 501 L 140 501 L 141 501 L 161 501 L 161 481 L 180 481 L 180 501 L 200 501 L 201 501 L 220 501 L 221 501 L 241 501 L 241 481 L 260 481 L 260 501 L 280 501 L 281 501 L 300 501 L 301 501 L 321 501 L 321 481 L 340 481 L 340 501 L 360 501 L 361 501 L 380 501 L 381 501 L 401 501 L 401 481 L 420 481 L 420 501 L 440 501 L 441 501 L 460 501 L 461 501 L 481 501 L 481 481 L 500 481 L 500 501 L 520 501 L 521 501 L 540 501 L 541 501 L 561 501 L 561 481 L 561 480 L 561 460 L 541 460 L 541 441 L 561 441 L 561 421 L 561 420 L 561 401 L 561 400 L 561 381 L 561 380 L 561 361 L 561 360 L 561 341 L 561 340 L 561 321 L 561 320 L 561 301 L 561 300 L 561 281 L 561 280 L 561 261 L 561 260 L 561 241 L 561 240 L 561 221 L 561 220 L 561 200 L 540 200 L 540 220 L 540 221 L 540 240 L 521 240 L 520 240 L 500 240 L 500 260 L 480 260 L 480 280 L 460 280 L 460 300 L 460 301 L 460 320 L 440 320 L 440 340 L 420 340 L 420 360 L 420 361 L 420 380 L 401 380 L 400 380 L 380 380 L 380 400 L 361 400 L 360 400 L 340 400 L 340 420 L 321 420 L 321 400 L 301 400 L 300 400 L 281 400 L 280 400 L 261 400 L 261 380 L 241 380 L 241 360 L 221 360 L 221 340 L 201 340 L 200 340 L 180 340 L 180 360 L 180 361 L 180 380 L 161 380 L 160 380 L 141 380 L 141 361 L 161 361 L 161 341 L 161 340 L 161 321 L 181 321 L 181 300 L 161 300 L 161 280 L 141 280 L 141 260 L 121 260 L 121 240 L 101 240 L 101 220 L 81 220 L 81 200 L 60 200 z M 441 221 L 460 221 L 460 240 L 441 240 L 441 221 z M 401 241 L 420 241 L 420 260 L 401 260 L 401 241 z M 521 261 L 540 261 L 540 280 L 521 280 L 521 261 z M 481 281 L 500 281 L 500 300 L 481 300 L 481 281 z M 361 301 L 380 301 L 380 320 L 361 320 L 361 301 z M 521 301 L 540 301 L 540 320 L 521 320 L 521 301 z M 281 321 L 300 321 L 300 340 L 281 340 L 281 321 z M 321 321 L 340 321 L 340 340 L 321 340 L 321 321 z M 481 321 L 500 321 L 500 340 L 481 340 L 481 321 z M 121 341 L 140 341 L 140 360 L 121 360 L 121 341 z M 441 341 L 460 341 L 460 360 L 441 360 L 441 341 z M 521 341 L 540 341 L 540 360 L 521 360 L 521 341 z M 461 361 L 480 361 L 481 361 L 500 361 L 500 380 L 500 381 L 500 401 L 520 401 L 520 420 L 501 420 L 500 420 L 481 420 L 481 401 L 481 400 L 481 380 L 461 380 L 461 361 z M 121 381 L 140 381 L 140 400 L 121 400 L 121 381 z M 201 381 L 220 381 L 220 400 L 201 400 L 201 381 z M 441 381 L 460 381 L 460 400 L 441 400 L 441 381 z M 521 381 L 540 381 L 540 400 L 521 400 L 521 381 z M 81 401 L 100 401 L 101 401 L 120 401 L 120 420 L 100 420 L 100 440 L 81 440 L 81 421 L 81 420 L 81 401 z M 241 401 L 260 401 L 260 420 L 241 420 L 241 401 z M 401 401 L 420 401 L 420 420 L 401 420 L 401 401 z M 121 421 L 140 421 L 140 440 L 121 440 L 121 421 z M 201 421 L 220 421 L 220 440 L 201 440 L 201 421 z M 281 421 L 300 421 L 300 440 L 281 440 L 281 421 z M 361 421 L 380 421 L 380 440 L 361 440 L 361 421 z M 441 421 L 460 421 L 460 440 L 441 440 L 441 421 z M 521 421 L 540 421 L 540 440 L 521 440 L 521 421 z M 161 441 L 180 441 L 180 460 L 161 460 L 161 441 z M 241 441 L 260 441 L 260 460 L 241 460 L 241 441 z M 321 441 L 340 441 L 340 460 L 321 460 L 321 441 z M 401 441 L 420 441 L 420 460 L 401 460 L 401 441 z M 481 441 L 500 441 L 500 460 L 481 460 L 481 441 z M 201 461 L 220 461 L 220 480 L 201 480 L 201 461 z M 281 461 L 300 461 L 300 480 L 281 480 L 281 461 z M 361 461 L 380 461 L 380 480 L 361 480 L 361 461 z M 441 461 L 460 461 L 460 480 L 441 480 L 441 461 z M 521 461 L 540 461 L 540 480 L 521 480 L 521 461 z "
|
||||
id="rect1062" />
|
||||
<path
|
||||
style="fill:#808080"
|
||||
d="M 40 120 L 40 140 L 40 141 L 40 160 L 40 161 L 40 180 L 40 181 L 40 200 L 40 201 L 40 220 L 40 221 L 40 240 L 40 241 L 40 260 L 40 261 L 40 280 L 40 281 L 40 300 L 40 301 L 40 320 L 40 321 L 40 340 L 40 341 L 40 360 L 40 361 L 40 380 L 40 381 L 40 400 L 40 401 L 40 420 L 40 421 L 40 440 L 40 441 L 40 460 L 40 461 L 40 480 L 40 481 L 40 500 L 40 501 L 40 521 L 60 521 L 61 521 L 80 521 L 81 521 L 100 521 L 101 521 L 120 521 L 121 521 L 140 521 L 141 521 L 160 521 L 161 521 L 180 521 L 181 521 L 200 521 L 201 521 L 220 521 L 221 521 L 240 521 L 241 521 L 260 521 L 261 521 L 280 521 L 281 521 L 300 521 L 301 521 L 320 521 L 321 521 L 340 521 L 341 521 L 360 521 L 361 521 L 380 521 L 381 521 L 400 521 L 401 521 L 420 521 L 421 521 L 440 521 L 441 521 L 460 521 L 461 521 L 480 521 L 481 521 L 500 521 L 501 521 L 520 521 L 521 521 L 540 521 L 541 521 L 560 521 L 561 521 L 581 521 L 581 501 L 581 500 L 581 481 L 581 480 L 581 461 L 581 460 L 581 441 L 581 440 L 581 421 L 581 420 L 581 401 L 581 400 L 581 381 L 581 380 L 581 361 L 581 360 L 581 341 L 581 340 L 581 321 L 581 320 L 581 301 L 581 300 L 581 281 L 581 280 L 581 261 L 581 260 L 581 241 L 581 240 L 581 221 L 581 220 L 581 201 L 581 200 L 581 181 L 581 180 L 581 161 L 581 160 L 581 141 L 581 140 L 581 120 L 561 120 L 560 120 L 541 120 L 540 120 L 521 120 L 520 120 L 501 120 L 500 120 L 481 120 L 480 120 L 461 120 L 460 120 L 441 120 L 440 120 L 421 120 L 420 120 L 401 120 L 400 120 L 381 120 L 380 120 L 361 120 L 360 120 L 341 120 L 340 120 L 321 120 L 320 120 L 301 120 L 300 120 L 281 120 L 280 120 L 261 120 L 260 120 L 241 120 L 240 120 L 221 120 L 220 120 L 201 120 L 200 120 L 181 120 L 180 120 L 161 120 L 160 120 L 141 120 L 140 120 L 121 120 L 120 120 L 101 120 L 100 120 L 81 120 L 80 120 L 61 120 L 60 120 L 40 120 z M 61 141 L 80 141 L 81 141 L 100 141 L 101 141 L 120 141 L 121 141 L 140 141 L 141 141 L 160 141 L 161 141 L 180 141 L 181 141 L 200 141 L 201 141 L 220 141 L 221 141 L 240 141 L 241 141 L 260 141 L 261 141 L 280 141 L 281 141 L 300 141 L 301 141 L 320 141 L 321 141 L 340 141 L 341 141 L 360 141 L 361 141 L 380 141 L 381 141 L 400 141 L 401 141 L 420 141 L 421 141 L 440 141 L 441 141 L 460 141 L 461 141 L 480 141 L 481 141 L 500 141 L 501 141 L 520 141 L 521 141 L 540 141 L 541 141 L 560 141 L 560 160 L 540 160 L 540 180 L 520 180 L 520 200 L 500 200 L 500 220 L 480 220 L 480 240 L 460 240 L 460 260 L 440 260 L 440 280 L 420 280 L 420 300 L 400 300 L 400 320 L 380 320 L 380 340 L 360 340 L 360 360 L 341 360 L 340 360 L 321 360 L 320 360 L 301 360 L 300 360 L 281 360 L 280 360 L 261 360 L 261 340 L 241 340 L 241 320 L 221 320 L 221 300 L 201 300 L 201 280 L 181 280 L 181 260 L 161 260 L 161 240 L 141 240 L 141 220 L 121 220 L 121 200 L 101 200 L 101 180 L 81 180 L 81 160 L 61 160 L 61 141 z M 61 181 L 80 181 L 80 201 L 100 201 L 100 221 L 120 221 L 120 241 L 140 241 L 140 261 L 160 261 L 160 281 L 180 281 L 180 301 L 200 301 L 200 321 L 220 321 L 220 341 L 240 341 L 240 361 L 260 361 L 260 381 L 280 381 L 281 381 L 300 381 L 301 381 L 320 381 L 321 381 L 340 381 L 341 381 L 361 381 L 361 361 L 381 361 L 381 341 L 401 341 L 401 321 L 421 321 L 421 301 L 441 301 L 441 281 L 461 281 L 461 261 L 481 261 L 481 241 L 501 241 L 501 221 L 521 221 L 521 201 L 541 201 L 541 181 L 560 181 L 560 200 L 560 201 L 560 220 L 560 221 L 560 240 L 560 241 L 560 260 L 560 261 L 560 280 L 560 281 L 560 300 L 560 301 L 560 320 L 560 321 L 560 340 L 560 341 L 560 360 L 560 361 L 560 380 L 560 381 L 560 400 L 560 401 L 560 420 L 560 421 L 560 440 L 560 441 L 560 460 L 560 461 L 560 480 L 560 481 L 560 500 L 541 500 L 540 500 L 521 500 L 520 500 L 501 500 L 500 500 L 481 500 L 480 500 L 461 500 L 460 500 L 441 500 L 440 500 L 421 500 L 420 500 L 401 500 L 400 500 L 381 500 L 380 500 L 361 500 L 360 500 L 341 500 L 340 500 L 321 500 L 320 500 L 301 500 L 300 500 L 281 500 L 280 500 L 261 500 L 260 500 L 241 500 L 240 500 L 221 500 L 220 500 L 201 500 L 200 500 L 181 500 L 180 500 L 161 500 L 160 500 L 141 500 L 140 500 L 121 500 L 120 500 L 101 500 L 100 500 L 81 500 L 80 500 L 61 500 L 61 481 L 61 480 L 61 461 L 61 460 L 61 441 L 61 440 L 61 421 L 61 420 L 61 401 L 61 400 L 61 381 L 61 380 L 61 361 L 61 360 L 61 341 L 61 340 L 61 321 L 61 320 L 61 301 L 61 300 L 61 281 L 61 280 L 61 261 L 61 260 L 61 241 L 61 240 L 61 221 L 61 220 L 61 201 L 61 200 L 61 181 z "
|
||||
id="rect1120" />
|
||||
<path
|
||||
style="fill:#000000"
|
||||
d="M 580 120 L 580 140 L 580 141 L 580 160 L 580 161 L 580 180 L 580 181 L 580 200 L 580 201 L 580 220 L 580 221 L 580 240 L 580 241 L 580 260 L 580 261 L 580 280 L 580 281 L 580 300 L 580 301 L 580 320 L 580 321 L 580 340 L 580 341 L 580 360 L 580 361 L 580 380 L 580 381 L 580 400 L 580 401 L 580 420 L 580 421 L 580 440 L 580 441 L 580 460 L 580 461 L 580 480 L 580 481 L 580 500 L 580 501 L 580 520 L 561 520 L 560 520 L 541 520 L 540 520 L 521 520 L 520 520 L 501 520 L 500 520 L 481 520 L 480 520 L 461 520 L 460 520 L 441 520 L 440 520 L 421 520 L 420 520 L 401 520 L 400 520 L 381 520 L 380 520 L 361 520 L 360 520 L 341 520 L 340 520 L 321 520 L 320 520 L 301 520 L 300 520 L 281 520 L 280 520 L 261 520 L 260 520 L 241 520 L 240 520 L 221 520 L 220 520 L 201 520 L 200 520 L 181 520 L 180 520 L 161 520 L 160 520 L 141 520 L 140 520 L 121 520 L 120 520 L 101 520 L 100 520 L 81 520 L 80 520 L 61 520 L 60 520 L 40 520 L 40 541 L 60 541 L 61 541 L 80 541 L 81 541 L 100 541 L 101 541 L 120 541 L 121 541 L 140 541 L 141 541 L 160 541 L 161 541 L 180 541 L 181 541 L 200 541 L 201 541 L 220 541 L 221 541 L 240 541 L 241 541 L 260 541 L 261 541 L 280 541 L 281 541 L 300 541 L 301 541 L 320 541 L 321 541 L 340 541 L 341 541 L 360 541 L 361 541 L 380 541 L 381 541 L 400 541 L 401 541 L 420 541 L 421 541 L 440 541 L 441 541 L 460 541 L 461 541 L 480 541 L 481 541 L 500 541 L 501 541 L 520 541 L 521 541 L 540 541 L 541 541 L 560 541 L 561 541 L 580 541 L 581 541 L 601 541 L 601 521 L 601 520 L 601 501 L 601 500 L 601 481 L 601 480 L 601 461 L 601 460 L 601 441 L 601 440 L 601 421 L 601 420 L 601 401 L 601 400 L 601 381 L 601 380 L 601 361 L 601 360 L 601 341 L 601 340 L 601 321 L 601 320 L 601 301 L 601 300 L 601 281 L 601 280 L 601 261 L 601 260 L 601 241 L 601 240 L 601 221 L 601 220 L 601 201 L 601 200 L 601 181 L 601 180 L 601 161 L 601 160 L 601 141 L 601 140 L 601 120 L 580 120 z "
|
||||
id="rect1178" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 186 KiB |
BIN
content/files/img/portrait.gif
Normal file
|
After Width: | Height: | Size: 4.9 KiB |
BIN
content/files/img/runner-running-on-track.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
content/files/img/sig/kitsune-sig.gif
Normal file
|
After Width: | Height: | Size: 26 KiB |
BIN
content/files/img/sig/sig0003.gif
Normal file
|
After Width: | Height: | Size: 6.8 KiB |
21
content/files/img/site.webmanifest
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"name": "EricTaylor.Me",
|
||||
"short_name": "ET",
|
||||
"icons": [
|
||||
{
|
||||
"src": "http://erictaylor.me/files/img/web-app-manifest-192x192.png",
|
||||
"sizes": "192x192",
|
||||
"type": "image/png",
|
||||
"purpose": "maskable"
|
||||
},
|
||||
{
|
||||
"src": "http://erictaylor.me/files/img/web-app-manifest-512x512.png",
|
||||
"sizes": "512x512",
|
||||
"type": "image/png",
|
||||
"purpose": "maskable"
|
||||
}
|
||||
],
|
||||
"theme_color": "#ffffff",
|
||||
"background_color": "#000",
|
||||
"display": "standalone"
|
||||
}
|
||||
BIN
content/files/img/slag-pot.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
content/files/img/sun_ultra98_01.jpg
Normal file
|
After Width: | Height: | Size: 231 KiB |
BIN
content/files/img/sun_ultra98_01_thumb.png
Normal file
|
After Width: | Height: | Size: 58 KiB |
BIN
content/files/img/sun_ultra98_02.jpg
Normal file
|
After Width: | Height: | Size: 369 KiB |
BIN
content/files/img/sun_ultra98_02_thumb.png
Normal file
|
After Width: | Height: | Size: 52 KiB |
BIN
content/files/img/sun_ultra98_03.jpg
Normal file
|
After Width: | Height: | Size: 297 KiB |
BIN
content/files/img/sun_ultra98_03_thumb.png
Normal file
|
After Width: | Height: | Size: 49 KiB |
BIN
content/files/img/sun_ultra98_04.jpg
Normal file
|
After Width: | Height: | Size: 355 KiB |
BIN
content/files/img/sun_ultra98_04_thumb.png
Normal file
|
After Width: | Height: | Size: 54 KiB |
BIN
content/files/img/sun_ultra98_05.png
Normal file
|
After Width: | Height: | Size: 209 KiB |
BIN
content/files/img/sun_ultra98_05_thumb.png
Normal file
|
After Width: | Height: | Size: 36 KiB |
BIN
content/files/img/sun_ultra98_06.png
Normal file
|
After Width: | Height: | Size: 195 KiB |
BIN
content/files/img/sun_ultra98_06_thumb.png
Normal file
|
After Width: | Height: | Size: 48 KiB |
BIN
content/files/img/sun_ultra98_07.jpg
Normal file
|
After Width: | Height: | Size: 487 KiB |
BIN
content/files/img/sun_ultra98_07_thumb.png
Normal file
|
After Width: | Height: | Size: 97 KiB |
BIN
content/files/img/sun_ultra98_08.jpg
Normal file
|
After Width: | Height: | Size: 350 KiB |
BIN
content/files/img/sun_ultra98_08_thumb.png
Normal file
|
After Width: | Height: | Size: 49 KiB |
BIN
content/files/img/sun_ultra98_09.jpg
Normal file
|
After Width: | Height: | Size: 280 KiB |
BIN
content/files/img/sun_ultra98_09_thumb.png
Normal file
|
After Width: | Height: | Size: 72 KiB |
BIN
content/files/img/sun_ultra98_10.jpg
Normal file
|
After Width: | Height: | Size: 239 KiB |
BIN
content/files/img/sun_ultra98_10_thumb.png
Normal file
|
After Width: | Height: | Size: 58 KiB |
BIN
content/files/img/unshakeable-joy.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
content/files/img/web-app-manifest-192x192.png
Normal file
|
After Width: | Height: | Size: 1.8 KiB |
BIN
content/files/img/web-app-manifest-512x512.png
Normal file
|
After Width: | Height: | Size: 8.8 KiB |
120
content/files/js/index.js
Normal file
@@ -0,0 +1,120 @@
|
||||
function gridCellDimensions() {
|
||||
const element = document.createElement("div");
|
||||
element.style.position = "fixed";
|
||||
element.style.height = "var(--line-height)";
|
||||
element.style.width = "1ch";
|
||||
document.body.appendChild(element);
|
||||
const rect = element.getBoundingClientRect();
|
||||
document.body.removeChild(element);
|
||||
return { width: rect.width, height: rect.height };
|
||||
}
|
||||
|
||||
// Add padding to each media to maintain grid.
|
||||
function adjustMediaPadding() {
|
||||
const cell = gridCellDimensions();
|
||||
|
||||
function setHeightFromRatio(media, ratio) {
|
||||
const rect = media.getBoundingClientRect();
|
||||
const realHeight = rect.width / ratio;
|
||||
const diff = cell.height - (realHeight % cell.height);
|
||||
media.style.setProperty("padding-bottom", `${diff}px`);
|
||||
}
|
||||
|
||||
function setFallbackHeight(media) {
|
||||
const rect = media.getBoundingClientRect();
|
||||
const height = Math.round((rect.width / 2) / cell.height) * cell.height;
|
||||
media.style.setProperty("height", `${height}px`);
|
||||
}
|
||||
|
||||
function onMediaLoaded(media) {
|
||||
var width, height;
|
||||
switch (media.tagName) {
|
||||
case "IMG":
|
||||
width = media.naturalWidth;
|
||||
height = media.naturalHeight;
|
||||
break;
|
||||
case "VIDEO":
|
||||
width = media.videoWidth;
|
||||
height = media.videoHeight;
|
||||
break;
|
||||
}
|
||||
if (width > 0 && height > 0) {
|
||||
setHeightFromRatio(media, width / height);
|
||||
} else {
|
||||
setFallbackHeight(media);
|
||||
}
|
||||
}
|
||||
|
||||
const medias = document.querySelectorAll("img, video");
|
||||
for (media of medias) {
|
||||
switch (media.tagName) {
|
||||
case "IMG":
|
||||
if (media.complete) {
|
||||
onMediaLoaded(media);
|
||||
} else {
|
||||
media.addEventListener("load", () => onMediaLoaded(media));
|
||||
media.addEventListener("error", function() {
|
||||
setFallbackHeight(media);
|
||||
});
|
||||
}
|
||||
break;
|
||||
case "VIDEO":
|
||||
switch (media.readyState) {
|
||||
case HTMLMediaElement.HAVE_CURRENT_DATA:
|
||||
case HTMLMediaElement.HAVE_FUTURE_DATA:
|
||||
case HTMLMediaElement.HAVE_ENOUGH_DATA:
|
||||
onMediaLoaded(media);
|
||||
break;
|
||||
default:
|
||||
media.addEventListener("loadeddata", () => onMediaLoaded(media));
|
||||
media.addEventListener("error", function() {
|
||||
setFallbackHeight(media);
|
||||
});
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
adjustMediaPadding();
|
||||
window.addEventListener("load", adjustMediaPadding);
|
||||
window.addEventListener("resize", adjustMediaPadding);
|
||||
|
||||
function checkOffsets() {
|
||||
const ignoredTagNames = new Set([
|
||||
"THEAD",
|
||||
"TBODY",
|
||||
"TFOOT",
|
||||
"TR",
|
||||
"TD",
|
||||
"TH",
|
||||
]);
|
||||
const cell = gridCellDimensions();
|
||||
const elements = document.querySelectorAll("body :not(.debug-grid, .debug-toggle)");
|
||||
for (const element of elements) {
|
||||
if (ignoredTagNames.has(element.tagName)) {
|
||||
continue;
|
||||
}
|
||||
const rect = element.getBoundingClientRect();
|
||||
if (rect.width === 0 && rect.height === 0) {
|
||||
continue;
|
||||
}
|
||||
const top = rect.top + window.scrollY;
|
||||
const left = rect.left + window.scrollX;
|
||||
const offset = top % (cell.height / 2);
|
||||
if(offset > 0) {
|
||||
element.classList.add("off-grid");
|
||||
console.error("Incorrect vertical offset for", element, "with remainder", top % cell.height, "when expecting divisible by", cell.height / 2);
|
||||
} else {
|
||||
element.classList.remove("off-grid");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const debugToggle = document.querySelector(".debug-toggle");
|
||||
function onDebugToggle() {
|
||||
document.body.classList.toggle("debug", debugToggle.checked);
|
||||
}
|
||||
debugToggle.addEventListener("change", onDebugToggle);
|
||||
onDebugToggle();
|
||||
71
content/index.md
Normal file
@@ -0,0 +1,71 @@
|
||||
---
|
||||
title: EricTaylor.Me
|
||||
subtitle: My little corner of the web.
|
||||
author: Eric Taylor
|
||||
author-url: "https://erictaylor.me"
|
||||
lang: en
|
||||
toc-title: Contents
|
||||
---
|
||||
|
||||
<div class="grid">
|
||||
<img height="462px" class="theme-aware-image no-invert" src="./files/img/portrait.gif" alt="Black and whilte portrait of Eric Taylor dithered in 1bit">
|
||||
</div>
|
||||
## Pages
|
||||
<div class="grid">
|
||||
[PORTFOLOIO](http://portfolio.erictaylor.me) |
|
||||
[BLOG](blog/index.html)
|
||||
</div>
|
||||
|
||||
## About
|
||||
|
||||
| Personal Information | |
|
||||
| ------------------------- | ------------------------------------------------------------ |
|
||||
| Name | Eric Taylor |
|
||||
| Occupation | Information Technology Consultant at [Taylor IT Solutions](https://taylorit.solutions/), Farm Manager at [Willow and Lily Farm](https://willowandlilyfarm.com/) |
|
||||
| Previous<br />Occupations | Photographer, CNC Programmer, Manufacturing Engineer, Software Engineer, Information Systems Administrator, Graphics Designer, Web Developer |
|
||||
| Previous<br />Employers | [Westport Yachts](https://westportyachts.com/), [Ocotillo Lumber](https://ocotillolumberllc.com/), [Freeform Print Marketing Solutions](https://crispimg.com/), Grand View Photography [Faith Church](https://faithchurchaz.org/), [Christian Answers Network](https://christiananswers.net/) |
|
||||
|
||||
## Contact
|
||||
|
||||
| Contact | |
|
||||
| ------- | ------------------------------------------------------------ |
|
||||
| Email | <a href="mailto:eric@taylors.life">eric@taylors.life</a> |
|
||||
| Chat | [DeltaChat](https://i.delta.chat/#329DD536FC9FD4EDF12823C4CB0D4BE83CEFBA28&a=eric%40taylors.life&n=&i=9betCFV95BH&s=W3cKJjkopPQ) |
|
||||
| Call | <a href="tel:+1 480 577 1191">+One . Four Eight Oh . Five Seven Seven . One One Nine One</a> |
|
||||
|
||||
|
||||
`curl -sL https://erictaylor.me/files/eric-taylor.asc | gpg --import`
|
||||
|
||||
<details>
|
||||
<summary>PGP PUBLIC KEY</summary>
|
||||
```
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
mDMEYPuwoBYJKwYBBAHaRw8BAQdA0o4SMwujFo4me0pY/KZwsl8OapGixHt7JeSk
|
||||
q3EY6bK0EzxlcmljQHRheWxvcnMubGlmZT6IiwQQFggAMwIZAQUCYPuwoAIbAwQL
|
||||
CQgHBhUICQoLAgMWAgEWIQSOLnHXzCf2q8YL9YDnB41H4BDimAAKCRDnB41H4BDi
|
||||
mKGKAQCB7x/JKdvB86WYXSHllbPHe8F9BythI7kCsfSctX5JOAEAuYLXle9eVq0T
|
||||
7pzroQio0UxSd3nMbwNpn6lsjXBQfA+4OARg+7CgEgorBgEEAZdVAQUBAQdAJtEu
|
||||
vle4g4RvUz8hVKGccuxe4yDN7s33mFehysaK0DYDAQgHiHgEGBYIACAFAmD7sKAC
|
||||
GwwWIQSOLnHXzCf2q8YL9YDnB41H4BDimAAKCRDnB41H4BDimALWAPsFBaBRyXL+
|
||||
Ezrx3gUOJWyNFyDBPaW5tL6FqZdwY3ORCQD6Ajww2CwOUIFlbB6JJImc/TLe5GA6
|
||||
VgO+I+9vbeMEmwE=
|
||||
=RgtN
|
||||
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
```
|
||||
</details>
|
||||
|
||||
|
||||
<hr class="thin">
|
||||
|
||||
|
||||
## Links
|
||||
|
||||
* [Photography Portfolio](http://portfolio.erictaylor.me)
|
||||
* [Personal Blog](blog/index.html)
|
||||
* [Family Blog](https://taylors.life)
|
||||
* [Taylor IT Solutions](http://taylorit.solutions)
|
||||
* [Willow and Lily Farm](http://willowandlilyfarm.com)
|
||||
* [S/V Coconutz](http://svcoconutz.com)
|
||||
|
||||
308
convert.sh
Normal file
@@ -0,0 +1,308 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Configuration
|
||||
VERSION="1.0.1"
|
||||
SOURCE_DIR="content"
|
||||
OUTPUT_DIR="public"
|
||||
TEMPLATE="template.html"
|
||||
CSS_FILES=(
|
||||
"files/css/reset.css"
|
||||
"files/css/index.css"
|
||||
)
|
||||
|
||||
# Add supported document formats
|
||||
SUPPORTED_FORMATS=(
|
||||
"*.md" # Markdown
|
||||
"*.markdown"
|
||||
"*.mdx"
|
||||
"*.org" # Org mode
|
||||
"*.rst" # reStructuredText
|
||||
"*.txt" # Plain text
|
||||
"*.tex" # LaTeX
|
||||
"*.wiki" # MediaWiki markup
|
||||
"*.dokuwiki" # DokuWiki markup
|
||||
"*.textile" # Textile
|
||||
"*.asciidoc" # AsciiDoc
|
||||
)
|
||||
|
||||
# Color definitions
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# Add after VERSION declaration
|
||||
PDF_OUTPUT=false
|
||||
|
||||
|
||||
# Error handling function
|
||||
error() {
|
||||
echo -e "${RED}Error: $1${NC}" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Warning function
|
||||
warning() {
|
||||
echo -e "${YELLOW}Warning: $1${NC}" >&2
|
||||
}
|
||||
|
||||
# Success function
|
||||
success() {
|
||||
echo -e "${GREEN}$1${NC}"
|
||||
}
|
||||
|
||||
# Info function
|
||||
info() {
|
||||
[ "$VERBOSE" = true ] && echo -e "${BLUE}$1${NC}"
|
||||
}
|
||||
|
||||
# Help function
|
||||
show_help() {
|
||||
cat << EOF
|
||||
$(basename "$0") v$VERSION
|
||||
Convert documents to HTML or PDF using pandoc.
|
||||
|
||||
Usage: $(basename "$0") [OPTIONS]
|
||||
|
||||
Options:
|
||||
-h, --help Show this help message
|
||||
-v, --version Show version information
|
||||
-s, --source DIR Source directory (default: $SOURCE_DIR)
|
||||
-o, --output DIR Output directory (default: $OUTPUT_DIR)
|
||||
-t, --template FILE Template file (default: $TEMPLATE)
|
||||
-l, --list-formats List supported file formats
|
||||
--verbose Enable verbose output
|
||||
--clean Remove output directory before starting
|
||||
--pdf Generate PDF instead of HTML output
|
||||
|
||||
Examples:
|
||||
$(basename "$0") # Use default settings (HTML output)
|
||||
$(basename "$0") --pdf # Generate PDF output
|
||||
$(basename "$0") -s content -o dist # Use custom directories
|
||||
$(basename "$0") --clean # Clean build
|
||||
|
||||
Supported formats:
|
||||
${SUPPORTED_FORMATS[@]/#/ }
|
||||
|
||||
For more information, visit: https://pandoc.org/MANUAL.html
|
||||
EOF
|
||||
}
|
||||
|
||||
# Version function
|
||||
show_version() {
|
||||
echo "$(basename "$0") version $VERSION"
|
||||
}
|
||||
|
||||
# List supported formats
|
||||
list_formats() {
|
||||
echo "Supported input formats:"
|
||||
for format in "${SUPPORTED_FORMATS[@]}"; do
|
||||
echo " $format"
|
||||
done
|
||||
}
|
||||
|
||||
# Check if pandoc is installed before continuing
|
||||
if ! command -v pandoc >/dev/null 2>&1; then
|
||||
error "Pandoc is required but not installed. Please install pandoc."
|
||||
fi
|
||||
|
||||
# Function to create CSS arguments array
|
||||
create_css_args() {
|
||||
local source_file="$1"
|
||||
local source_dir="$2"
|
||||
|
||||
# Calculate relative path from the HTML file to the root
|
||||
local rel_path="${source_file#"$source_dir"/}"
|
||||
local dir_depth
|
||||
dir_depth=$(echo "$rel_path" | tr -cd '/' | wc -c)
|
||||
local path_prefix=""
|
||||
|
||||
# Add "../" for each directory level
|
||||
for ((i=0; i<dir_depth; i++)); do
|
||||
path_prefix="../$path_prefix"
|
||||
done
|
||||
|
||||
# Return array of CSS arguments
|
||||
local css_args=()
|
||||
for css in "${CSS_FILES[@]}"; do
|
||||
css_args+=("--css" "$path_prefix$css")
|
||||
done
|
||||
printf "%s\n" "${css_args[@]}"
|
||||
}
|
||||
|
||||
# Function to process a single file
|
||||
process_file() {
|
||||
local source_file="$1"
|
||||
local source_dir="$2"
|
||||
local target_dir="$3"
|
||||
local extension="${source_file##*.}"
|
||||
|
||||
info "Processing: $source_file"
|
||||
|
||||
# Get relative path from source directory
|
||||
local rel_path="${source_file#"$source_dir"/}"
|
||||
local dir_path
|
||||
dir_path=$(dirname "$rel_path")
|
||||
local filename
|
||||
filename=$(basename "$source_file")
|
||||
local output_filename
|
||||
output_filename="${filename%.*}.$([ "$PDF_OUTPUT" = true ] && echo "pdf" || echo "html")"
|
||||
|
||||
# Create target directory if it doesn't exist
|
||||
mkdir -p "$target_dir/$dir_path"
|
||||
|
||||
# Format-specific options
|
||||
local format_opts=""
|
||||
case "$extension" in
|
||||
"tex")
|
||||
format_opts="--mathjax"
|
||||
;;
|
||||
"org")
|
||||
format_opts="--shift-heading-level-by=1"
|
||||
;;
|
||||
"rst")
|
||||
format_opts="--section-divs"
|
||||
;;
|
||||
*)
|
||||
format_opts="--toc"
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ "$PDF_OUTPUT" = true ]; then
|
||||
# Generate PDF file
|
||||
if ! pandoc --toc -s \
|
||||
$format_opts \
|
||||
--pdf-engine=xelatex \
|
||||
-Vversion="v$(date +%s)" \
|
||||
-Vdate="$(date +%F)" \
|
||||
-Vyear="$(date +%Y)" \
|
||||
-i "$source_file" \
|
||||
-o "$target_dir/$dir_path/$output_filename"; then
|
||||
error "Failed to convert $source_file to PDF"
|
||||
return 1
|
||||
fi
|
||||
else
|
||||
# Generate HTML file
|
||||
if ! pandoc --toc -s \
|
||||
$format_opts \
|
||||
$(create_css_args "$source_file" "$source_dir") \
|
||||
-Vversion="v$(date +%s)" \
|
||||
-Vdate="$(date +%F)" \
|
||||
-Vyear="$(date +%Y)" \
|
||||
-i "$source_file" \
|
||||
-o "$target_dir/$dir_path/$output_filename" \
|
||||
--template="$TEMPLATE"; then
|
||||
error "Failed to convert $source_file to HTML"
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
|
||||
success "Converted: $source_file -> $target_dir/$dir_path/$output_filename"
|
||||
return 0
|
||||
}
|
||||
|
||||
# Parse command line arguments
|
||||
VERBOSE=false
|
||||
CLEAN=false
|
||||
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case $1 in
|
||||
-h|--help)
|
||||
show_help
|
||||
exit 0
|
||||
;;
|
||||
-v|--version)
|
||||
show_version
|
||||
exit 0
|
||||
;;
|
||||
-s|--source)
|
||||
SOURCE_DIR="$2"
|
||||
shift 2
|
||||
;;
|
||||
-o|--output)
|
||||
OUTPUT_DIR="$2"
|
||||
shift 2
|
||||
;;
|
||||
-t|--template)
|
||||
TEMPLATE="$2"
|
||||
shift 2
|
||||
;;
|
||||
-l|--list-formats)
|
||||
list_formats
|
||||
exit 0
|
||||
;;
|
||||
--verbose)
|
||||
VERBOSE=true
|
||||
shift
|
||||
;;
|
||||
--clean)
|
||||
CLEAN=true
|
||||
shift
|
||||
;;
|
||||
--pdf)
|
||||
PDF_OUTPUT=true
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
echo "Unknown option: $1"
|
||||
echo "Use --help for usage information"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
# Add after parsing arguments
|
||||
if [ "$PDF_OUTPUT" = true ]; then
|
||||
if ! command -v xelatex >/dev/null 2>&1; then
|
||||
error "PDF generation requires xelatex. Please install texlive-xelatex package."
|
||||
fi
|
||||
fi
|
||||
|
||||
# Create find command pattern for supported formats
|
||||
FIND_PATTERN=()
|
||||
for format in "${SUPPORTED_FORMATS[@]}"; do
|
||||
FIND_PATTERN+=(-o -name "$format")
|
||||
done
|
||||
# Remove the first -o since we don't need it for the first pattern
|
||||
FIND_PATTERN=("${FIND_PATTERN[@]:1}")
|
||||
|
||||
# Update error checks
|
||||
if [ "$PDF_OUTPUT" = false ] && [ ! -f "$TEMPLATE" ]; then
|
||||
error "Template file $TEMPLATE not found!"
|
||||
fi
|
||||
|
||||
if [ ! -d "$SOURCE_DIR" ]; then
|
||||
error "Source directory $SOURCE_DIR not found!"
|
||||
fi
|
||||
|
||||
# Clean up old build if requested
|
||||
if [ "$CLEAN" = true ]; then
|
||||
echo "Cleaning up old build directory..."
|
||||
rm -rf "$OUTPUT_DIR"
|
||||
fi
|
||||
|
||||
# Create output directory
|
||||
mkdir -p "$OUTPUT_DIR"
|
||||
|
||||
# Copy all files from source directory if it exists
|
||||
[ "$VERBOSE" = true ] && info "Copying assets..."
|
||||
if [ -d "$SOURCE_DIR/files" ]; then
|
||||
cp -r "$SOURCE_DIR/files" "$OUTPUT_DIR/"
|
||||
info "Copied files directory and its contents"
|
||||
else
|
||||
warning "files directory not found in source"
|
||||
fi
|
||||
|
||||
# Find and process all supported files
|
||||
[ "$VERBOSE" = true ] && info "Processing files..."
|
||||
if find "$SOURCE_DIR" -type f \( "${FIND_PATTERN[@]}" \) | while read -r file; do
|
||||
process_file "$file" "$SOURCE_DIR" "$OUTPUT_DIR" || exit 1
|
||||
done; then
|
||||
# Remove any hidden files (except .htaccess)
|
||||
find "$OUTPUT_DIR/" -type f -name '.*' ! -name ".htaccess" -delete
|
||||
success "Conversion complete! Output in $OUTPUT_DIR/"
|
||||
exit 0
|
||||
else
|
||||
error "Conversion failed!"
|
||||
fi
|
||||
19
license
Normal file
@@ -0,0 +1,19 @@
|
||||
Website content Copyright 2024 Eric Taylor
|
||||
|
||||
This is my personal website and blog. All original content including blog posts, articles, and creative works are copyright Eric Taylor unless otherwise noted.
|
||||
|
||||
## License for Website Content
|
||||
- All original website content (blog posts, articles, creative works) are copyright Eric Taylor
|
||||
- Some content may be shared under different licenses as noted in individual posts
|
||||
- Please contact me for permission to republish or redistribute content
|
||||
|
||||
## Site Generator License
|
||||
This website is built using a static site generator based on the Monospace Web project by Oskar Wickström. The site generator framework is licensed under the MIT license:
|
||||
|
||||
The Monospace Web - Copyright (c) Oskar Wickström
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
46
notes.md
Normal file
@@ -0,0 +1,46 @@
|
||||
|
||||
# Sizes
|
||||
|
||||
Max Width = 720px
|
||||
Standard Img Width = 672px
|
||||
|
||||
# Snippets
|
||||
|
||||
## Snippet Image in grid
|
||||
|
||||
<div class="grid">
|
||||
<img height="<++>px" class="theme-aware-image no-invert" src="./../files/img/<++>.png" alt="<++>">
|
||||
<p>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
## Snippet reply by e-mail
|
||||
|
||||
<span style="display: inline-block; font-size: 24px;">✉</span> [Reply via E-mail](mailto:eric@taylors.life?subject=<++>)
|
||||
## Inline Form reply by e-mail
|
||||
|
||||
<h2>Reply to this! (Via Email)</h2>
|
||||
<form action=mailto:eric@taylors.life>
|
||||
<label for=subject>Topic/subject</label>
|
||||
<input name=subject placeholder="What do you want to tell about?" value="My Thoughts on ‘Sun Ultra 98 Build’">
|
||||
<label for=body>Feedback (required)</label>
|
||||
<div class="grid">
|
||||
<textarea style="height: 250px;" name=body placeholder="What are you thinking?" required></textarea>
|
||||
</div>
|
||||
<button type=submit>Send (opens your email client)</button>
|
||||
</form>
|
||||
|
||||
|
||||
|
||||
## Header
|
||||
|
||||
---
|
||||
title: <++>
|
||||
subtitle: <++>
|
||||
author: Eric Taylor
|
||||
lang: en
|
||||
toc: true
|
||||
enable-response: true
|
||||
---
|
||||
|
||||
<++>
|
||||
1
pull-site.sh
Normal file
@@ -0,0 +1 @@
|
||||
rsync -chavzP root@taylors.life:/var/www/erictaylor/ /home/eric/Documents/www/erictaylor.me/public/
|
||||
1
push-site.sh
Normal file
@@ -0,0 +1 @@
|
||||
rsync -chavzP --stats /home/eric/Documents/www/erictaylor.me/public/* root@taylors.life:/var/www/erictaylor/
|
||||
22
readme.txt
Normal file
@@ -0,0 +1,22 @@
|
||||
# www.erictaylor.me
|
||||
Personal Website for Eric Taylor
|
||||
|
||||
This is my personal website built with a simple Pandoc-based static site generator. The site features my blog posts, thoughts, and various projects.
|
||||
|
||||
## Technology Stack
|
||||
- Built with Pandoc for markdown to HTML conversion
|
||||
- Static site generation using bash scripts
|
||||
- Custom CSS styling
|
||||
- Minimal, fast-loading design
|
||||
|
||||
## Site Structure
|
||||
- `content/` - All markdown content and static files
|
||||
- `content/blog/` - Blog posts
|
||||
- `content/files/` - CSS, JavaScript, images, and other assets
|
||||
|
||||
## Building the Site
|
||||
1. Install pandoc
|
||||
2. Run `./convert.sh` to generate the static site
|
||||
3. Deploy the generated files to your web host
|
||||
|
||||
This site is based on the Monospace Web project by Oskar Wickström, but has been customized and adapted for my personal use.
|
||||
132
template.html
Normal file
@@ -0,0 +1,132 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="$lang$" xml:lang="$lang$"$if(dir)$ dir="$dir$"$endif$>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="generator" content="pandoc-monospace-v1.0.1" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
|
||||
$for(author-meta)$
|
||||
<meta name="author" content="$author-meta$" />
|
||||
$endfor$
|
||||
$if(date-meta)$
|
||||
<meta name="dcterms.date" content="$date-meta$" />
|
||||
$endif$
|
||||
$if(keywords)$
|
||||
<meta name="keywords" content="$for(keywords)$$keywords$$sep$, $endfor$" />
|
||||
$endif$
|
||||
$if(description-meta)$
|
||||
<meta name="description" content="$description-meta$" />
|
||||
$endif$
|
||||
<link rel="icon" type="image/png" href="http://erictaylor.me/files/img/favicon-96x96.png" sizes="96x96" />
|
||||
<link rel="icon" type="image/svg+xml" href="http://erictaylor.me/files/img/favicon.svg" />
|
||||
<link rel="shortcut icon" href="http://erictaylor.me/files/img/favicon.ico" />
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="http://erictaylor.me/files/img/apple-touch-icon.png" />
|
||||
<link rel="manifest" href="http://erictaylor.me/files/img/site.webmanifest" />
|
||||
<title>$if(title-prefix)$$title-prefix$ – $endif$$pagetitle$</title>
|
||||
$for(css)$
|
||||
<link rel="stylesheet" href="$css$" />
|
||||
$endfor$
|
||||
$for(header-includes)$
|
||||
$header-includes$
|
||||
$endfor$
|
||||
$if(math)$
|
||||
$math$
|
||||
$endif$
|
||||
</head>
|
||||
<body>
|
||||
$for(include-before)$
|
||||
$include-before$
|
||||
$endfor$
|
||||
<table class="header">
|
||||
<tr>
|
||||
<td colspan="2" rowspan="2" class="width-auto">
|
||||
<h1 class="title">$title$</h1>
|
||||
<span class="subtitle">$subtitle$</span>
|
||||
</td>
|
||||
<th>Version</th>
|
||||
<td class="width-min">$version$</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Updated</th>
|
||||
<td class="width-min"><time style="white-space: pre;">$date$</time></td>
|
||||
</tr>
|
||||
</table>
|
||||
$if(abstract)$
|
||||
<div class="abstract">
|
||||
<div class="abstract-title">$abstract-title$</div>
|
||||
$abstract$
|
||||
</div>
|
||||
$endif$
|
||||
$if(toc)$
|
||||
<nav id="$idprefix$TOC" role="doc-toc">
|
||||
$if(toc-title)$
|
||||
<h2 id="$idprefix$toc-title">$toc-title$</h2>
|
||||
$endif$
|
||||
$table-of-contents$
|
||||
</nav>
|
||||
$endif$
|
||||
$body$
|
||||
$for(include-after)$
|
||||
$include-after$
|
||||
$endfor$
|
||||
$if(enable-response)$
|
||||
<h2>Reply to this! (Via Email)</h2>
|
||||
<form action=mailto:eric@taylors.life>
|
||||
<label for=subject>Topic/subject</label>
|
||||
<input name=subject placeholder="What do you want to tell about?" value="My Thoughts on ‘$title$’">
|
||||
<label for=body>Feedback (required)</label>
|
||||
<div class="grid">
|
||||
<textarea style="height: 250px;" name=body placeholder="What are you thinking?" required></textarea>
|
||||
</div>
|
||||
<button type=submit>Send (opens your email client)</button>
|
||||
</form>
|
||||
|
||||
$endif$
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td class="width-auto">
|
||||
<a style="text-decoration: none;" href="http://erictaylor.me">Home</a> •
|
||||
<a style="text-decoration: none;" href="http://erictaylor.me/blog/index.html">Blog</a> •
|
||||
<a style="text-decoration: none;" href="http://erictaylor.me/matrix/index.html?skipIntro=false">爪闩ㄒ尺工乂</a> •
|
||||
<a style="text-decoration: none;" href="">©Copyright $year$</a> •
|
||||
<span onclick="toggleTheme()" class="theme-toggle" title="Toggle theme">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-sun" viewBox="0 0 16 16">
|
||||
<path d="M8 11a3 3 0 1 1 0-6 3 3 0 0 1 0 6m0 1a4 4 0 1 0 0-8 4 4 0 0 0 0 8M8 0a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 0m0 13a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 13m8-5a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2a.5.5 0 0 1 .5.5M3 8a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2A.5.5 0 0 1 3 8m10.657-5.657a.5.5 0 0 1 0 .707l-1.414 1.415a.5.5 0 1 1-.707-.708l1.414-1.414a.5.5 0 0 1 .707 0m-9.193 9.193a.5.5 0 0 1 0 .707L3.05 13.657a.5.5 0 0 1-.707-.707l1.414-1.414a.5.5 0 0 1 .707 0m9.193 2.121a.5.5 0 0 1-.707 0l-1.414-1.414a.5.5 0 0 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .707M4.464 4.465a.5.5 0 0 1-.707 0L2.343 3.05a.5.5 0 1 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .708"/>
|
||||
</svg>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<script>
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
// Check for saved theme preference, otherwise use system preference
|
||||
const theme = localStorage.getItem('theme') ||
|
||||
(window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light');
|
||||
|
||||
// Apply theme
|
||||
document.documentElement.setAttribute('data-theme', theme);
|
||||
|
||||
// Add anchor links to headers
|
||||
document.querySelectorAll('h1, h2, h3, h4, h5, h6').forEach(heading => {
|
||||
if (heading.id) {
|
||||
const anchor = document.createElement('a');
|
||||
anchor.href = '#' + heading.id;
|
||||
anchor.className = 'header-anchor';
|
||||
anchor.textContent = '#';
|
||||
const headingText = heading.textContent || '';
|
||||
anchor.setAttribute('aria-label', 'Link to header' + headingText);
|
||||
heading.appendChild(anchor);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
function toggleTheme() {
|
||||
const currentTheme = document.documentElement.getAttribute('data-theme');
|
||||
const newTheme = currentTheme === 'dark' ? 'light' : 'dark';
|
||||
document.documentElement.setAttribute('data-theme', newTheme);
|
||||
localStorage.setItem('theme', newTheme);
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
22
watch-and-run.sh
Normal file
@@ -0,0 +1,22 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Configuration
|
||||
FILE_TO_WATCH="content/index.md" # Replace with the file you want to monitor
|
||||
SCRIPT_TO_RUN="convert.sh" # Replace with the script you want to run
|
||||
|
||||
# Check if the files exist
|
||||
if [ ! -f "$FILE_TO_WATCH" ]; then
|
||||
echo "Error: File '$FILE_TO_WATCH' not found."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -x "$SCRIPT_TO_RUN" ]; then
|
||||
echo "Error: Script '$SCRIPT_TO_RUN' is not executable."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Use inotifywait to monitor the file for changes
|
||||
while inotifywait -q -e modify "$FILE_TO_WATCH"; do
|
||||
echo "File '$FILE_TO_WATCH' has been modified. Running '$SCRIPT_TO_RUN'..."
|
||||
$SCRIPT_TO_RUN
|
||||
done
|
||||