teleren/devto huggingface dataset:
and it was exhausting
Tags: gamedev, writing
Published: 2023-12-24 16:22:27

---
title: and it was exhausting
published: true
date: 2023-12-21 00:00:00 UTC
tags: [ 'gamedev', 'writing' ]
canonical_url: https://onwriting.games/daily/20231221-1011-and-it-was-exhausting/
---

This email is a reality check that, sooner or later, we have to face as game creators.

I'm going to quote Aureus, creator of Roadwarden, who put it very clearly in [an interview](https://www.campfirewriting.com/learn/interview-aureus-roadwarden):

> I prefer to avoid a lot of preparation before writing, and instead discover and explore as I go—and that’s terrible for video games. I wrote quite a large chunk of the game having only a few vague concepts in mind, and that did wonders when it came to throwing new hooks at the player or adding more mysteries to the world. And as time went on, the more the stories in the game felt detached and nonsensical, with no end in sight.

> I had to tell myself to stop and tie things together. I spent months updating not just the script, but also the code, the illustrations, and the game systems.

> And then, indeed, work went much faster. Using my previous experience and the clear goal in sight, I started adapting old areas, writing [about] new settlements in a much shorter time, and adding more answers than questions. The game had its skeleton, I just had to add the flesh to it.

> And it was boring.

> Since I already knew what specific characters ought to do for the story, I just wanted to be done with them and get back to planning new, weird things. In other words, I got better results the more I worked against my nature. And it was exhausting.

I think that in one way or another, all creative disciplines have this situation, but in video games, at least for me, it's brutal.

Especially because it can last for years if the video game is big enough.

This resonates a lot because I'm currently in that moment with Dance of the Spirits: things are taking shape, but it takes a brutal effort to get through the boring parts.

And well, not **everything** can be _fun and games_.

To not end it in a sad note:

If you're in this situation, get together with other people, play your game with them, a little praise/feedback helps move things forward.
Tech in Everyday Life: When Did Your Coding Skills Unexpectedly Shine?
Tags: discuss, codenewbie, beginner
Published: 2023-12-21 00:00:00

