Giter VIP home page Giter VIP logo

hussy.net's Introduction

Hello there πŸ‘‹

I'm a vivacious software developer with a burning passion for code. Born in 1991, I navigate life with ADHD while embracing abstract thought and balancing my love for technology with hobbies like gaming, hiking, surfing, dancing, and playing guitar.

Header

πŸ—ΊοΈ Where am I?

I have a rather limited network presence, but I'm most active here on GitHub, over on Discord (C# and Pineapple Cove), and Stack Overflow. If you'd like to communicate with me, then I have a discussions area for that here on GitHub. If you prefer one-on-one communication, then you could always sponsor me, if you're interested in that sort of thing.

tacosontitan

Note: I don't respond to direct messages from non-sponsors outside the discussions area.

βš’οΈ What do I do?

As a senior C# developer with a decade of experience working in .NET environments, I specialize in crafting seamless integrations and optimizing legacy projects. I'm proficient in Agile methodologies, REST APIs, MSSQL, framework design and development, and driving efficiency and scalability through innovative solutions. Most notably, I'm passionate about adopting modern practices to enhance code quality and project outcomes while fostering a culture of continuous improvement.

csharp mssql typescript javascript html5 css3 dotnet git azure nodejs postman rabbitMQ

I'm a framework developer at heart, and I have a healthy relationship with unit tests.

🎧 What am I listening to?

I have a superlative love for music, and will listen to just about anything; if you're curious, the table below contains the 10 latest tracks added to my chasing dopamine playlist on Spotify.

Title Artist Source
IV. Sweatpants Childish Gambino, Jason Martin Listen on Spotify Listen on YouTube
Smells Like Teen Spirit Witchz Listen on Spotify Listen on YouTube
Saddy Daddy-O Artimus Wolz Listen on Spotify Listen on YouTube
Make Believe Memphis May Fire Listen on Spotify Listen on YouTube
Habit Still Woozy Listen on Spotify Listen on YouTube
Make You Mine Madison Beer Listen on Spotify Listen on YouTube
Loud The Home Team Listen on Spotify Listen on YouTube
Call On Me - Ryan Riback Remix Starley, Ryan Riback Listen on Spotify Listen on YouTube
deathwish (feat. nothing.nowhere) Stand Atlantic, nothing.nowhere Listen on Spotify Listen on YouTube
messy in heaven venbee, goddard. Listen on Spotify Listen on YouTube

Let's be honest, it's impossible to fit all of one's favorite songs into a 10 row table.

🎨 Where did I get my artwork?

All the artwork you find in my GitHub repositories are creations I ordered from various artists on Fiverr.

She is easily my favorite artist on Fiverr, and she's responsible for the header image here. If you like her work, feel free to let her know I sent you her way!

lucy_was_taken lucy_was_taken lucy_was_taken

I've bought many emotes from this artist, but only a handful for myself so far. The quality and speed of their work always astounds me, so they certainly deserve a spot here!

andiwandirana andiwandirana andiwandirana andiwandirana andiwandirana

This artist created all the circular logos you see in this readme.

hussy.net's People

Contributors

dependabot[bot] avatar tacosontitan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

mimimifu

hussy.net's Issues

Add support for `double` under the `Number` primitive.

The Number primitive needs support for double:

  • Implement IEquatable<double>.
  • Implement IComparable<double>.
  • Implement IBinaryFloatingPointIeee754<double>.
  • Implement IBinaryFloatParseAndFormatInfo<double>.
  • Implement IMinMaxValue<double>.
  • Implement basic arithmetic operators (+, -, *, /, and %).
  • Unit test coverage for the implementations.

Note: The unit test coverage for the IEquatable implementation will be contributed by the repo owner.

Add support for `byte` under the `Number` primitive.

