diff --git a/.gitattributes b/.gitattributes index fd96767..c0c4e47 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,2 +1 @@ -assets/* filter=lfs diff=lfs merge=lfs -text -templates/images/* filter=lfs diff=lfs merge=lfs -text +assets/ filter=lfs diff=lfs merge=lfs -text diff --git a/.helix/languages.toml b/.helix/languages.toml deleted file mode 100644 index ab93542..0000000 --- a/.helix/languages.toml +++ /dev/null @@ -1,25 +0,0 @@ -[[language]] -name = "grz" -scope = "scope.grz" -injection-regex = "grz" -file-types = ["grz"] -roots = [] -auto-format = true -comment-token = "//" -indent = { tab-width = 4, unit = " " } -language-servers = ["grezi"] - -[[grammer]] -name = "grz" - -[[language]] -name = "djot" -scope = "scope.djot" -injection-regex = "dj|djot" -file-types = ["dj"] -roots = [] -comment-token = "{%" -indent = { tab-width = 4, unit = " " } - -[[grammar]] -name = "djot" diff --git a/.woodpecker.yml b/.woodpecker.yml deleted file mode 100644 index 3f6853b..0000000 --- a/.woodpecker.yml +++ /dev/null @@ -1,19 +0,0 @@ -clone: - git: - image: woodpeckerci/plugin-git - settings: - partial: false - -steps: - - name: build - image: journal - environment: - BASE_URL: https://compute.nations.lol - CODE_THEME: emacs - HELIX_RUNTIME: /usr/lib/helix/runtime - commands: - - bruin-journal-gen - volumes: - - /var/woodpecker:/var/woodpecker - - /usr/share/fonts:/usr/share/fonts - - /usr/lib/helix/runtime/:/usr/lib/helix/runtime/ diff --git a/assets/ChatGPT_code.png b/assets/ChatGPT_code.png deleted file mode 100644 index fa815f8..0000000 --- a/assets/ChatGPT_code.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:58252c779cc3401ca3e2325914b06e6fe974dd1f67fc4a2d8a74cb78db8a1a55 -size 49741 diff --git a/assets/Jumping.gif b/assets/Jumping.gif deleted file mode 100644 index 5ba88ee..0000000 --- a/assets/Jumping.gif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:636d0830b3e16e268a0947900b94317816b553c1654b3a0d903681d9781c13ad -size 2506113 diff --git a/assets/Porygon.gif b/assets/Porygon.gif deleted file mode 100644 index e69de29..0000000 diff --git a/assets/both-is-good.gif b/assets/both-is-good.gif deleted file mode 100644 index 9dbab73..0000000 --- a/assets/both-is-good.gif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d6b76edaab5ac421e80af987b8a8283713fd4181a2291313e1e00b006d0d5276 -size 4477372 diff --git a/assets/cat.jpeg b/assets/cat.jpeg deleted file mode 100644 index b7e4feb..0000000 --- a/assets/cat.jpeg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:477e4f197de00c5a0f661afed7e662caf7ae99df07d8b960421f0d8c01b60db5 -size 4972 diff --git a/assets/giga_chad.jpg b/assets/giga_chad.jpg index 81706ac..7150f96 100644 Binary files a/assets/giga_chad.jpg and b/assets/giga_chad.jpg differ diff --git a/assets/google_cosplay.jpg b/assets/google_cosplay.jpg deleted file mode 100644 index 1b1549f..0000000 --- a/assets/google_cosplay.jpg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:61bfb2944db74262c41e81d30d2577c7a1d3be9516b7f5b36e79f068c7b47ac6 -size 59430 diff --git a/assets/luddites.jpg b/assets/luddites.jpg deleted file mode 100644 index 4082acf..0000000 --- a/assets/luddites.jpg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:687e2ede89c75110044450bcd965f6f5ae876acc9224b6ee6e97dabb24cb8ebb -size 241867 diff --git a/assets/the_pipeline.svg b/assets/the_pipeline.svg index a1c6d1d..806eecc 100644 --- a/assets/the_pipeline.svg +++ b/assets/the_pipeline.svg @@ -1,3 +1,4 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ba624db767ebc7902e2103f57bf63cbe37b35d65739c7b1717f44a96fd51d163 -size 96905 + + + + \ No newline at end of file diff --git a/src/AIgniting_the_Future_With_Mind-BOTtling Insights!.dj b/src/AIgniting_the_Future_With_Mind-BOTtling Insights!.dj deleted file mode 100644 index 580b4bb..0000000 --- a/src/AIgniting_the_Future_With_Mind-BOTtling Insights!.dj +++ /dev/null @@ -1,144 +0,0 @@ -`attributes`{published="2024-06-05 10:30"} - -## Introduction to Artificial Intelligence : Origins and Limitations - -At the vanguard of technological advancement, artificial intelligence(AI) holds the potential to completely transform the way we work, live, and interact with the world. Fundamentally, AI is the creation of computer systems that are able to carry out operations that usually call for human intelligence, like comprehending natural language, identifying patterns, and making data-driven decisions. - -The idea of AI was first proposed in the middle of the 20th century, when scientists like Alan Turing laid the foundation for the creation of intelligent machines. Artificial intelligence has advanced from theoretical conjecture to practical reality throughout the years, thanks to advances in computational power and algorithmic methodologies. This has resulted in achievements in fields like machine learning, natural language processing, and robotics. - -Artificial Intelligence has its share of drawbacks and limitations, despite its amazing potential. The fact that AI has a propensity to make mistakes and display biases, which frequently reflects the shortcomings of the training data, is one of the biggest problems it faces. Furthermore, AI systems occasionally display behavior that can only be said to be "delulu," with corny terminology and repetitious language patterns finding their way into their exchanges. - -Even though AI has advanced significantly in recent years, there is still much to be done to fix its flaws and expand its potential. It is critical that we approach AI development in this era of balanced perspectives, appreciating both its potential and its current limitations, as we negotiate its rapid advancement. While AI is a useful tool in our technological toolbox, it should not be too depended upon to solve every issue. Rather, we ought to anticipate how AI will develop going forward and how it might help to create a better future for all people. - - -## AI in Education - -Artificial Intelligence serves as a constant reminder of growth and progress in our technologically sophisticated and ever-evolving civilization. Though it once appeared to be a concept from science fiction, AI has become a part of current life and is transforming human technology. Its accessibility has significantly increased the efficiency of our society, both outside and inside of educational institutions. AI has the power to completely change teaching and learning, even in the face of certain worries for both teachers and pupils. - - -## Unveiling AI's Educational Powerhouse - -Artificial intelligence functions incredibly well, constantly providing intelligent answers to the majority of problems posed to it. It seemed like technology had reached its zenith at an age when search engines ruled the internet and offered access to a seemingly limitless supply of information. But the emergence of generative AI has broken through these preconceived notions and propelled technology to previously unheard-of heights. The way we access and use knowledge is being revolutionized by AI's capacity to digest large volumes of data and give customized solutions. - -The field of education is one where this shift is most noticeable. Imagine being able to provide pupils with prompt, precise responses to their inquiries, allowing them to swiftly understand difficult subjects. By using AI tools, educators may better meet the needs of each individual student by customizing learning experiences. AI is paving the way for a revolution in education that will increase learning efficiency and engagement by improving both the teaching and learning processes. Additionally, each student can advance at their own rate with the help of AI-powered adaptive learning technologies, improving overall educational outcomes. - - - -## AI as a Reliable Backup in Information Retrieval - -Within the contemporary world's extensive digital environment, search engines have evolved into essential resources for promptly and effectively retrieving information. But even with their advanced technology, search engines can occasionally produce results that are neither relevant nor accurate. When conventional search techniques are insufficient, Artificial Intelligence can be relied upon to provide a supplementary means of information retrieval. - -Search engines' dependence on keyword-based queries, which might not always accurately reflect a user's intent, is one of their main drawbacks. This might result in misleading or inappropriate search results, particularly when handling ambiguous or complex queries. AI, on the other hand, makes better use of context, semantics, and user preferences by utilizing sophisticated machine learning and natural language processing techniques. AI can provide more precise and tailored solutions by examining patterns in user behavior and content. This guarantees that consumers can obtain the information they require, even in situations when search engines are not able to provide it. - -AI is also very good at managing unstructured data, which can be difficult for traditional search engines to handle. Examples of this type of data include photos, videos, and audio recordings. Artificial Intelligence can enhance the process of information retrieval by gaining significant insights from multimedia content through techniques such as picture identification, speech recognition, and sentiment analysis. The depth and scope of information that users can access is increased because AI can find hidden linkages and correlations that are missed by conventional search algorithms thanks to this multidimensional approach to content analysis. - -Beyond the reactive nature of conventional search engines, AI provides proactive and adaptable search capabilities. AI systems may anticipate user requirements and preferences by learning from user interactions and feedback. This allows them to make appropriate content suggestions in advance or refine search queries in real-time. In addition to saving users time and effort, this proactive support ensures a more positive search experience by streamlining the information retrieval process. - -AI is useful for data verification and fact-checking in addition to improving information retrieval, particularly in the age of false information and fake news. AI can assist users in differentiating between trustworthy and untrustworthy sources by cross-referencing several sources and assessing the information's credibility. This helps to foster critical thinking and digital literacy. Real-time information verification gives the search process an additional degree of trustworthiness and dependability and enables consumers to base their judgments on current and accurate information. - - - -## Easing the Burden on Educators - -AI has the ability to significantly reduce the effort and stress that educators, who frequently deal with excessive workloads, bear. While grading can be a time-consuming effort, AI-powered solutions can automate a large portion of it, giving assessments that are correct and completed quickly. This lessens the effort for educators while simultaneously guaranteeing kids receive timely feedback, which is essential for their academic development. AI frees up teachers to concentrate on more important facets of teaching, such mentorship and individualized instruction, by managing routine and administrative duties. - -AI can also serve as an additional teaching tool, empowering students to study on their own and lowering their dependency on instructors. Smart tutoring programs may adjust to each student's unique learning style and speed by giving them extra practice and explanations outside of the classroom. When a teacher can not give each student enough attention in a large classroom, this support system can be especially helpful. Artificial Intelligence has the potential to enhance the effectiveness and balance of the educational environment by reducing the workload of educators. - - -## Dispelling the Threats About AI - -Artificial intelligence is a topic of great concern in today's debate, with worries about job displacement, loss of human autonomy, and moral quandaries being major issues. But if AI is only seen with fear, we will fail to see AI's potential as a force for good in society. Sociological principles allow us to examine AI and conclude that, far from being a threat, its integration can be seen as a transformational force that might improve many facets of our shared existence. - -We can solve important societal issues like enhancing healthcare accessible, encouraging environmental sustainability, and lowering economic inequality by embracing AI's potential. Because of AI's capacity for data analysis and solution generation, these fields may see novel approaches that promote a more just and inclusive society. Rather than being afraid of AI, we ought to be more interested in how it may be used to advance good. AI-driven healthcare solutions, for instance, have the potential to improve public health outcomes by lowering the cost and increasing accessibility of medical tests and treatments. - - -## Why AI Should Not Be Perceived as a Threat - -Historically, there has been a propensity for certain people to view the emergence of new technologies as a threat. Fear of the unknown combined with over-the-top depictions in popular culture frequently results in anxiety around the possible outcomes of these advancements. But a closer look at previous technological revolutions shows that these worries are frequently unwarranted. For instance, there were many worries throughout the Industrial Revolution that machines would completely replace human labor, resulting in massive unemployment and the collapse of society. While it is true that some jobs were mechanized, there was also an increase in employment options and new industries that developed, which ultimately led to a net increase in jobs and general prosperity. Similar to how the invention of vehicles sparked worries about public safety and the direction of transportation, cars are now an essential component of contemporary life, enhancing accessibility and mobility for billions of people worldwide. - -The most important takeaway from these historical connections is that humankind does not always suffer from the advancement of technology. Rather, it is and has always been a driving force behind innovation, economic expansion, and social progress. Like the ground-breaking technologies that came before it, AI should not be seen as a threat, but rather as a tool for improving human skills and tackling some of the most important issues our world is currently facing. - -Furthermore, it is critical to understand that AI is governed and overseen by humans; it is not autonomous. More fiction than fact exists when it comes to the idea of a dystopian future in which AI systems revolt against their creators. AI developers and researchers are making a concerted effort to make sure that AI is in line with human values and goals by integrating ethical concepts into the technology's conception and application. AI systems are also not perfect; biases, mistakes, and constraints arising from programming and data inputs can affect them. Therefore, it is essential to approach the development of AI with accountability, openness, and a dedication to reducing potential hazards. - - -## Social Construction of Technology - -The idea of the social construction of technology (SCOT) is one lens through which to see the implications of AI. SCOT theory holds that institutional arrangements, power dynamics, and cultural values are some of the societal influences that influence the development and application of technology. In this setting, people's and institutions' interpretations and uses of AI will decide its place in society, which is not set in stone. Society may take advantage of AI's potential to address urgent social issues like health care accessibility, environmental sustainability, and economic injustice by actively influencing the technology's development and application. - -AI, for example, may be customized to meet the various demands and ideals of many communities, guaranteeing that its advantages are shared by all. Diverse stakeholders can be included in the creation of AI to help reduce biases and make sure the technology works for the greater good. This strategy encourages cooperation and trust amongst various society groups in addition to optimizing AI's beneficial effects. AI has the potential to be a tool for social justice and equity through encouraging inclusive development methods. - - -## Structural Functionalism - -According to structural functionalist theory, society is seen as a complex system made up of interdependent pieces that cooperate to keep things stable and cohesive. When properly incorporated, AI may work as a part of this system, increasing production, creativity, and efficiency in a number of industries. Artificial intelligence has the ability to enhance human skills rather than replace human labor, freeing people from menial chores and enabling them to concentrate on more creative and valuable endeavors. - -AI enhances the general efficiency and flexibility of social systems through simplifying procedures and optimizing resource distribution. AI, for instance, may manage repetitive duties at work, freeing up staff members to focus on creative and strategic work. AI in healthcare can help with disease diagnosis, allowing medical professionals to treat patients more quickly and accurately. These instances show how AI can improve human capacities, resulting in a society that is more dynamic and efficient. Efficiency gains have the potential to boost economic development and productivity as well. - - -## Critical Theory - -Critical theory posits that societal structures are imbued with power dynamics that perpetuate inequalities and marginalization. While AI has the potential to exacerbate existing disparities, it also offers opportunities for emancipatory change. By interrogating the biases embedded within AI algorithms and decision-making processes, society can work towards creating more inclusive and equitable systems. For instance, ensuring that AI technologies are developed with diverse datasets and perspectives can help prevent biased outcomes and promote fairness. - -Furthermore, AI-driven advancements in accessibility, healthcare, and education can democratize access to opportunities and resources, reducing the digital gap and promoting social mobility. AI-driven learning systems, for instance, can offer underprivileged groups individualized instruction, and AI in healthcare can make diagnostic tools accessible to remote locations. These developments demonstrate how AI has the power to promote equality and social progress. Critical theory pushes us to challenge established power structures and make sure that AI development is fair and inclusive. - - -## AI As A Companion - -Artificial Intelligence emerges as a companion for communication and emotional support as well as a tool for knowledge retrieval in an era where digital interactions increasingly shape our social landscape. AI is a nonjudgmental, approachable tool that can help people who are struggling with social anxiety or who need assistance navigating tricky interpersonal circumstances make meaningful connections and gain insightful knowledge. - -AI's capacity to study and interpret human language at a degree of sophistication higher than that of conventional search engines is one of the technology's main advantages in communication. Artificial intelligence is able to understand the subtleties of speech, such as tone, attitude, and context, through natural language processing (NLP) algorithms. This enables more individualized and sympathetic interactions. This feature makes it possible for AI to provide individualized guidance and support that speaks to each person's particular needs and feelings, promoting empathy and understanding throughout the engagement. - -AI offers a secure and non-threatening environment for those who struggle with social anxiety or find it difficult to express themselves in person to practice communication skills and gain confidence. By using chatbots or virtual assistants, users can practice their communication skills in a low-pressure, encouraging environment by participating in simulated discussions and receiving real-time feedback. For people who want to increase their interpersonal connections and break through social boundaries in their daily lives, this virtual rehearsal environment can be incredibly helpful. - -Furthermore, AI can provide insightful analysis and guidance on a variety of subjects, from relationship problems to career conundrums, thanks to its ability to analyze data and recognize patterns. Artificial Intelligence has the capability to leverage extensive databases of information and expertise to generate recommendations and workable plans for common problems and hurdles. AI may provide direction and assistance to help people negotiate life's challenges with more clarity and confidence, whether it is navigating a challenging conversation, managing stress, or developing resilience. - -While AI should not be used in place of professional therapy or human interaction, it can be a useful addition to current support systems, particularly during times of crisis or isolation. Artificial intelligence can lend a sympathetic ear and deliver responses that validate people's experiences and feelings when they feel overwhelmed or alone. AI can help reduce feelings of loneliness and isolation by offering empathy and companionship, which promotes a sense of connection and belonging in a world that is becoming more and more digital. - - -## Positive Externalities of AI In The Economy - -The use of AI in education and other fields has the potential to produce large positive externalities. The advantageous outcomes of an activity that are felt by other parties are referred to as positive externalities. AI in education, for example, can raise educational outcomes and literacy rates, creating a workforce that is more educated and more productive. This in turn has the potential to raise living standards generally and accelerate economic growth. - -AI can also encourage creativity and innovation, bringing in new markets and employment prospects. Artificial Intelligence frees people up to concentrate on higher-order jobs that need creativity and critical thought by automating repetitive tasks. The development of human capital may be aided by this change in work dynamics as people adjust to more demanding and mentally engaging positions. - -Moreover, the predictive powers of AI go beyond academic results. Forecasting economic indicators like GDP and GNP is another application for it. Artificial intelligence can find trends and patterns in massive amounts of data that humans might miss, giving businesses and governments alike insightful information. - -It is important to understand that while the labor market may change as a result of AI integration, these changes may not always be detrimental. Artificial Intelligence has promise for eliminating labor-intensive and unfavorable jobs, or frictional unemployment, while also generating new opportunities in developing industries. This phenomenon, sometimes referred to as structural unemployment, is a reflection of the economy's shift toward higher-skilled jobs. - -Additionally, the use of AI may result in a more effective use of resources, raising economic production as a whole. The production possibilities curve (PPC), which shows a rise in potential output, shifts outward as people move into more intellectually engaging professions. Increased productivity could also serve to uphold capitalist ideals, since those with more education and adaptive skills will fare better in an AI-driven economy. - -Without taking past precedents into account, it is illogical to be afraid about how AI may affect jobs. Even though automated farms and factories have been around for a while, society has managed to adapt and prosper. To prepare the workforce for the needs of the digital age, we should prioritize education and reskilling rather than worrying about job displacement. We can exploit AI's positive externalities to build a more wealthy and inclusive society by embracing its potential and investing in human capital. - - -## Historical Parallels - -Revolutionary inventions have radically changed the trajectory of human progress throughout history. The introduction of search engines in the 1990s is one important instance. When Google first launched in 1998, it completely changed the way we could access information by putting a large amount of material at our fingertips. This change promoted the development of the internet economy, democratized knowledge, and eased international communication. - -Similar to this, AI has the power to completely change a number of industries. When personal computers were first introduced in the 1980s, they completely changed households and workplaces by boosting connectivity and productivity. These earlier technological advances are mirrored in AI's capacity to learn, adapt, and comprehend information at previously unheard-of speeds, indicating that we are about to see yet another profound revolution. AI has the potential to completely change how we interact with technology and one another, spurring innovation and advancing society, much as search engines changed how we might obtain information. - -Drawing comparisons to past industrialization, AI is poised to adopt comparable patterns. An age of mass production, urbanization, and socioeconomic transformation was brought about by the Industrial Revolution of the 18th and 19th centuries. -With the invention of the steam engine, textile machines, and mechanized agriculture, it signaled a significant transition from rural to industrial economies, changing every aspect of daily life. - -Societies were primarily agrarian before industrialization, with most individuals working as subsistence farmers. Traditional agricultural methods were replaced by factory production and mechanization throughout the Industrial Revolution, resulting in a major shift in labor habits. This change freed up manpower for jobs in the expanding industrial sectors in addition to increasing agricultural production. - -Food production underwent a revolution when agriculture became mechanized, allowing farmers to cultivate greater lands and produce higher yields. The amount of labor needed for crop planting and harvesting was significantly decreased by innovations like the mechanized reaper and the seed drill. As a result, there was a demand for fewer agricultural laborers, which caused a migration of people from rural to urban areas in search of jobs in factories and manufacturing hubs. - -In addition, industrialization promoted technological advancement and the growth of new sectors, including transportation and communication as well as the manufacture of iron and textiles. These developments changed social structures, stimulated economic expansion, and produced new job opportunities. But there were also serious drawbacks to industrialization, such as environmental damage, congestion in cities, and worker exploitation. - -Industrialization ultimately resulted in significant gains in economic growth, better access to commodities, and living standards despite its downsides. In a similar vein, AI has the power to completely transform a number of industries, including banking, healthcare, entertainment, and transportation. We can manage the intricacies of technological change and build a future that optimizes AI's benefits for everyone if we embrace the technology's revolutionary promise while addressing its societal downsides. - - -## AI in Other Countries - -The revolutionary effects of AI are not limited to the West; other nations, including China, are also witnessing notable advancements in this field. AI is known as 人工智能 (rén gōng zhì néng) in China, where it is being used to a number of industries, such as urban planning, healthcare, and education. The Chinese government has made significant investments in AI R&D, establishing the nation as a leader in AI innovation worldwide. - -AI is being utilized in education to give pupils more individualized learning experiences. AI-powered systems, for instance, enable students to study more efficiently by offering personalized feedback and instructional information. AI is boosting treatment planning and diagnostic accuracy in the healthcare industry, which improves patient outcomes. AI is also being used in smart city projects to enhance energy use, public safety, and traffic management. These developments show how AI has the power to propel development and raise standards of living everywhere. - - -## Embracing Tomorrow - -The use of AI in education represents a change in the way that we instruct and learn. Through accepting its potential and acting responsibly, we open up countless doors for development. Being flexible and keeping an open mind are essential as we traverse the ever changing tech landscape. We can create a future that transcends boundaries and cultivates a more just, inclusive, and sustainable environment for future generations by utilizing AI's capabilities. - - - -Thank you for taking the time to read this article. Your engagement is invaluable, and together, we can shape a brighter future for all with the help of AI. diff --git a/src/do_not_fear.dj b/src/do_not_fear.dj deleted file mode 100644 index 62d5d4d..0000000 --- a/src/do_not_fear.dj +++ /dev/null @@ -1,51 +0,0 @@ -`attributes`{published="2024-04-25 04:00"} - -# Do Not Fear the Threat Artificial Intelligence Poses to Computer Science - -Computer science positions are some of the fastest growing occupations as nearly 400,000 openings are projected per year by the U.S. Bureau of Labor Statistics. In 2020, the median annual wage of computer and information technology occupations was $100,530 and $50,000 more than the median annual wage of all occupations at $46,310 the same year (BLS). However, one look at Reddit's r/csmajors would tell a different story. The general conscious seems to be that computer science is a dead end. Too much competition, not enough opportunities, and increasingly demanding prerequisites. But how can this be? The field is predicted to grow by 15% by 2031 (Indeed). In truth, it's far more complex than it seems on the surface. The industry itself continues to grow but future advancement in artificial intelligence could threaten to throw a wrench in it. Will the industry be able to weather the storm? Yes. Artificial intelligence will be a tool used to create better code and improve the industry, not replace it. - -## Some Context - -Artificial intelligence, or AI for short, has taken over the media in the last two years and its debut could mark the beginning of a new age of technology. With the introduction of OpenAI's ChatGPT, Google's Gemini, and Microsoft's Copilot, it's safe to say that almost everyone has been exposed to this development at some point. With how abrupt AI's inception has been and with the level of exposure it has gotten, it's no surprise that a level of panic has set in. Almost immediately, a lot of fields under the liberal arts umbrella were perceived to be under threat. It seemed that the chatbots would replace writers, art-generating AI like OpenAI's DALL-E would replace artists, and various AI music generators as well as tools would bring the music industry crumbling down. Fortunately, these fields still require a lot of innovation and creativity that AI is just not capable of as of now. - - - -## Ramifications for Computer Science - -Once the dust cleared, a new wave of alarm emerged with technological and computer science industries coming into the crossfire. The nature of the day-to-day work loop of web development and software engineering jobs makes them especially vulnerable to artificial intelligence. Even now, ChatGPT can write intricate code that would take a professional countless hours of labor instantaneously. Artificial Intelligence can, potentially, code faster than humans which could mean a reduction in job openings (Brook's Institute). Junior programming jobs will probably come into the fire first which could increase how demanding the already rigorous boundaries of entry are (Business Insider). Artificial intelligence excels at performing repetitive tasks with accuracy and efficiency. Unfortunately, programming jobs involve a lot of bug fixing and code testing as well as generation, all tasks that are repetitive and easily accomplished by AI applications like ChatGPT currently. That does not bode well for how future-proof these positions will be. Furthermore, with the use of AI, new applications will be developed that could be used to design websites and run maintenance programs that will deem some software engineering positions impractical (Medium). - -## On the Bright Side - -Despite this, however, there has been a significant effort to protect the potentially 300 million jobs that are endangered by advancement in artificial intelligence. Last year, Elon Musk and over 1,000 other scientists called for a temporary pause on AI development to protect industries and, supposedly, humanity itself (Reuters). ChatGPT also, seemingly, had a change in policy regarding printing intricate code. The application now prompts users to hire a programmer which sheds some light on the effort these companies are making in an attempt to prevent the unthinkable (Business Insider). AI could prospectively increase corporate profits by about 4.4 billion dollars which could create new jobs or opportunities for already existing jobs in the computer science field. There's no ignoring the fact that 30% of labor hours in the United States could be automated and 12 million workers may have to find new fields of employment by 2030, but artificial intelligence has the prospective qualities to become humanity's greatest innovation and tool. As soon as 2025, artificial intelligence and machine learning could create over 97 million jobs globally (McKinsey Global Institute). The possibilities are endless, but computer scientists need to stay up to date with advancements in artificial intelligence so that it can be a help, not a hindrance. - - - -## Some Historical Analysis - -In the end, computer science is the story of human innovation, automation, and in some ways, replacement. From the Industrial Revolution to the upcoming, or current, age of artificial intelligence, technology has seen a significant amount of resistance. When the limited and spinning wheel-reliant textile industry of the pre-industrial revolution age was replaced with the spinning jenny, the workers of the time took matters into their own hands by destroying machinery in cotton mills they believed would threaten their jobs. Of course, the plights and actions of the Luddites seem ridiculous by today's standards but what they were gripping which can be easily synthesized by the concerns of the present. Humanity always adapts and moves forward with change. The “coding” of the future will look nothing like the coding of today, but that is also true of the coding of the past. What computer scientists and programmers pour endless hours of hard work into does not match what Ada Lovelace or Alan Turing created (LinkedIn). Most of the computer scientists of the present do not code in BASIC anymore, just as those of the future will probably not use Python or Java. Man's fight with what it invents is a tale as old as time and remains a constant theme as something that captivates our imaginations. Enthusiastically await, dread, or ignore it. It is simply an unshakeable state of affairs that has persisted through our past, dominates our present, and will define our future. Change does not merely replace or introduce and it is neither malicious nor benevolent, it just is. - -## What Does This All Mean? - -Any current or prospective computer scientists must know that any threat artificial intelligence may pose to their industry is not purely hostile. Continue to learn all you can about what you care about. Invest your time in what you believe to be the most valuable use of it. Make use of every opportunity in your path and every second in your possession for change comes for us all. It could be as swiftly as tomorrow or as gradually as three decades from now. Never stop learning so that when it does come, you'll be ready to adapt, improve, and prosper despite its obstacles. - -## Bibliography - -1. Elon Musk and Others Urge Ai Pause, Citing “risks to Society” | Reuters, www.reuters.com/technology/musk-experts-urge-pause-training-ai-systems-that-can-outperform-gpt-4-2023-03-29/. Accessed 25 Apr. 2024. - -2. Job Outlook for Careers in Computer Science | Indeed.Com, www.indeed.com/career-advice/finding-a-job/job-outlook-for-computer-science. Accessed 25 Apr. 2024. - -3. “Fastest Growing Occupations: Occupational Outlook Handbook.” U.S. Bureau of Labor Statistics, U.S. Bureau of Labor Statistics, 17 Apr. 2024, www.bls.gov/ooh/fastest-growing.htm. - -4. “Computer and Information Technology Occupations: Occupational Outlook Handbook.” U.S. Bureau of Labor Statistics, U.S. Bureau of Labor Statistics, 17 Apr. 2024, www.bls.gov/ooh/computer-and-information-technology/home.htm. - -5. “These Industries Will Face the Biggest Talent Shortages by 2030.” LinkedIn, www.linkedin.com/business/talent/blog/talent-strategy/industries-biggest-talent-shortages-2030. Accessed 25 Apr. 2024. - -6. “Will AI Replace Programmers? Navigating the Future of Coding.” Will AI Replace Programmers? Navigating the Future of Coding | Continuing Education | UC San Diego Division of Extended Studies, extendedstudies.ucsd.edu/news-and-events/division-of-extended-studies-blog/will-ai-replace-programmers-the-future-of-coding. Accessed 25 Apr. 2024. - -7. Zinkula, Jacob. “Chatgpt May Be Coming for Our Jobs. Here Are the 10 Roles That AI Is Most Likely to Replace.” Business Insider, Business Insider, www.businessinsider.com/chatgpt-jobs-at-risk-replacement-artificial-intelligence-ai-labor-trends-2023-02#tech-jobs-coders-computer-programmers-software-engineers-data-analysts-1. Accessed 25 Apr. 2024. - -8. Chui, Michael, and Lareina Yee. “Ai Could Increase Corporate Profits by $4.4 Trillion a Year, According to New Research.” McKinsey & Company, McKinsey & Company, 18 July 2023, www.mckinsey.com/mgi/overview/in-the-news/ai-could-increase-corporate-profits-by-4-trillion-a-year-according-to-new-research. - -9. Pednekar, Pratik. “How Ai Is Threatening the Future of Programming Jobs.” Medium, Medium, 12 Feb. 2023, epratik.medium.com/how-ai-is-threatening-the-future-of-programming-jobs-771cb1aecc. - -10. M., Sanjay K. “The Evolution of Programming Languages: Past, Present, and Future.” The Evolution of Programming Languages: Past, Present, and F, 28 Mar. 2023, www.linkedin.com/pulse/evolution-programming-languages-past-present-future-mohindroo-. diff --git a/src/forward.dj b/src/forward.dj deleted file mode 100644 index e6d14ed..0000000 --- a/src/forward.dj +++ /dev/null @@ -1,65 +0,0 @@ -`attributes`{published="2024-05-06 08:00"} - - -# Forward - -My name is Jonah Ascoli, and I'm the founding editor of Compute. -Compute is a computer science journal for -anyone in Lake Braddock to enjoy. -In this article, I'll talk about the mission of this journal, -how we'll be operating in the future, -and how _you_ can participate. - -## The Mission - -Compute's goal is to serve as an informative journal, -catered to Lake Braddock students, while allowing journalists to -express creativity in their articles. By keeping the journal broad, -encompassing the entirety of computer science, -there are very few restrictions in what journalists can write about, -and by extension, what anyone can read about. - -## Operating Schedule - -We plan on making editions every month, each with at least -one article per journalist. -This edition will then be destributed across -Lake Braddock's computer science program, -through a Discord server, (more on that later) -a mailing list, -and schoology updates, -giving any CS student a -chance to read any/all of the articles written. -The hope (and long term goal) of this project is to -continue operating for years to come, -making it a staple in Lake Braddock's computer science program. - -You may be asking, "I want in! Where do I start?" - -## How _You_ Can Participate - -The nature of a student-run journal is that, well, -it needs students to run it. -Without journalists, webmaster(s), and organizers, this journal -would inevitably die off. Furthermore, there's no upper limit on how many -contributers there can be for a journal - of course quality is more important -than quantity, but of course: - -![Both is good.][assets/both-is-good.gif] - -To become a journalist, all you have to do is join the -Compute [Discord Server](https://discord.gg/WSaHCnUanJ)! -From there, there will be detailed instruction, -and anything you don't understand, I can help you with! -It would be awesome to get as many people as possible for this journal, -so it would be hugely appreciated if you want to join. - -There's also a Compute club! It only meets once a month for an hour, -and journalists aren't required to come to the meetings, but if you want, -you can also come to the club to get started (for more information on the club, -join the Discord server.) - -Anyways, that's what Compute's all about. Since you read the whole article, -here's a picture of a cute cat: - -![Cute Cat][assets/cat.jpeg] \ No newline at end of file diff --git a/src/how_to_run_a_journal.dj b/src/how_to_run_a_journal.dj index 5103fb7..b3dbeaa 100644 --- a/src/how_to_run_a_journal.dj +++ b/src/how_to_run_a_journal.dj @@ -1,12 +1,10 @@ -`attributes`{published="2024-05-02 08:00"} +# How to Run a Journal -# Web-dev, and the Power of Simplicity. - -Hi! I'm Isaac Mills, I'm the guy managing the infrastructure behind Compute! In this article, I'd like to talk about just that: the infra behind this media outlet, how it all works, and why it is the way it is. +Hi! I'm Isaac Mills, I'm the guy managing the infrastructure behind Compute! In this article, I'd like to talk about just that: the infra behind this journal, how it all works, and why it is the way it is. ## Plain text -Plain text is as simple as it gets, yet it can be an extremely powerful tool. It's capable of being anything, and can also be transmuted into anything. Its infinite extensibility makes it a formidable tool that every developer should have in their arsenal. For our case, we use a lot of plain text. In fact, the article you're reading right now is written in plain text, _not with some web UI_. A while back, I found a markup language called [djot](https://djot.net). It was created by the same person who created CommonMark, a flavor of markdown, to be easier to parse and more featureful. Below is some example djot +Plain text is kind of insane. It's capable of being anything, and can also be transmuted into anything. It's infinite extensibility makes it a powerful tool that every developer should have in their arsenal. For this journal, we use a lot of plain text. In fact, the article you're reading right now is written in plain text, _not with some web UI_. A while back, I found a markup language called [djot](https://djot.net). It was created by the same person who created CommonMark, a flavor of markdown, to be easier to parse and more featureful. Below is some example djot ```djot # Heading @@ -20,12 +18,11 @@ paragraph 1. list 2. list -3. list ``` The benefit of using djot is that it compiles directly to HTML, thus the jorunalists who have joined Compute don't need to learn HTML to write articles. They also don't need to learn a clunky slow website editor like Wix or Squarespace. -This is another superpower of plain text, if we used Wix for our website, our journalists would need to learn how to use the Wix UI, and how to write articles _for_ that UI. If we needed to change our tooling at any time, they would need to re-learn everything for _that_ tool. Not only that, but we would need to port the entire website (_every_ article), to use that new tooling. This is not so with plain text, if things change in the pipeline, or even if you're just joining our publication, there's no need to re-learn how to write text. At worst, you just need to convert the plain text to another format of plain text (djot to HTML for example). All our journalists need to know how to do is write their articles in djot, and submit it to the team via the pipeline +This is another superpower of plain text, if we used Wix for our website, our journalists would need to learn how to use the Wix UI, and how to write articles _for_ that UI. If we needed to change our tooling at any time, they would need to re-learn everything for _that_ tool. Not only that, but we would need to port the entire journal (_every_ article), to use that new tooling. This is not so with plain text, if things change in the pipeline, or even if you're just joining the journal, there's no need to re-learn how to write text. At worst, you just need to convert the plain text to another format of plain text (djot to HTML for example). All our journalists need to know how to do is write their articles in djot, and submit it to the team via the pipeline ## The Pipeline @@ -39,7 +36,7 @@ Pictured above is the full pipeline that articles go through in order to reach y 4. Once the article has been edited, the pull request gets merged into the main branch of our git repository, which is where the articles you see live 5. From there, the article goes through CI and gets deployed (we'll get into that in more detail later) -Basically, this is just the workflow you would use for code, but adapted for journalism. In other words, no learning curve for our journalists! And if they do need to learn it, then this is information that they *should* know _anyway_. The workflow you see above has been in the making since git was created in 2005, with the sole purpose of efficiently moving code from development, into production. In the places where this workflow is used, more overhead in the pipeline means time, and time means money. Thus the workflow used in those places should be as simple as possible to reduce overhead, and I see it no differently for our publication. If this workflow has worked for nearly 2 decades for a pathologically huge project like the Linux kernel (which git was tailor-made to handle), the better. +Basically, this is just the workflow you would use for code, but adapted for journalism. In other words, no learning curve for our journalists! And if they do need to learn it, then this is information that they *should* know _anyway_. The workflow you see above has been in the making since git was created in 2005, with the sole purpose of efficiently moving code from development, into production. The more efficiently we can accomplish that, and the more bad code we can filter out of production, the better. If this workflow has worked for nearly 2 decades for a pathologically huge project like the Linux kernel (which git was tailor-made to handle), the better. ## CI @@ -47,9 +44,9 @@ Consider the following: If I'm accepting untrusted code from the public into my Their pipeline checks if the library with your new code compiles to every platform it's compatible with, with every feature enabled. It also makes sure that your code is well-formatted, contains no conflicts of license, uses no libraries banned by the project, and contains no security advisories. The _only_ way this many checks can be done on every git commit, is through CI, GitHub Actions in egui's case. -The way I've described CI so far has probably made it seem like the least simple thing you could add to your project, but CI is actually _quite_ simple, and it's an excellent example of how capable of a tool you can make by just building simple, on top of simple, on top of simple. Really, CI is just shell scripting with extra steps. Despite it's inherent simplicity, CI can serve not only as a means to filter bugs out of pull requests, but it can also be a simple way to communicate to open source developers _what a project wants_ out of their code. Instead of having to read a big `CONTRIBUTORS.md` file to get an idea of that, developers can know that their code is good quality if it just passes CI. +If you're making an open source project, and it becomes big enough to pull in contributions from a lot of developers, CI can not only serve as a means to filter bugs out of pull requests, but also as a way to communicate to open source developers _what a project wants_ out of their code. Instead of having to read a big `CONTRIBUTORS.md` file to get an idea of that, developers can know that their code is good quality if it just passes CI. -Fortunately, the level of CI I've described above isn't required for journalism. Our CI simply compiles our journalists' unreviewed articles, and serves them on an un-indexed (not visible on production) web page so that they and the team can preview their work before merging it. Our CI is also responsible for indexing and publishing finished articles onto our production website. +Fortunately, the level of CI I've described above is not required for journalism. Our CI simply compiles our journalists' unreviewed articles, and serves them on an un-indexed (not visible on production) web page so that they and the team can preview their work before merging it. Our CI is also responsible for indexing and publishing finished articles onto our production website. We could get the CI to do an automated grammar check, but there are too many tech-terms that the checker would need to know in order for it to pass consistently. ## Deployment @@ -59,30 +56,26 @@ Deployment is the most complex part of our pipeline; getting the written, produc - Minify and compress compiled HTML - Index articles with our search engine -Because our CI tool is running this code, we can know which articles need compilation, who wrote those articles, and if any articles need to be deleted. Our CI tools will put our code in the working directory of our git repo. And via environment variables, the CI tool will tell us which files have changed, how the pipeline was triggered (via pull request, code push, etc.), as well as which git branch production resides in, and which branch our code is currently in. Our code can then use this information to... +Because our CI tool is running this code, we can know which articles need compilation, who wrote those articles, and if any articles need to be deleted. Via environment variables, our CI tool will pass to our code the git branch we're running on, the git commit that came before the latest one, and the latest git commit. Our code can then use this information to... -- Stat the changed files, which is how we know which files need to be compiled, and which files have been deleted -- Run a blame on new articles, which is how we figure out who wrote them -- See if we have changed the production branch, and index new articles if so +- Run a diff between the two commits, which is how we know which files need to be compiled, and which files have been deleted +- Run a blame on the new articles, which is how we figure out who wrote them +- See if we are we have changed the main branch, and index new articles if so -Everything I've described that the program can do so far can be done in just \~400 lines of Rust. This is the effect of buidling simple on top of simple, _and making an effort to retain simplicity_ by making the most out of the simple building blocks. (P.S: Our Rust code now also generates a title card image for each article, so they look better on platforms like Twitter and Discord. By using the same stradegy, I only needed to add \~230 lines to our Rust code) - -[](https://twitter.com/garybernhardt/status/1344341213575483399) - -My Rust code makes heavy use of git, a very simple yet amazing tool for adding functionality to plain text. +In our case, what CI allows us to do is keep as much of our pipeline as automated as possible. Our journalists should only need to focus on writing good articles, not wrestling with tooling. Coming back to the benefits of plain text, git is an extremely powerful tool for working with plain text. - It allows us to separate the WIP and the finished articles - It allows us to keep an accurate and automated reference of who wrote and edited each article -- It allows a copy of the entire publication to be stored in many different places as backups. +- It allows a copy of the entire journal to be stored in many different places as backups. - It allows us to easily sync new articles and changes to any git-compatible software forge of our choice (we use [forgejo](https://forgejo.org/)) -By taking advantage of the vast functionality that a simple tool like git gives us, our code can stay lean, while also being very mean. Speaking of staying lean... +By and large, with the power of git, plain text can fill more use cases than you could possibly imagine. -## Webpages (and staying based) +## Our webpages (and staying based)  -There is no better example of the cons of complexity than the modern web. Most webpages are not only bloated with ads, cookie banners, autoplaying BS, popups and the like; but they are also inundated with copious amounts of JavaScript. We only use JavaScript in 2 places +The modern web sucks. Most webpages are not only bloated with ads, cookie banners, autoplaying BS, popups and the like; most webpages are also inundated with copious amounts of JavaScript. We only use JavaScript in 2 places 1. On our homepage to power the search bar and display articles 2. Our web design tool, Webflow, bundles a small amount of JavaScript in every page (more on that later) @@ -91,8 +84,10 @@ Other than that, the actual article pages, such as this one, depend on nothing b Instead of _that_, I used [Webflow](https://webflow.com/) to design our webpages. For a one-time fee of $24, you can have access to the Webflow editor for 1 month, and then export your web pages to HTML/CSS/JS. Webflow is very different from your average Wix/Squarespace, those editors are designed for non-programmers who don't know and don't want to know HTML or CSS. Webflow is an editor for _developers_ that know what they're doing. It gives you the full power of HTML and CSS in a responsive, visual editor; making it an incredibly flexible tool capable of generating very based and performant webpages. Unlike the latter tools which generate bloated and obfuscated garbage. -In just HTML, CSS, and JS: The homepage of this journal compressed is around 152.42 KB large, whereas our old Wix website's homepage compressed is around 861.9 KB large. That's nearly a 6x size difference. That's the effect of building your website in a UI that attempts to match up to the flexibility of HTML and CSS... without actually exposing you to the HTML and CSS. This is where Webflow thrives, as it is literally just a simple graphical editor _for_ HTML and CSS. It's another excellent example of what building simple around simple can do! +## Search engine + +I was expecting to have to put most of the effort of getting our website ready into getting a search bar working. Instead, I found [Meilisearch](https://www.meilisearch.com/), and I fell in love immediately. Not only is it incredibly easy to deploy _and_ use, but it's also much more than just a search engine. You can basically use it as a way to index and display pages on your website. And by using [instantsearch-meilisearch](https://github.com/meilisearch/meilisearch-js-plugins/tree/main/packages/instant-meilisearch) (that one dependency that our homepage uses), we can just make an article browser and search experience, _incredibly_ easily. It's not just easy on the front-end, the [meilisearch-sdk](https://lib.rs/crates/meilisearch-sdk) is also incredibly easy to use to index articles. Meilisearch, despite being a complex full-text search engine, is incredibly simple to use. Just initialize a search index, and send documents to it in a structured JSON format. On the front end, you can get that JSON back with a simple HTTP request containing the search query and field constraints (sorting, only sending snippets of big fields, etc.). All in all, Meilisearch's unexpected simplicity suprised me in a big way, and it made my job so _sooo_ much easier! ## In conclusion -Computers have an inconcievable amount of potential, but they're only as smart as their programmer. When you're building something with a computer, it's often much better to do more with less, than less with more. Don't use 17 different JavaScript frameworks with your hypervisor GPU WEB2.0 interface-driven scripting framework to drive your map/reduce-aware proxy-oriented software API. Just start simple, build simple, and if you need complexity, build it with more simple. The point I'm trying to make here is that bloat is your enemy, and it's often better for you, your team, and your users to just KISS (Keep it simple, stupid!) +Computers have an inconcievable amount of potential, but they're only as smart as their programmer. When you're building something with a computer, it's often much better to do more with less, than less with more. Don't use 17 different JavaScript frameworks with your hypervisor GPU WEB2.0 interface-driven scripting framework to drive your map/reduce-aware proxy-oriented software API. Just start simple, build simple, and if you need complexity, create it with the simple. Often times in computer software, plain text is the simplest place to start. From there, you can add complexity by processing the plain text in some way (hell, I made a whole ass [PowerPoint clone](https://github.com/StratusFearMe21/grezi-next) centered around plain text). If you need more than plain text, try the terminal. And if you need more than that, try [wxWidgets](https://www.wxwidgets.org/). The point I'm trying to make here is that bloat is your enemy, and it's often better for you, your team, and your users to just KISS (Keep it simple, stupid!) diff --git a/templates/article.html b/templates/article.html deleted file mode 100644 index a1ead6a..0000000 --- a/templates/article.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - -
- -- {{read_time}} minute read · Published: {{published}} -
-/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var he=/(.)^/,ve={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},Ce=/\\|'|\r|\n|\u2028|\u2029/g,ge=function(u){return"\\"+ve[u]},x=/^\s*(\w|\$)+\s*$/;return t.template=function(u,l,E){!l&&E&&(l=E),l=t.defaults({},l,t.templateSettings);var b=RegExp([(l.escape||he).source,(l.interpolate||he).source,(l.evaluate||he).source].join("|")+"|$","g"),P=0,I="__p+='";u.replace(b,function(h,d,T,B,U){return I+=u.slice(P,U).replace(Ce,ge),P=U+h.length,d?I+=`'+
-((__t=(`+d+`))==null?'':_.escape(__t))+
-'`:T?I+=`'+
-((__t=(`+T+`))==null?'':__t)+
-'`:B&&(I+=`';
-`+B+`
-__p+='`),h}),I+=`';
-`;var c=l.variable;if(c){if(!x.test(c))throw new Error("variable is not a bare identifier: "+c)}else I=`with(obj||{}){
-`+I+`}
-`,c="obj";I=`var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};
-`+I+`return __p;
-`;var y;try{y=new Function(l.variable||"obj","_",I)}catch(h){throw h.source=I,h}var k=function(h){return y.call(this,h,t)};return k.source="function("+c+`){
-`+I+"}",k},t}()});var Te=be((nn,ct)=>{"use strict";var re={},De={},Pe=[],Ye=window.Webflow||[],Me=window.jQuery,ke=Me(window),zt=Me(document),Oe=Me.isFunction,xe=re._=tt(),rt=re.tram=Ke()&&Me.tram,He=!1,Ge=!1;rt.config.hideBackface=!1;rt.config.keepInherited=!0;re.define=function(t,f,v){De[t]&&ot(De[t]);var A=De[t]=f(Me,xe,v)||{};return it(A),A};re.require=function(t){return De[t]};function it(t){re.env()&&(Oe(t.design)&&ke.on("__wf_design",t.design),Oe(t.preview)&&ke.on("__wf_preview",t.preview)),Oe(t.destroy)&&ke.on("__wf_destroy",t.destroy),t.ready&&Oe(t.ready)&&Ht(t)}function Ht(t){if(He){t.ready();return}xe.contains(Pe,t.ready)||Pe.push(t.ready)}function ot(t){Oe(t.design)&&ke.off("__wf_design",t.design),Oe(t.preview)&&ke.off("__wf_preview",t.preview),Oe(t.destroy)&&ke.off("__wf_destroy",t.destroy),t.ready&&Oe(t.ready)&&Ut(t)}function Ut(t){Pe=xe.filter(Pe,function(f){return f!==t.ready})}re.push=function(t){if(He){Oe(t)&&t();return}Ye.push(t)};re.env=function(t){var f=window.__wf_design,v=typeof f<"u";if(!t)return v;if(t==="design")return v&&f;if(t==="preview")return v&&!f;if(t==="slug")return v&&window.__wf_slug;if(t==="editor")return window.WebflowEditor;if(t==="test")return window.__wf_test;if(t==="frame")return window!==window.top};var ze=navigator.userAgent.toLowerCase(),at=re.env.touch="ontouchstart"in window||window.DocumentTouch&&document instanceof window.DocumentTouch,Bt=re.env.chrome=/chrome/.test(ze)&&/Google/.test(navigator.vendor)&&parseInt(ze.match(/chrome\/(\d+)\./)[1],10),$t=re.env.ios=/(ipod|iphone|ipad)/.test(ze);re.env.safari=/safari/.test(ze)&&!Bt&&!$t;var Ve;at&&zt.on("touchstart mousedown",function(t){Ve=t.target});re.validClick=at?function(t){return t===Ve||Me.contains(t,Ve)}:function(){return!0};var st="resize.webflow orientationchange.webflow load.webflow",Xt="scroll.webflow "+st;re.resize=Ze(ke,st);re.scroll=Ze(ke,Xt);re.redraw=Ze();function Ze(t,f){var v=[],A={};return A.up=xe.throttle(function($){xe.each(v,function(L){L($)})}),t&&f&&t.on(f,A.up),A.on=function($){typeof $=="function"&&(xe.contains(v,$)||v.push($))},A.off=function($){if(!arguments.length){v=[];return}v=xe.filter(v,function(L){return L!==$})},A}re.location=function(t){window.location=t};re.env()&&(re.location=function(){});re.ready=function(){He=!0,Ge?Kt():xe.each(Pe,nt),xe.each(Ye,nt),re.resize.up()};function nt(t){Oe(t)&&t()}function Kt(){Ge=!1,xe.each(De,it)}var Ie;re.load=function(t){Ie.then(t)};function ut(){Ie&&(Ie.reject(),ke.off("load",Ie.resolve)),Ie=new Me.Deferred,ke.on("load",Ie.resolve)}re.destroy=function(t){t=t||{},Ge=!0,ke.triggerHandler("__wf_destroy"),t.domready!=null&&(He=t.domready),xe.each(De,ot),re.resize.off(),re.scroll.off(),re.redraw.off(),Pe=[],Ye=[],Ie.state()==="pending"&&ut()};Me(re.ready);ut();ct.exports=window.Webflow=re});var dt=be((rn,lt)=>{"use strict";var ft=Te();ft.define("brand",lt.exports=function(t){var f={},v=document,A=t("html"),$=t("body"),L=".w-webflow-badge",N=window.location,S=/PhantomJS/i.test(navigator.userAgent),W="fullscreenchange webkitfullscreenchange mozfullscreenchange msfullscreenchange",J;f.ready=function(){var M=A.attr("data-wf-status"),Z=A.attr("data-wf-domain")||"";/\.webflow\.io$/i.test(Z)&&N.hostname!==Z&&(M=!0),M&&!S&&(J=J||K(),G(),setTimeout(G,500),t(v).off(W,se).on(W,se))};function se(){var M=v.fullScreen||v.mozFullScreen||v.webkitIsFullScreen||v.msFullscreenElement||!!v.webkitFullscreenElement;t(J).attr("style",M?"display: none !important;":"")}function K(){var M=t('').attr("href","https://webflow.com?utm_campaign=brandjs"),Z=t("").attr("src","https://d3e54v103j8qbb.cloudfront.net/img/webflow-badge-icon-d2.89e12c322e.svg").attr("alt","").css({marginRight:"4px",width:"26px"}),ee=t("
").attr("src","https://d3e54v103j8qbb.cloudfront.net/img/webflow-badge-text-d2.c82cec3b78.svg").attr("alt","Made in Webflow");return M.append(Z,ee),M[0]}function G(){var M=$.children(L),Z=M.length&&M.get(0)===J,ee=ft.env("editor");if(Z){ee&&M.remove();return}M.length&&M.remove(),ee||$.append(J)}return f})});var vt=be((on,ht)=>{"use strict";var Vt=Te();Vt.define("focus-visible",ht.exports=function(){function t(v){var A=!0,$=!1,L=null,N={text:!0,search:!0,url:!0,tel:!0,email:!0,password:!0,number:!0,date:!0,month:!0,week:!0,time:!0,datetime:!0,"datetime-local":!0};function S(w){return!!(w&&w!==document&&w.nodeName!=="HTML"&&w.nodeName!=="BODY"&&"classList"in w&&"contains"in w.classList)}function W(w){var Q=w.type,q=w.tagName;return!!(q==="INPUT"&&N[Q]&&!w.readOnly||q==="TEXTAREA"&&!w.readOnly||w.isContentEditable)}function J(w){w.getAttribute("data-wf-focus-visible")||w.setAttribute("data-wf-focus-visible","true")}function se(w){w.getAttribute("data-wf-focus-visible")&&w.removeAttribute("data-wf-focus-visible")}function K(w){w.metaKey||w.altKey||w.ctrlKey||(S(v.activeElement)&&J(v.activeElement),A=!0)}function G(){A=!1}function M(w){S(w.target)&&(A||W(w.target))&&J(w.target)}function Z(w){S(w.target)&&w.target.hasAttribute("data-wf-focus-visible")&&($=!0,window.clearTimeout(L),L=window.setTimeout(function(){$=!1},100),se(w.target))}function ee(){document.visibilityState==="hidden"&&($&&(A=!0),V())}function V(){document.addEventListener("mousemove",F),document.addEventListener("mousedown",F),document.addEventListener("mouseup",F),document.addEventListener("pointermove",F),document.addEventListener("pointerdown",F),document.addEventListener("pointerup",F),document.addEventListener("touchmove",F),document.addEventListener("touchstart",F),document.addEventListener("touchend",F)}function H(){document.removeEventListener("mousemove",F),document.removeEventListener("mousedown",F),document.removeEventListener("mouseup",F),document.removeEventListener("pointermove",F),document.removeEventListener("pointerdown",F),document.removeEventListener("pointerup",F),document.removeEventListener("touchmove",F),document.removeEventListener("touchstart",F),document.removeEventListener("touchend",F)}function F(w){w.target.nodeName&&w.target.nodeName.toLowerCase()==="html"||(A=!1,H())}document.addEventListener("keydown",K,!0),document.addEventListener("mousedown",G,!0),document.addEventListener("pointerdown",G,!0),document.addEventListener("touchstart",G,!0),document.addEventListener("visibilitychange",ee,!0),V(),v.addEventListener("focus",M,!0),v.addEventListener("blur",Z,!0)}function f(){if(typeof document<"u")try{document.querySelector(":focus-visible")}catch{t(document)}}return{ready:f}})});var gt=be((an,mt)=>{"use strict";var pt=Te();pt.define("focus",mt.exports=function(){var t=[],f=!1;function v(N){f&&(N.preventDefault(),N.stopPropagation(),N.stopImmediatePropagation(),t.unshift(N))}function A(N){var S=N.target,W=S.tagName;return/^a$/i.test(W)&&S.href!=null||/^(button|textarea)$/i.test(W)&&S.disabled!==!0||/^input$/i.test(W)&&/^(button|reset|submit|radio|checkbox)$/i.test(S.type)&&!S.disabled||!/^(button|input|textarea|select|a)$/i.test(W)&&!Number.isNaN(Number.parseFloat(S.tabIndex))||/^audio$/i.test(W)||/^video$/i.test(W)&&S.controls===!0}function $(N){A(N)&&(f=!0,setTimeout(()=>{for(f=!1,N.target.focus();t.length>0;){var S=t.pop();S.target.dispatchEvent(new MouseEvent(S.type,S))}},0))}function L(){typeof document<"u"&&document.body.hasAttribute("data-wf-focus-within")&&pt.env.safari&&(document.addEventListener("mousedown",$,!0),document.addEventListener("mouseup",v,!0),document.addEventListener("click",v,!0))}return{ready:L}})});var bt=be((sn,wt)=>{"use strict";var qe=Te();qe.define("links",wt.exports=function(t,f){var v={},A=t(window),$,L=qe.env(),N=window.location,S=document.createElement("a"),W="w--current",J=/index\.(html|php)$/,se=/\/$/,K,G;v.ready=v.design=v.preview=M;function M(){$=L&&qe.env("design"),G=qe.env("slug")||N.pathname||"",qe.scroll.off(ee),K=[];for(var H=document.links,F=0;F