---
published_at : 2023-12-21 00:00 +0000
---
Highlight a non-tech scenario where your coding skills proved unexpectedly useful.
<br>
Follow the [CodeNewbie Org](https://dev.to/codenewbieteam) and [#codenewbie](https://dev.to/t/codenewbie) for more discussions and online camaraderie!
*{% embed* https://dev.to/codenewbieteam *%}*
A simple website that displays the weather and upcoming games for NFL and MLB (First project).
Published: 2023-12-20 23:10:28

I wanted to share an exciting project I've been working on, Stadium-Weather.com. As a die-hard NFL and MLB enthusiast, I often found myself scrambling to check game schedules and weather forecasts separately. That's when I decided to create a one-stop hub for all things game day-related. This is my first time accessing API's and transforming it myself for the front end.

What is Stadium-Weather.com?

📅 Complete Game Schedules: Never miss a kickoff or first pitch with our comprehensive NFL and MLB game schedules (For when in season). You are able to create an account, and favorite your team so it shows up first!
🌦️ Real-Time Weather Updates: Displays the weather for game day, so this can help you with your fantasy picks.
I plan to add more features (Articles, things to do around the stadium if you're going in person, personalized timezone, etc).

Please do let me know if you guys think of any other cool features or issues found!
Join the CTRL+Hack+ZK Hackathon for a Chance to Win $75K & $500K EFP funding!"
Tags: hackathon, rust, web3, softwaredevelopment
Published: 2023-12-20 23:02:50

🚀 Devs, are you looking for a hacking adventure? Join the **CTRL+Hack+ZK Hackathon** by **Aleph Zero**!

CTRL+Hack+ZK Hackathon is a 3-week immersive hackathon experience. Whether you’re a web3 pro or a newbie, this is your chance to collaborate, innovate, and bring your ideas to life on Aleph Zero!

**When?** Jan 10-31, 2024
**Where?** Online - Participate from anywhere!
**Tracks:** TELCO, DEGEN/DEFI, DID, TOOLING & INFRASTRUCTURE, GAMING
**Rewards:** up to $75,000 in bounties and up to $500,000 in EFP investments!

If you haven't yet, start getting familiar with Aleph Zero in the [Dev portal](https://alephzero.org/developers) and join the [Discord community](https://discord.com/invite/alephzero).

**​For more information, pl​ease visit​ the hackathon website: https://hack.alephzero.org**

**About Aleph Zero**:
Aleph Zero is a cutting-edge, privacy-enhancing layer 1 blockchain. Known for its speed and efficiency, it’s setting new standards in data privacy, transaction security, and genuine decentralization. With over 40 active use cases, Aleph Zero is revolutionizing various sectors.
#Cardano Analysis for December 21
Published: 2023-12-20 22:55:36


📈 Although $ADA experienced a 78% increase in December 2023, its growth has somewhat plateaued. The asset has been trading sideways for the past two weeks, hovering between a support zone of $0.52–$0.56 and a resistance range of $0.64–$0.68

With #Bitcoin 's bullish trend, #ADA's continued rise seems likely. A key resistance level at $0.62 stands in its way, but surpassing this could lead to a potential surge towards $0.7.

Conversely, $ADA could face a deeper correction if Bitcoin’s chart reflects a downturn. In such a scenario, Cardano might retest its existing support zone and possibly probe the psychological level of $0.5.

#ADA #priceprediction #PriceMovement #PriceTrends

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ytd0db3gdicpjas05ufv.png)
A holiday gift: "inspect" dialog for Mini Micro
Tags: miniscript, minimicro, programming, tools
Published: 2023-12-20 22:52:01

I was delighted by a pleasant surprise this week, when MiniScript user [Marc Gurevitx](https://github.com/marcgurevitx) posted a utility he wrote for [Mini Micro](https://miniscript.org/MiniMicro) called **[InspectDialog](https://github.com/marcgurevitx/inspectDialog)**.

What this does is provide an "inspector" for MiniScript values, allowing you to explore complex data structures with ease!

![Inspector demo animation](https://github.com/marcgurevitx/inspectDialog/raw/master/doc/inspect.gif)

The [code](https://github.com/marcgurevitx/inspectDialog/blob/master/lib/inspectDialog.ms) is nice and clean, and based on the textUtil.Dialog class in [/sys/lib/textUtil](https://github.com/JoeStrout/minimicro-sysdisk/blob/master/sys/lib/textUtil.ms).  Much like [findFile](https://dev.to/joestrout/quick-tip-findfile-202a), Marc's new InspectDialog can be used from code, or you can use it interactively on the command line.

## Installation

To open this delightful holiday present in your own Mini Micro, just follow these steps:

1. **Download** [inspectDialog.ms](https://raw.githubusercontent.com/marcgurevitx/inspectDialog/master/lib/inspectDialog.ms) and save it in your user disk, under a folder called "lib" (i.e., save it as /usr/lib/inspectDialog).

2. **edit /usr/startup.ms** and add this code:

```
import "inspectDialog"

inspect = function(value)
	dlog = inspectDialog.InspectDialog.make(@value)
	btn = dlog.show
	return @btn.payload
end function

_savedGlobals.inspectDialog = inspectDialog
_savedGlobals.inspect = @inspect
```

This imports the inspectDialog module, and then adds an `inspect` command for easy use.  It also stuffs both of these into the `_savedGlobals` map, so that they don't disappear every time you do a `reset`.

3. **`reboot`** Mini Micro.

That's it!  Now you'll have an `inspect` command you can use anywhere.

## Usage

Just type `inspect` followed by the name of some variable you're curious about.  The inspect dialog will snap open.  Using the mouse or keyboard, navigate your data structure, pressing `Return` (or clicking the Inspect button) to drill down to sub-values, or `b` (or clicking Back) to go back up.   To exit the dialog, you can always press `Esc`, which will return the value of the variable you were inspecting; or if you have drilled down, you can also press `c` (Current) to return the value you're currently inspecting instead.

![Animation of inspect dialog on Advent of Code data](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7r3lszf2cp7izp8cw86m.gif)

The image above shows me inspecting some data from today's [Advent of Code](https://dev.to/joestrout/join-the-miniscript-advent-of-code-contest-3gm5) challenge.  I always used to use `pprint` for this sort of thing, and then wade through page after page of output looking for the data I needed.  No more!  From now on, it's **inspect** for me!

Thank you, Marc!
Angular: Prevent navigation if user performs changes
Published: 2023-12-20 21:50:49

## Reason

In our regular feedback sessions an issue that frequently came up was that out users start introducing data in a form and then press a wrong button and the application navigates to another page. When they come back the form is empty and all of their work is gone.

The application works just fine from a technical point of view, but the user experience suffers. 

## What can we do?

If the user made any changes to the page and wants to perform a navigation he will get an alert message. If he agrees, the the navigation is done and data is destroyed. If he doesn't, then he will have a chance to save the data and then continue his work.

## Angular technical solution

&nbsp;

**1. First of all we define an interface named ComponentCanDeactivate**
```typescript

export interface ComponentCanDeactivate {
  canDeactivate(): boolean;
}

```

&nbsp;

**2. And then we implement the interface**
``` typescript
export class MyComponent implements ComponentCanDeactivate {

//...

  canDeactivate(): boolean {
    return !shouldComponentDeactivate;
  }

//...
}

```

&nbsp;

**3. Create an Angular guard**

Use Angular canDeactivateGuard. Where MessageService generates a message based on your needs and context.

I used here the javascript confirm api, but you can use any kind of component/service. 

```typescript

export const formCanDeactivateGuard: CanDeactivateFn<ComponentCanDeactivate> = (
  component
) => {
  const deactivateMessage = inject(MessageService).getDeactivateMessage;

  if (!component.canDeactivate()) {
    return confirm(deactivateMessage);
  }
  return true;
};

```

&nbsp;

**4. Use the guard in router configuration**

```typescript

 {
    path: 'detail/:uuid',
    component: MyComponent,
    canDeactivate: [formCanDeactivateGuard],
 },
```

&nbsp;

If your guard activates before the application is completely loaded, transform the interface into an abstract class and then add the following method in the class. 
 
```typescript
  @HostListener('window:beforeunload', ['$event'])
  unloadNotification($event: any) {
    if (!this.canDeactivate()) {
      $event.returnValue = false;
    }
  }
```

Also you can create a default behaviour, by creating a class that implements this interface and extending that class when you need it. 

ex: 

```typescript
export class MyDefaultComponent implements ComponentCanDeactivate {
  abstract get form(): AbstractControl;

  canDeactivate(): boolean {
    return !this.form.dirty;
  }
}
```


**Conclusion:**
We can use guards to prevent a user from performing a navigation when he has unsaved data.
Adventofcode 🎄: Day 20 - React Fact
Tags: react
Published: 2023-12-20 21:28:35

React introduced the concept of the "Virtual DOM" as a performance optimisation technique. Instead of directly manipulating the entire DOM every time there is a change, React creates lightweight virtual representation of it in memory.This virtual DOM is a copy of the actual DOM, and when changes occur, React first updates the virtual DOM. Then, it intelligently calculates the most efficient way to apply these changes to the real DOM.

By minimising direct interaction with the DOM and strategically updating only what is necessary, React significantly boosts the speed and efficiently of UI updates.
How do you add Medium or Dev.to articles to your GitHub Profile?
Tags: ruby, rails, opensource
Published: 2023-12-20 21:23:36

Hello folks, 2 days ago, I asked myself, “How can I add Medium articles to my GitHub Profile?” So I googled it and found some articles. I read them, and the articles provided some repositories, but the projects are outdated and don’t work. I decided to create an open-source project for this. We can call an API to get an article as a responsive SVG and showcase it on our GitHub profiles.

[The Repo](https://github.com/codescaptain/rails-medium-snippet)

The source of Medium and Dev.to articles
I use the API:

`https://api.rss2json.com/v1/api.json?rss_url=https://medium.com/feed/#{@the_medium_username}")
`
`https://api.rss2json.com/v1/api.json?rss_url=https://dev.to/feed/#{@the_medium_username}`

The API gives the user’s **latest 10 articles**. So that is it. We already have data.

### Medium Snippet API
I have been using Ruby on Rails in the project. The Medium Snippet API allows users to retrieve and display the latest 10 **Medium** or **Dev.to** articles for a given username. Users can add these articles to their GitHub profiles by providing the username and index parameters.

I am currently maintaining it and there are to-dos.
Like:
- Update snippet card style
- Add a new style for white mode theme
- …

The API finds articles from the username with this link:

``` html
https://medium-snippet-dc633c4f39a0.herokuapp.com/api/article.svg?username=@codescaptain&index=0&source=medium

https://medium-snippet-dc633c4f39a0.herokuapp.com/api/article.svg?username=@codescaptain&index=0&source=dev_to
```
- username: your **medium** or **dev.to** username/profile
- index: your recent article index. e.g.: 0 means your latest article.

### Example Medium
#### Code:

```
[![My Medium story](@codescaptain&index=1)](#)">https://medium-snippet-dc633c4f39a0.herokuapp.com/api/article.svg?username=@codescaptain&index=1)](#)
[![My Medium story](@codescaptain&index=0)](#)">https://medium-snippet-dc633c4f39a0.herokuapp.com/api/article.svg?username=@codescaptain&index=0)](#)
```
#### Output(the article has been changing depending index):

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/szxr3eblm4up6c79m10o.png)

Contact
For inquiries, you can reach out through my [GitHub Profile](https://github.com/codescaptain).
2024 Community Hours Survey
Tags: survey, community
Published: 2023-12-20 21:19:34

We want to make sure that our community hours are serving our community as best we can, so we've put together a brief survey asking you about your experience and interests regarding Lagoon. We'd really appreciate if you could take a couple minutes to fill it out!

https://forms.gle/p6vEHfzCgnp3XuzJ6

Best wishes for the rest of 2023 from the Lagoon team - we wish you very happy holidays and a happy new year!
"Being Open to the Unexpected": CodeNewbie Podcast S26E8
Tags: podcast, career, beginners, codenewbie
Published: 2023-12-20 20:45:51

Our final episode of Season 26 is out now with [Katherine Evans](), Lead Engineering Instructor at Actualize Coding Bootcamp + Senior Software Engineer at Neon One! In this episode,Katherine recounts her transition from bootcamp student to teacher, offering invaluable advice for recent grads navigating their first roles, discussing the relevance of coding education in today's economic climate, and sharing insights for those considering a career in coding.

{% embed https://www.codenewbie.org/podcast/being-open-to-the-unexpected %}

Katherine Evans is a software engineer, tech educator, and (amateur) potter living in Chicago. With a background in nonprofit work, she’s focused on how technology can tackle real-world problems, improve peoples’ lives, and do good in the world. A perennial student, she finds joy in learning new things and sharing these discoveries with others.

- [Listen on Apple Podcasts](https://podcasts.apple.com/us/podcast/codenewbie/id919219256?i=1000639189423)

- [Listen on Spotify](https://open.spotify.com/episode/6lE3f47fZaBlERl0gjQ024?si=c12b1b4574174891)

Or, listen wherever you normally get your podcasts!

***

### We will see you next week, happy coding

PS: Make sure to subscribe to the CodeNewbie podcast if you haven't yet + review us on your chosen platform!
React on esbuild
Tags: react, esbuild, typescript
Published: 2023-12-20 20:29:47

Usually we use [create-react-app](https://create-react-app.dev/) which does some magic behind the scenes like [Webpack](https://webpack.js.org/). _Webpack_ is annoying, so let’s see how the app can work without it. I’ll try **esbuild** in this article instead.

We only need 3 packages:
```bash
yarn add react esbuild typescript
```

React is for components rendering

and _esbuild_ to do all the magic instead of _Webpack_:
- Transform _jsx_ to _JavaScript_
- Transform _Typescript_ to _JavaScript_
- Bundling all our code and node modules to one file
- Simple http server to serve bundled _index.js_

So we don’t even need _babel_. I like _babel_, but _esbuild_ already handles code transformation for us.

First of all let’s compile a command to use on yarn start:
```bash
./node_modules/.bin/esbuild index.tsx --bundle --outdir=. --servedir=. --loader:.js=tsx --watch
```

Where
`—watch` - to watch for changes so live reload is possible
`--loader:.js=tsx` - so esbuild understands and transforms Typescript
`--outdir=. --servedir=.` - to use a local esbuild http server. `“.”` - current path


Now let’s make `index.html`. We only need some basic structure inside:
```html
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Minimal Example</title>
</head>
<body>
  <div id="app"></div>
  <script src="index.js"></script>
</body>
</html>
```
So we can try to write some code:
`App.tsx`:
```JSX
import React from 'react';

class App extends React.Component {
  render() {
    return (
      <div>
      </div>
    );
  }
}

React.render(<App />, document.body);
```
If we want to enable live reloading we also need this line in App.tsx:
```Javascript
new EventSource('/esbuild').addEventListener('change', () => location.reload())
```

The next step is to check if bundling works as expected. Let’s add a component in a separate file.
Final code:
`App.tsx`:
```JSX
import React from 'react';
import { Name } from './components/Name';

new EventSource('/esbuild').addEventListener('change', () => location.reload())

class App extends React.Component {
  render() {
    return (
      <div>
        <h1><Name name="Artem"></Name></h1>
      </div>
    );
  }
}

React.render(<App />, document.body);
```

`components/Name.tsx`:
```JSX
import React from 'react';

type TName = 'Artem' | 'Vlad' | 'Ivan';

interface NameProps {
  name: TName;
}

class Name extends React.Component<NameProps> {
  render() {
    return <div>Hello from {this.props.name}</div>
  }
}

export { Name };
```

At last we can run the code to see how it works:
```bash
yarn start
// ./node_modules/.bin/esbuild index.tsx --bundle --outdir=. --servedir=. --loader:.js=tsx --watch
```

![Hello from Artem](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1tl1aoc6tmb6na8ca2dk.png)
The Start of My Flutter Journey
Published: 2023-12-20 20:12:28

In the last three weeks of my 12-week web development bootcamp, I took an exciting turn: diving into mobile app development for my final project. The appeal of mobile apps is clear - they offer a tangible, personal experience, accessible with just a swipe on our smartphones.

Initially, the world of mobile app development seemed daunting. The traditional route involves mastering native languages: Swift for iOS, Kotlin for Android. This approach, while robust, is time-consuming and complex, especially if you're targeting multiple platforms.

React Native was another contender. It's quite friendly for those with a React background, but it falls behind in speed and is gradually losing its edge in the tech world.

Then, I discovered Flutter. This framework changed my perspective on mobile app development for several reasons:

Speed and Efficiency: Flutter is notably faster than React Native. Its performance is top-notch, ensuring a smooth user experience.

Single Codebase: With Flutter, you write once and deploy everywhere. This means your app can run on iOS, Android, and even web platforms without the need to rewrite the code for each.

Hot Reload Feature: This is a game-changer. Hot reload allows developers to see changes in real-time without restarting the app, greatly speeding up the development process.

Cost-Effective for Startups: Flutter is particularly beneficial for startups. It eliminates the need for multiple teams dedicated to different platforms. A single Flutter team can manage the app across all platforms, significantly cutting down costs and simplifying project management.

Community and Support: Flutter, being an open-source framework, has a robust and growing community. This means plenty of resources, support, and shared knowledge, making it easier to troubleshoot and learn.

As a developer planning to deploy apps across various platforms, I find Flutter incredibly practical and user-friendly. It's not just about writing code; it's about creating an efficient workflow, reducing costs, and bringing ideas to life with less hassle.

This is why I chose Flutter for my guitar companion app. It's not just a tool for development; it's a smart business decision, particularly for startups looking to maximize resources. Flutter stands out as a versatile, cost-effective, and efficient solution for mobile app development.

In summary, if you're venturing into the world of mobile app development, whether as a beginner or a startup, consider Flutter. It's an investment in efficiency, scalability, and simplicity, ensuring that your app reaches a wider audience with less effort and more impact.
HOW DO I GET MY STOLEN CRYPTO BACK? OMEGA CRYPTO RECOVERY SPECIALIST
Tags: webdev
Published: 2023-12-20 20:05:52

How can I recover crypto lost during a transaction? 
How do I recover a lost crypto from a blockchain?

Omega Crypto Recovery Specialist is a company that uses advanced technology and techniques to recover stolen cryptocurrency. Their recovery process involves a thorough investigation of the theft, followed by the use of specialized software and forensic techniques to track and recover the stolen crypto.

Contact information;
Website..; ( omegarecoveryspecialist .c o m
Email;.. omegaCryptos@consultant .c o m )
Whatsap; +1 (701)_66 00)- 475
LeetCode Challenge
Tags: webdev, beginners, programming, algorithms
Published: 2023-12-20 19:48:03

Hello Everyone, I have taken up the challenge of doing 50 LEETCODE question in 30 days.

I have started this challenge on 16/12/23 and will continue this till 15/1/2024. I will keep you updated with the progress. Wish me luck🔥. Right now the score board is 

##**<u>11 questions / 5 days</u>**
saiba mais sobre nós
Published: 2023-12-20 19:37:16

Faremos com que seu site seja o mais visto da sua região, ficando entre os primeiros nas buscas do mecanismo de buscas Google e tudo isso sem custo por clique, chega de ficar parado cresça de vez a sua empresa com a gente fazendo a [criação de sites](https://agenciafort.com.br/criacao-de-sites/) conosco!