The Number primitive needs support for byte:

  • Implement IEquatable<byte>.
  • Implement IComparable<byte>.
  • Implement IMinMaxValue<byte>.
  • Implement `IBinaryInteger.
  • Implement IUnsignedInteger<byte>.
  • Implement IBinaryIntegerParseAndFormatInfo<byte>.
  • Implement IUtfChar<byte>.
  • Implement basic arithmetic operators (+, -, *, /, and %).
  • Unit test coverage for the implementations.

Note: The unit test coverage for the IEquatable implementation will be contributed by the repo owner.

Add support for `Int128` under the `Number` primitive.

The Number primitive needs support for Int128:

  • Implement IEquatable<Int128>.
  • Implement IComparable<Int128>.
  • Implement ISpanParsable<Int128>.
  • Unit test coverage for the implementations.

Note: The unit test coverage for the IEquatable implementation will be contributed by the repo owner.

Improve naming conventions for test methods.

The currently defined test methods don't clearly articulate what is actually being tested, which is critical given the indirect and sometimes rather obscure naming of the methods utilized to achieve terse code to levels that are competitive with more golf-friendly languages. Take the tests for the methods for generating ranges for example:

[Fact]
public void GR_SingleParam_Generates_Correct_Range()
{
    var count = 5;
    var result = Gr(count);
    Assert.Equal(Enumerable.Range(1, count), result);
}

For starters, this fully-underscored naming convention needlessly extends the name and adds little to no value. That can be simplified to separating the method, condition, and result; for example, the method above could be simplified to:

public void GR_SingleParam_GeneratesCorrectRange();

Additionally, the GR here isn't as useful as it could be from a maintenance perspective. Instead, let's expand the name to its more legible representation GenerateRange. While it doesn't match the actual method being tested, it helps developers maintaining the project better understand the code they're working with:

[Fact]
public void GenerateRange_SingleParameter_GeneratesCorrectRange()
{
    var count = 5;
    var result = Gr(count);
    Assert.Equal(Enumerable.Range(1, count), result);
}

This issue covers the correction of the test methods defined in:

Add support for `uint` under the `Number` primitive.

The Number primitive needs support for uint:

  • Implement IEquatable<uint>.
  • Implement IComparable<uint>.
  • Implement ISpanParsable<uint>.
  • Unit test coverage for the implementations.

Note: The unit test coverage for the IEquatable implementation will be contributed by the repo owner.

Add support for `float` under the `Number` primitive.

The Number primitive needs support for float:

  • Implement IEquatable<float>.
  • Implement IComparable<float>.
  • Implement IMinMaxValue<float>.
  • Implement IBinaryFloatingPointIeee754<float>.
  • Implement IBinaryFloatParseAndFormatInfo<float>.
  • Implement ISpanFormattable.
  • Implement IUtf8SpanFormattable.
  • Implement basic arithmetic operators (+, -, *, /, and %).
  • Unit test coverage for the implementations.

Note: The unit test coverage for the IEquatable implementation will be contributed by the repo owner.

Add support for `short` under the `Number` primitive.

The Number primitive needs support for short:

  • Implement IEquatable<short>.
  • Implement IComparable<short>.
  • Implement IBinaryInteger<short>.
  • Implement IMinMaxValue<short>.
  • Implement ISignedNumber<short>.
  • Implement IBinaryIntegerParseAndFormatInfo<short>.
  • Implement basic arithmetic operators (+, -, *, /, and %).
  • Unit test coverage for the implementations.

Note: The unit test coverage for the IEquatable implementation will be contributed by the repo owner.

Add support for `ulong` under the `Number` primitive.

The Number primitive needs support for ulong:

  • Implement IEquatable<ulong>.
  • Implement IComparable<ulong>.
  • Implement ISpanParsable<ulong>.
  • Unit test coverage for the implementations.

Note: The unit test coverage for the IEquatable implementation will be contributed by the repo owner.

Add support for `ushort` under the `Number` primitive.

The Number primitive needs support for ushort:

  • Implement IEquatable<ushort>.
  • Implement IComparable<ushort>.
  • Implement IBinaryInteger<ushort>.
  • Implement IMinMaxValue<ushort>.
  • Implement IUnsignedNumber<ushort>.
  • Implement IBinaryIntegerParseAndFormatInfo<ushort>.
  • Implement basic arithmetic operators (+, -, *, /, and %).
  • Unit test coverage for the implementations.

Note: The unit test coverage for the IEquatable implementation will be contributed by the repo owner.

Correct the README.

πŸ”’ Version

🐣 Pre-Release

πŸ€” What's happening?

The README currently presents Hussy.Net as a programming language, but it's a .NET dialect.

πŸŽ‰ What was your expectation?

The README should say it's a .NET dialect, not a programming language.

πŸͺœ Steps to Reproduce

Not applicable.

Add support for `int` under the `Number` primitive.

The Number primitive needs support for int:

  • Implement IEquatable<int>.
  • Implement IComparable<int>.
  • Implement ISpanParsable<int>.
  • Unit test coverage for the implementations.

Note: The unit test coverage for the IEquatable implementation will be contributed by the repo owner.

Create a number primitive.

A primitive capable of handling the primitive types of C# would help simplify a lot of golf snippets. This type will be known simply as Number and consumable as N:

N foo = 3.14159f;

Ideally, we should have a file per interface implementation required to support the type:

    public readonly struct Number
        : IComparable,
          IConvertible,
          ISpanFormattable,
          IComparable<Number>,
          IEquatable<Number>,
          IBinaryInteger<Number>,
          IMinMaxValue<Number>,
          ISignedNumber<Number>,
          IUtf8SpanFormattable,
          IBinaryIntegerParseAndFormatInfo<Number>

Then one per native primitive being supported to handle conversions:

  • byte
  • short
  • ushort
  • int
  • uint
  • long
  • ulong
  • decimal
  • float
  • double

This will likely be the most verbose primitive type the project will have. As a result, the support for each native primitive is approved to be defined in its own file under a folder named Number which is marked as not a namespace provider, as is typical of all folders in the repo. The naming format should be *Functions where * represents the native type (e.g. ByteFunctions) or similar to ensure functionality can be maintained in bite-sized chunks.

Add source generator for handling global using directives.

The Hussy.Net.Terminal project is a great way for golfers to test their snippets, but deploying Hussy.Net as a NuGet package allows them to set up a project locally for their snippets. Ideally, the package would be friendly to that scenario and make it where consumers do not have to define the global using directives themselves.

The current expected output for this would be:

global using Hussy.Net;
global using static Hussy.Net.Hussy;

The source generator should be in it's own project Hussy.Net.Generators.

Add a text primitive.

A primitive for handling text information is needed and should handle both of the native primitive types:

  • char
  • string

This type should be called Text and will be aliased as T:

T sample = "Hello, world!;

Add support for `long` under the `Number` primitive.

The Number primitive needs support for long:

  • Implement IEquatable<long>.
  • Implement IComparable<long>.
  • Implement ISpanParsable<long>.
  • Unit test coverage for the implementations.

Note: The unit test coverage for the IEquatable implementation will be contributed by the repo owner.

Remove the cubic allocation file.

ο»Ώnamespace Hussy.Net;
public static partial class Hussy
{
/// <summary>
/// Determines whether the specified value is <see langword="null"/> or not.
/// </summary>
/// <param name="value">The value to check for <see langword="null"/>.</param>
/// <typeparam name="T">Specifies the type of the value being checked.</typeparam>
/// <returns>
/// <see langword="true"/> if <paramref name="value"/> is not
/// <see langword="null"/>; otherwise,
/// <see langword="false"/>.
/// </returns>
public static C<T> Ac<T>(
Indexed<T> x,
Indexed<T> y) =>
new() { x, y };
}

Add support for `UInt128` under the `Number` primitive.

The Number primitive needs support for UInt128:

  • Implement IEquatable<UInt128>.
  • Implement IComparable<UInt128>.
  • Implement ISpanParsable<UInt128>.
  • Unit test coverage for the implementations.

Note: The unit test coverage for the IEquatable implementation will be contributed by the repo owner.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.