Initial push

This commit is contained in:
2025-08-25 19:13:59 -04:00
parent 6a2ac61694
commit 181308662f
62 changed files with 2360 additions and 2 deletions

BIN
.jekyll-metadata Normal file

Binary file not shown.

674
COPYING Normal file
View File

@@ -0,0 +1,674 @@
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users. We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors. You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights. Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. You must make sure that they, too, receive
or can get the source code. And you must show them these terms so they
know their rights.
Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.
For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software. For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.
Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so. This is fundamentally incompatible with the aim of
protecting users' freedom to change the software. The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable. Therefore, we
have designed this version of the GPL to prohibit the practice for those
products. If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary. To prevent this, the GPL assures that
patents cannot be used to render the program non-free.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
<program> Copyright (C) <year> <name of author>
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
<https://www.gnu.org/licenses/>.
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
<https://www.gnu.org/licenses/why-not-lgpl.html>.

20
Dublin.rdf Normal file
View File

@@ -0,0 +1,20 @@
<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<rdf:Description rdf:about="https://dustin.coffee">
<dc:title>d@n tech</dc:title>
<dc:creator>Dustin Newkirk</dc:creator>
<dc:subject>tech and personal blog</dc:subject>
<dc:description>Caffinated Tech Insights</dc:description>
<dc:publisher>Dustin Newkirk</dc:publisher>
<dc:date>2024-01-03T00</dc:date>
<dc:type>Website</dc:type>
<dc:format>text/html</dc:format>
<dc:language>en</dc:language>
<dc:identifier>https://dustin.coffee</dc:identifier>
<dc:rights>Copyright Information</dc:rights>
<dc:coverage>USA</dc:coverage>
</rdf:Description>
</rdf:RDF>

8
Gemfile Normal file
View File

@@ -0,0 +1,8 @@
source "https://rubygems.org"
ruby "3.2.3"
gem "jekyll"
gem "jekyll-feed"
gem "jekyll-paginate-v2"
gem "jekyll-seo-tag"
gem "webrick"
gem "jekyll-sitemap"

88
Gemfile.lock Normal file
View File

@@ -0,0 +1,88 @@
GEM
remote: https://rubygems.org/
specs:
addressable (2.8.6)
public_suffix (>= 2.0.2, < 6.0)
colorator (1.1.0)
concurrent-ruby (1.2.3)
em-websocket (0.5.3)
eventmachine (>= 0.12.9)
http_parser.rb (~> 0)
eventmachine (1.2.7)
ffi (1.16.3)
forwardable-extended (2.6.0)
google-protobuf (3.25.3-x86_64-linux)
http_parser.rb (0.8.0)
i18n (1.14.1)
concurrent-ruby (~> 1.0)
jekyll (4.3.4)
addressable (~> 2.4)
colorator (~> 1.0)
em-websocket (~> 0.5)
i18n (~> 1.0)
jekyll-sass-converter (>= 2.0, < 4.0)
jekyll-watch (~> 2.0)
kramdown (~> 2.3, >= 2.3.1)
kramdown-parser-gfm (~> 1.0)
liquid (~> 4.0)
mercenary (>= 0.3.6, < 0.5)
pathutil (~> 0.9)
rouge (>= 3.0, < 5.0)
safe_yaml (~> 1.0)
terminal-table (>= 1.8, < 4.0)
webrick (~> 1.7)
jekyll-feed (0.17.0)
jekyll (>= 3.7, < 5.0)
jekyll-paginate-v2 (3.0.0)
jekyll (>= 3.0, < 5.0)
jekyll-sass-converter (3.0.0)
sass-embedded (~> 1.54)
jekyll-seo-tag (2.8.0)
jekyll (>= 3.8, < 5.0)
jekyll-sitemap (1.4.0)
jekyll (>= 3.7, < 5.0)
jekyll-watch (2.2.1)
listen (~> 3.0)
kramdown (2.4.0)
rexml
kramdown-parser-gfm (1.1.0)
kramdown (~> 2.0)
liquid (4.0.4)
listen (3.9.0)
rb-fsevent (~> 0.10, >= 0.10.3)
rb-inotify (~> 0.9, >= 0.9.10)
mercenary (0.4.0)
pathutil (0.16.2)
forwardable-extended (~> 2.6)
public_suffix (5.0.4)
rake (13.1.0)
rb-fsevent (0.11.2)
rb-inotify (0.10.1)
ffi (~> 1.0)
rexml (3.2.6)
rouge (4.2.0)
safe_yaml (1.0.5)
sass-embedded (1.69.5)
google-protobuf (~> 3.23)
rake (>= 13.0.0)
terminal-table (3.0.2)
unicode-display_width (>= 1.1.1, < 3)
unicode-display_width (2.5.0)
webrick (1.8.1)
PLATFORMS
x86_64-linux
DEPENDENCIES
jekyll
jekyll-feed
jekyll-paginate-v2
jekyll-seo-tag
jekyll-sitemap
webrick
RUBY VERSION
ruby 3.2.3p157
BUNDLED WITH
2.5.23

View File

@@ -1,3 +1,49 @@
# dustin.coffee-jekyll-blog
# My Jekyll Website
my blog
Welcome to the repository for my personal Jekyll website! This site showcases my blog posts, projects, and more. Learn about my journey in the world of technology and coffee.
## About the Site
This website is built using [Jekyll](https://jekyllrb.com/), a static site generator. It's designed to be simple, responsive, and easy to navigate. The site reflects my passion for technology and love for coffee.
### Features
- **Blog**: Regular posts about tech, my personal experiences, and tutorials.
- **Projects**: Showcasing my work and contributions to various tech initiatives.
## Getting Started
To run this site locally, you'll need to have Ruby and Jekyll installed. Here's a quick guide:
1. **Clone the Repository**
```bash
git clone https://github.com/primeminister91/dustin.coffee.git
cd dustin.coffee
```
2. **Install Dependencies**
```bash
bundle install
```
3. **Run Jekyll Server**
```bash
bundle exec jekyll serve
```
This will start a local server. Typically, the site will be available at `http://localhost:4000` (default port 4000).
## Contributing
I appreciate contributions to the site! Whether it's fixing a bug, improving the documentation, or suggesting new features, feel free to fork this repository and submit a pull request.
## License
This project is licensed under the [MIT License](LICENSE) - see the LICENSE file for details.
## Acknowledgments
- This theme is based off of [Lightspeed](https://github.com/tajacks/lightspeed)

85
_config.yml Normal file
View File

@@ -0,0 +1,85 @@
# Site Specific Configuration
name: d@n tech
description: Caffinated Tech Insights
url: https://dustin.coffee
author: dustin newkirk
timezone: America/New_York
timezone_short: ET
# Keywords
keywords:
- 'Dustin Newkirk'
- 'tech blog'
- 'IT blog'
- 'technology insights'
- 'specific technologies'
- 'JavaScript tutorials'
- 'Linux tips'
- 'cloud computing insights'
- 'coffee enthusiast'
- 'coffee lover'
- 'coffee and coding'
- 'tech and coffee'
- 'professional services'
- 'freelance developer'
- 'IT consultant'
- 'tech expert'
- 'location-based keywords'
- 'Syracuse tech expert'
- 'Syracuse IT consultant'
- 'project or portfolio'
- 'tech projects'
- 'personal IT portfolio'
- 'developer portfolio'
- 'guides and tutorials'
- 'tech guides'
- 'programming tutorials'
- 'IT how-to articles'
- 'tech reviews'
- 'tech product reviews'
- 'software reviews'
- 'gadget evaluations'
- 'personal journey'
- 'tech career journey'
- 'IT professional story'
- 'life of a coder'
# Analytics (Plausible requires sign-up)
analytics:
plausible:
enabled: false
site_fqdn: 'dustin.coffee'
script_source: 'https://plausible.io/js/script.js'
# Styling
sass:
sass_dir: _sass
style: expanded # compact, expanded or compressed
# Paginate
pagination:
enabled: true
# Value set low for demonstration purposes
per_page: 10
sort_field: 'date'
sort_reverse: true
permalink: /:year/:month/:title.html
# Category Paginating
autopages:
enabled: true
categories:
title: 'Posts in category :cat'
permalink: '/category/:cat'
silent: false
# Exclusions
exclude: [ 'README.md', 'COPYING' ]
# Plugins
plugins:
- jekyll-feed
- jekyll-paginate-v2
- jekyll-seo-tag
- jekyll-sitemap

8
_data/nav.yml Normal file
View File

@@ -0,0 +1,8 @@
- name: About & Contact
link: /
- name: Posts
link: /posts
- name: Categories
link: /categories/
- name: Resume
link: /resume

15
_includes/footer.html Normal file
View File

@@ -0,0 +1,15 @@
<div class="footer">
<span class="footer-text float-left">This work is licensed under <a rel="license" href="https://www.gnu.org/licenses/gpl-3.0.en.html" target="_blank">GPLv3</a></span>
<span class="footer-text float-right">
Site Updated: {{ site.time | date: '%Y-%m-%d' }} {{ site.timezone_short }} (<a href="/feed.xml" target="_blank">RSS</a>)
</span>
</div>
<script src='https://storage.ko-fi.com/cdn/scripts/overlay-widget.js'></script>
<script>
kofiWidgetOverlay.draw('dustinnewkirk', {
'type': 'floating-chat',
'floating-chat.donateButton.text': 'Support Me',
'floating-chat.donateButton.background-color': '#ff851b',
'floating-chat.donateButton.text-color': '#3D2200'
});
</script>

18
_includes/head.html Normal file
View File

@@ -0,0 +1,18 @@
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
{% seo %}
{% if site.keywords or page.tags %}
<meta name="keywords" content="{% if page.tags %}{{ page.tags | join: ','}}{% else %}{{ site.keywords | join: ',' }}{% endif %}" />
{% endif %}
<meta name="google-adsense-account" content="ca-pub-5033279084799102">
<link rel="shortcut icon" href="/assets/logos/dn-tech-favicon-color.png" />
<link rel="apple-touch-icon" href="/assets/logos/logo-color.png"/>
<link rel="stylesheet" type="text/css" href="{{ site.baseurl }}/assets/css/styles.css" />
<link rel="stylesheet" type="text/css" href="{{ site.baseurl }}/assets/css/prism.css" />
<script src="{{ site.baseurl }}/assets/js/prism.js"></script>
{% if site.analytics.plausible.enabled %}
<script defer data-domain="{{ site.analytics.plausible.site_fqdn }}" src="{{ site.analytics.plausible.script_source }}"></script>
{% endif %}
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-5033279084799102"
crossorigin="anonymous"></script>

8
_includes/header.html Normal file
View File

@@ -0,0 +1,8 @@
<div class="header">
<h1>d@n tech</h1>
<br>
<h5><i>Caffinated Tech Insights</i></h5>
<br>
{% include nav.html %}
<hr>
</div>

5
_includes/nav.html Normal file
View File

@@ -0,0 +1,5 @@
<nav>
{% for item in site.data.nav %}
<a href="{{ item.link }}">{{ item.name }}</a>
{% endfor %}
</nav>

View File

@@ -0,0 +1,23 @@
---
layout: default
pagination:
enabled: true
per_page: 10
---
<div class="post-summary">
<h2>Posts</h2>
{% for post in paginator.posts %}
<span class="post-item">{{ post.date | date: '%Y-%m-%d' }} >> <a href="{{ post.url }}">{{ post.title }}</a><span class="float-right">{{ post.categories }}</span></span>
{% endfor %}
</div>
<div class="post-nav">
{% if paginator.total_pages > 1 %}
{% if paginator.next_page %}
<a href="{{ paginator.next_page_path | prepend: site.baseurl }}">&lt;- Older</a>
{% endif %}
{% if paginator.previous_page %}
<a href="{{ paginator.previous_page_path | prepend: site.baseurl }}">Newer -&gt;</a>
{% endif %}
{% endif %}
</div>

24
_layouts/default.html Normal file
View File

@@ -0,0 +1,24 @@
<!DOCTYPE html>
<html lang="en">
<head>
{% include head.html %}
</head>
<body>
<div class="wrapper">
<header class="wrapper-header">
{% include header.html %}
</header>
<main class="wrapper-main">
<div class="main-content">
{{ content }}
</div>
</main>
</div>
<footer class="wrapper-footer">
{% include footer.html %}
</footer>
</body>
</html>

11
_layouts/post.html Normal file
View File

@@ -0,0 +1,11 @@
---
layout: default
---
<div class="post-info">
<h2>{{ page.title }}</h2>
<p>{{ page.date | date_to_string }} - {{ page.author }}</p>
</div>
<div class="post-content">
{{ content }}
</div>

13
_sass/categories.scss Normal file
View File

@@ -0,0 +1,13 @@
.category-summary {
padding-top: 30px;
padding-bottom: 30px;
}
.category-all-nav, .category-header {
display: block;
position: relative;
line-height: 24px;
margin: 5px 0;
padding-bottom: 10px;
padding-top: 10px;
}

13
_sass/float.scss Normal file
View File

@@ -0,0 +1,13 @@
@charset "utf-8";
.float-left {
float: left;
}
.float-right {
float: right;
}
.float-center {
text-align: center;
}

7
_sass/footer.scss Normal file
View File

@@ -0,0 +1,7 @@
@charset "utf-8";
.footer-text {
display: block;
position: relative;
font-size: 14px;
}

12
_sass/header.scss Normal file
View File

@@ -0,0 +1,12 @@
.header {
padding-top: 35px
}
.header nav {
padding-top: 10px;
padding-bottom: 20px;
}
.header nav a {
padding-right: 3px;
}

11
_sass/mobile.scss Normal file
View File

@@ -0,0 +1,11 @@
@media only screen and (max-width: 479px) {
// Hide clutter elements on mobile
.mobile-hide{ display: none !important; }
// Don't split footer text
.footer-text{ float: left !important;}
// Phone Friendly Margarine ;)
html {margin: 1em !important;}
}

75
_sass/page.scss Normal file
View File

@@ -0,0 +1,75 @@
/* Style inspiration and settings adapted from https://github.com/jgthms/web-design-in-4-minutes*/
@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@300;400;500&display=swap');
/* Base */
html {
font-size: 18px;
}
/* 01 Font family */
body {
font-family: "IBM Plex Mono", "Courier New", monospace;
}
/* 03 Spacing */
.padded {
padding-top: 30px;
padding-bottom: 30px;
line-height: 30px;
}
.main-content {
padding-top: 30px;
padding-bottom: 30px;
line-height: 30px;
}
div.main-content h2 {
padding-top: 15px;
padding-bottom: 5px;
}
header h1, h5 {
display: inline;
}
/* 04 Color and contrast */
body {
color: #F8FDDD;
background-color: #3D2200;
}
h1,
h2,
strong {
color: #dcdede;
}
header h5 {
font-weight: lighter;
}
/* 05 Balance */
code {
padding: 2px 4px;
vertical-align: text-bottom;
}
/* 06 Primary color */
a {
color: #ff851b;
}
/* 07 Secondary colors */
h1,
h2,
strong {
font-weight: 500;
}

20
_sass/post.scss Normal file
View File

@@ -0,0 +1,20 @@
.post-info {
padding-bottom: 30px;
margin: 20px 0 5px;
padding-top: 20px;
}
.post-content {
line-height: 35px;
padding-bottom: 50px;
}
.post-content h1, h3, code, pre {
padding-bottom: 10px;
padding-top: 10px;
}
.post-content h2 {
padding-bottom: 20px;
padding-top: 20px;
}

17
_sass/posts.scss Normal file
View File

@@ -0,0 +1,17 @@
.post-item {
display: block;
position: relative;
line-height: 24px;
padding-bottom: 5px;
margin: 5px 0;
}
.post-summary {
padding-top: 30px;
padding-bottom: 30px;
}
.post-nav {
padding-top: 100px;
text-align: center;
}

55
_sass/reset.scss Normal file
View File

@@ -0,0 +1,55 @@
/* https://www.joshwcomeau.com/css/custom-css-reset/ */
/*
1. Use a more-intuitive box-sizing model.
*/
*, *::before, *::after {
box-sizing: border-box;
}
/*
2. Remove default margin
*/
* {
margin: 0;
}
/*
3. Allow percentage-based heights in the application
*/
html, body {
height: 100%;
}
/*
Typographic tweaks!
4. Add accessible line-height
5. Improve text rendering
*/
body {
line-height: 1.5;
-webkit-font-smoothing: antialiased;
}
/*
6. Improve media defaults
*/
img, picture, video, canvas, svg {
display: block;
max-width: 100%;
}
/*
7. Remove built-in form typography styles
*/
input, button, textarea, select {
font: inherit;
}
/*
8. Avoid text overflows
*/
p, h1, h2, h3, h4, h5, h6 {
overflow-wrap: break-word;
}
/*
9. Create a root stacking context
*/
#root, #__next {
isolation: isolate;
}

18
_sass/wrapper.scss Normal file
View File

@@ -0,0 +1,18 @@
@charset "utf-8";
.wrapper-main, .wrapper-header, .wrapper-footer {
width: 100%;
margin: 0 auto;
max-width: 900px;
}
/* Sticky Footer */
.wrapper {
min-height: calc(100vh - 40px);
}
.wrapper-footer {
height: 40px
}
/* End Sticky Footer */

1
ads.txt Normal file
View File

@@ -0,0 +1 @@
google.com, pub-5033279084799102, DIRECT, f08c47fec0942fa0

3
assets/css/prism.css Normal file
View File

@@ -0,0 +1,3 @@
/* PrismJS 1.29.0
https://prismjs.com/download.html#themes=prism-tomorrow&languages=markup+css+clike+javascript+abap+abnf+actionscript+ada+agda+al+antlr4+apacheconf+apex+apl+applescript+aql+arduino+arff+armasm+arturo+asciidoc+aspnet+asm6502+asmatmel+autohotkey+autoit+avisynth+avro-idl+awk+bash+basic+batch+bbcode+bbj+bicep+birb+bison+bnf+bqn+brainfuck+brightscript+bro+bsl+c+csharp+cpp+cfscript+chaiscript+cil+cilkc+cilkcpp+clojure+cmake+cobol+coffeescript+concurnas+csp+cooklang+coq+crystal+css-extras+csv+cue+cypher+d+dart+dataweave+dax+dhall+diff+django+dns-zone-file+docker+dot+ebnf+editorconfig+eiffel+ejs+elixir+elm+etlua+erb+erlang+excel-formula+fsharp+factor+false+firestore-security-rules+flow+fortran+ftl+gml+gap+gcode+gdscript+gedcom+gettext+gherkin+git+glsl+gn+linker-script+go+go-module+gradle+graphql+groovy+haml+handlebars+haskell+haxe+hcl+hlsl+hoon+http+hpkp+hsts+ichigojam+icon+icu-message-format+idris+ignore+inform7+ini+io+j+java+javadoc+javadoclike+javastacktrace+jexl+jolie+jq+jsdoc+js-extras+json+json5+jsonp+jsstacktrace+js-templates+julia+keepalived+keyman+kotlin+kumir+kusto+latex+latte+less+lilypond+liquid+lisp+livescript+llvm+log+lolcode+lua+magma+makefile+markdown+markup-templating+mata+matlab+maxscript+mel+mermaid+metafont+mizar+mongodb+monkey+moonscript+n1ql+n4js+nand2tetris-hdl+naniscript+nasm+neon+nevod+nginx+nim+nix+nsis+objectivec+ocaml+odin+opencl+openqasm+oz+parigp+parser+pascal+pascaligo+psl+pcaxis+peoplecode+perl+php+phpdoc+php-extras+plant-uml+plsql+powerquery+powershell+processing+prolog+promql+properties+protobuf+pug+puppet+pure+purebasic+purescript+python+qsharp+q+qml+qore+r+racket+cshtml+jsx+tsx+reason+regex+rego+renpy+rescript+rest+rip+roboconf+robotframework+ruby+rust+sas+sass+scss+scala+scheme+shell-session+smali+smalltalk+smarty+sml+solidity+solution-file+soy+sparql+splunk-spl+sqf+sql+squirrel+stan+stata+iecst+stylus+supercollider+swift+systemd+t4-templating+t4-cs+t4-vb+tap+tcl+tt2+textile+toml+tremor+turtle+twig+typescript+typoscript+unrealscript+uorazor+uri+v+vala+vbnet+velocity+verilog+vhdl+vim+visual-basic+warpscript+wasm+web-idl+wgsl+wiki+wolfram+wren+xeora+xml-doc+xojo+xquery+yaml+yang+zig */
code[class*=language-],pre[class*=language-]{color:#ccc;background:0 0;font-family:Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#2d2d2d}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.block-comment,.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#999}.token.punctuation{color:#ccc}.token.attr-name,.token.deleted,.token.namespace,.token.tag{color:#e2777a}.token.function-name{color:#6196cc}.token.boolean,.token.function,.token.number{color:#f08d49}.token.class-name,.token.constant,.token.property,.token.symbol{color:#f8c555}.token.atrule,.token.builtin,.token.important,.token.keyword,.token.selector{color:#cc99cd}.token.attr-value,.token.char,.token.regex,.token.string,.token.variable{color:#7ec699}.token.entity,.token.operator,.token.url{color:#67cdcc}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.token.inserted{color:green}

17
assets/css/styles.scss Normal file
View File

@@ -0,0 +1,17 @@
---
---
@charset "utf-8";
@import
"reset",
"wrapper",
"page",
"footer",
"header",
"float",
"posts",
"categories",
"post",
"mobile"
;

300
assets/js/prism.js Normal file

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 431 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 407 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 407 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

BIN
assets/logos/logo-black.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

BIN
assets/logos/logo-color.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

BIN
assets/logos/logo-white.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

1
build.sh Executable file
View File

@@ -0,0 +1 @@
bundle exec jekyll build -I -d /var/www/html/

16
categories/index.html Normal file
View File

@@ -0,0 +1,16 @@
---
layout: default
title: d@n tech Categories
---
<h2>Post Categories</h2>
{% for category in site.categories %}
<h3 class="category-header"><b>{{category | first}}</b></h3>
{% for post in category[1] limit:3 %}
<span class="post-item">{{ post.date | date: '%Y-%m-%d' }} >> <a href="{{ post.url }}">{{ post.title }}</a></span>
{% endfor %}
<div class="category-all-nav">
<h4>See all posts in {{category | first}} ({{category[1] | size}}) <a href="/category/{{category | first | downcase }}/">&gt;&gt;</a></h4>
</div>
{% endfor %}

38
index.md Normal file
View File

@@ -0,0 +1,38 @@
---
layout: default
title: d@n tech
---
# Hello! I'm Dustin
I'm an IT professional with a passion for technology and its transformative power. I live in Syracuse, NY with my incredible wife. Our journey together has been filled with love, mutual support, and academic pursuits.
## My Journey
Born and raised in Cato, I graduated high school in 2010 and embarked on an academic journey at RIT. Living on campus, I made lifelong friends and memories. My path then took me to Red Creek, balancing work with my studies at ITT-Tech, laying the foundation for my IT career.
After graduating, I moved to Central Square and worked at Walmart. It was here, in 2014, I met my wife. Our shared path has led us through various cities in New York, and we got married in 2020, marking a significant milestone in our adventure together. After settling in Fayetteville in 2023, we moved back to Syracuse in 2024. We returned to familiar grounds as we continue to build our life together.
## Supporting Each Other
Throughout our relationship, I've been proudly supporting my wife through her academic endeavors. She earned her Associate's degree from CCC as a commuter while we lived together, followed by her Bachelor's at SUNY Geneseo, where she lived on campus and I was in Liverpool, NY. Her Master's from St. Bonaventure was completed online while we were together. She began a PhD at the University of Arkansas (UARK) and, after deciding it wasnt the right fit, shes now continuing her education in an online program with Waynesburg University.
## Professional Journey
In my professional life, I've navigated various roles in IT. I started at Delta Sonic, moved on to the New York State Office of Information Technology Services, and later thrived as a Desktop Support Specialist at VSO (Virtual Service Operations). After a role with Greene Resources as an Infrastructure Support Specialist, I joined Waygate Technologies in Skaneateles as an End User Support Engineer. Most recently, in March 2025, I returned to New York State service (Office of Information Technology Services), where I continue supporting end users and enterprise operations.
## Educational Background
I'm a proud alum of Cato-Meridian High School and ITT-Technical Institute, where I earned my AAS in Computer & Network Systems Administration. These experiences have been instrumental in shaping my professional knowledge and skills.
## Skills and Expertise
Over the years, I've developed a rich skill set, including expertise in Microsoft Office Suite, Outlook, Mac OS, Linux, SiteWatch, Radiant, and a comprehensive understanding of IT infrastructure services, security, and protocols. My strengths include analytical thinking, diagnostic skills, and problem-solving abilities.
## Life Beyond Work
Outside of work, my life revolves around my family. My wife and I cherish our time together in Syracuse. Our story, from our first meeting to supporting each other through various life chapters, is a testament to our shared commitment and love.
## Contact
Email me, [dustin@dustin.coffee](mailto:dustin@dustin.coffee).

View File

@@ -0,0 +1,44 @@
---
layout: post
title: "brewing a stronger it career: from helpdesk to higher ed"
---
Hello everyone!
Today, I want to share some exciting personal updates and reflections on my ongoing journey in the tech world.
## Hitting the Glass Ceiling with an Associate's Degree
For a while now, I've been navigating the IT landscape with my Associate's degree in hand. While it's been a valuable stepping stone, I've increasingly felt the constraints of what some call the "glass ceiling" in the tech industry. Despite my efforts and experience, I've found myself confined primarily to helpdesk roles. It's a common plateau many of us in tech face, and it's led me to a significant decision.
## Stepping Up: My Admission to WGU's Accelerated IT Program
I'm thrilled to announce my admission to Western Governors University's accelerated Bachelor's and Master's Degree program in Information Technology, starting on February 1, 2024. This program is a unique opportunity for me to deepen my knowledge, broaden my skills, and break through the career barriers I've been facing.
## Why Further Education?
I've always believed in the power of education to fill in knowledge gaps and open new doors. With technology evolving at a breakneck pace, there's always more to learn. This program is not just about getting higher qualifications; it's about equipping myself to contribute more significantly to the field I am passionate about.
## The Role of My Homelab
My homelab has been a cornerstone of my learning journey. It's where I experiment, explore, and expand my practical knowledge of IT systems. I anticipate that the WGU program will not only benefit from my hands-on experience in the homelab but will also provide new insights and challenges that I can bring back to my personal lab setup and services I provide.
## A Call for Support
As I embark on this new educational path, any support to enhance my homelab capabilities and cover the costs of running services would be greatly appreciated. Your support, whether through knowledge sharing, equipment recommendations, or financial contributions, will play a crucial role in my journey.
## Merchandise on the Horizon
In other exciting news, I'm working on launching a range of merchandise on Redbubble. This is not just about creating cool, tech-themed items; it's a creative outlet for me and a way to connect with the community. Stay tuned for more updates!
Logo for merch:
![d@n tech logo](/assets/logos/logo-no-background.png "d@n tech logo")
## In Closing
I'm at an exciting crossroads, filled with new challenges and opportunities. I look forward to sharing my experiences and learnings with all of you. Let's continue to grow and learn together in this ever-evolving world of technology.
Thank you for being a part of my journey!

View File

@@ -0,0 +1,43 @@
---
layout: post
title: "my it odyssey: from entry-level to expertise"
---
#### Introduction
Hello, I'm Dustin, and I've been navigating the dynamic world of IT support since 2017. With a foundation in Computer Network Systems and Administration from ITT-Tech (2013), my career has taken me through various roles, each offering unique challenges and learnings. Today, I'd like to share my journey, hoping to inspire those starting in IT or looking to advance in this field.
#### First Steps at Delta Sonic Car Wash (2017-2019)
- **Role:** Computer Support Technician
- **Scope:** Managed IT needs across 9 locations in 2 cities.
- **Deeper Dive:**
- **Challenges Faced:** Tackling complex POS system issues and network dilemmas was a daily task, pushing me to develop effective troubleshooting skills.
- **Skill Development:** This role was crucial in honing my technical problem-solving abilities and customer service skills, teaching me the value of patience and clear communication.
- **Key Takeaways:** I learned the importance of a meticulous approach to diagnostics and the necessity of translating tech jargon into understandable language for non-tech staff.
#### Leveling Up at NYS ITS (2019-2023)
- **Role:** Level 2 IT Support (L2 ITS)
- **Scope:** Provided IT support for 25 agencies over 10 counties in Central NY.
- **Expanding Horizons:**
- **Broader Impact:** My efforts here went beyond fixing immediate issues, contributing to smoother operations across multiple agencies.
- **Professional Growth:** This period was marked by growth in project management and strategic planning, as I spearheaded hardware rollouts and upgrades.
- **Memorable Projects:** A significant project I managed was the standup of the Mass Vaccination Site at the NYS Fairgrounds, which taught me valuable lessons in large-scale project execution.
#### Current Role at Virtual Service Operations (VSO) (2023-Present)
- **Role:** Raytheon Technology Deskside Support at Pratt & Whitney
- **Scope:** Catering to the IT needs of about 200 users at the Pratt and Whitney PSD campus.
- **Current Endeavors:**
- **Solo Operations:** As the only IT support on campus, I handle everything from software installations to complex troubleshooting, ensuring smooth tech operations for all users.
- **Adapting to Change:** This role requires me to be agile and up-to-date with the latest technologies, adapting quickly to new challenges and IT methodologies.
- **Independent Problem Solving:** Working alone has honed my ability to tackle issues independently and develop innovative solutions, reinforcing the importance of self-reliance and resourcefulness in tech support.
#### Future Plans and Aspirations
- **Academic Pursuits:** I'm excited to start an Accelerated Bachelor's and Master's IT degree program at WGU on 2/1/24, aiming to deepen my knowledge and open new career avenues.
- **Career Vision:** Post-graduation, I envision a role that not only challenges me but also aligns more closely with my passion for emerging technologies and innovative solutions.
#### Personal Reflections
- **The Tech Landscape:** The IT field has evolved tremendously, and I believe we're on the cusp of more groundbreaking changes in technology and how we interact with it.
- **Work-Life Balance:** Balancing a demanding career with personal passions like homelabs and Pathfinder gaming has been a fulfilling journey in itself.
#### Conclusion
My journey through the IT landscape has been enriching and enlightening. I'm grateful for the challenges and opportunities I've encountered, and I hope my story encourages others to pursue their own path in tech. If you're on a similar journey, I'd love to hear about your experiences and challenges. Together, let's continue to learn, grow, and innovate in this ever-evolving field.

View File

@@ -0,0 +1,36 @@
---
layout: post
title: "java journeys: transitioning to it infrastructure at wolfspeed"
---
#### Introduction:
Hey there, folks! Today, I'm sharing a pivotal moment in my career journey with you at d@n tech. After five months of serving as a Desktop Support Specialist at Pratt & Whitney PSD, I've moved into a new role as an IT Infrastructure Support Technician at Wolfspeed.
#### My Time at Pratt & Whitney PSD:
At Pratt & Whitney PSD, I was the go-to guy for 200 end users, juggling tasks in office spaces and on the bustling machining floor. It was a busy gig that taught me the value of staying cool under pressure and finding solutions on the fly.
#### Transitioning to Wolfspeed:
Now, I'm settling into life at Wolfspeed, where I'm supporting around 80 end users across office and electrical lab environments. My plate is full with projects, L2 support, and handling the ins and outs of new user deployments.
#### Facing the Challenges:
Switching gears to a new role isn't without its hurdles. Getting acquainted with Wolfspeed's IT setup and catering to a smaller user base has been a bit of a learning curve. But hey, every challenge is just a chance to level up, right?
#### Embracing the Opportunities:
Despite the adjustments, I'm pumped about what lies ahead. Wolfspeed offers a chance to dive deep into IT infrastructure support, exploring new tech and fine-tuning my project management chops along the way.
#### A Blend of Passion and Purpose:
For a homelabber and tech enthusiast like me, this career shift is more than just a job change - it's about pursuing what fires me up and pushing myself to grow, both personally and professionally.
#### Looking Forward:
As I settle into my groove at Wolfspeed, I'll be dishing out insights, tips, and tales from the trenches of IT support. So keep an eye out for more updates and musings as we journey through the world of tech and coffee together here at d@n tech.
#### Conclusion:
Change can be a wild ride, but it's all about rolling with the punches and savoring the journey. Here's to new beginnings, endless possibilities, and a good old cup of Americano to keep us grounded along the way.

View File

@@ -0,0 +1,23 @@
---
layout: post
title: "a roast of reality: life changes, career shifts, and what's next"
---
Life can be compared to coffee: bitter, sweet, and full of unexpected flavors. Over the past few years, I've experienced various life changes and career shifts that have brought challenges and opportunities. Let's explore my journey in several distinct phases.
#### The Big Decision
In April 2024, my wife decided to leave her PhD program. This pivotal moment led us to reevaluate our priorities and consider a change of scenery. We decided to move back to New York on August 1st, 2024, seeking new opportunities and a fresh start.
#### Facing Challenges
Upon returning to New York, financial responsibilities took center stage. To meet these obligations, I took a job at Walmart towards the end of August 2024. Although it wasn't my dream position, I reminded myself that every experience offers room for growth and learning.
#### New Opportunities
As the seasons changed, so did my luck. On October 1st, 2024, I began a new role as a contractor through MergeIT, working with Waygate Tech in Skaneateles. This position allowed me to put my IT expertise to good use and reignite my passion for technology.
#### Future Aspirations
Even as I settle into my current role, I'm still looking for opportunities to return to New York State ITS. The public sector presents unique challenges and a chance to make a positive impact on a broader scale.
#### Embracing Change
Moving forward, I'm committed to embracing whatever life has in store for me, whether it's another career change or a fresh start in a new city. Just as coffee beans must undergo a roasting process to reveal their full potential, life's twists and turns can refine us, fostering growth and resilience.
In conclusion, life is unpredictable, and careers can be uncertain. By staying true to ourselves and embracing new experiences, we can weather any storm and come out stronger. So, let's raise a cup to life's bitter and sweet moments and toast the journey ahead!
It's been four months since I last posted on this blog. This hiatus is mainly due to a lack of time, energy, and uncertainty about what to share. However, I'm committed to getting back into the swing of things and providing valuable content for my readers. Thank you for your patience and continued support.

View File

@@ -0,0 +1,32 @@
---
layout: post
title: "brewed reflections: a semester wrap-up and steaming future ahead"
---
Welcome back to my corner of the internet! As I sit down to reflect on this past semester, Im filled with a sense of accomplishment and excitement for what lies ahead. This journey has been nothing short of enlightening, and I'm eager to share my experiences while stirring in a bit of my favorite brew!
**Sipping on Knowledge: Classes Completed**
This semester, Ive had the privilege of diving into five diverse courses that have each contributed uniquely to my academic growth:
- **American Politics and the US Constitution**: This course provided a deep dive into the foundational aspects of American governance. Understanding the nuances of our political system has been both fascinating and enlightening—much like savoring a bold cup of coffee!
- **Natural Sciences Lab**: Hands-on experiments in the lab have reinforced theoretical concepts, making abstract ideas tangible through practical application. Its been an engaging way to explore scientific principles—comparable to the precise process of brewing the perfect espresso.
- **Applied Algebra**: Strengthening my algebraic skills has proven invaluable, especially in problem-solving scenarios that require analytical thinking. The practical applications of these skills are vast and exciting— kind of like calculating the ideal coffee-to-water ratio!
- **Ethics in Technology**: This course challenged me to think critically about the moral implications of technological advancements. It's a crucial area as technology continues to evolve rapidly, impacting society in profound ways—much like how innovations in coffee brewing have transformed our mornings.
- **Cloud Foundations**: Completing this course was a significant milestone, capped by earning my **AWS Certified Cloud Practitioner certification**. This achievement feels like a testament to my dedication and hard work, opening doors to new career opportunities in the cloud computing field.
Reflecting on these courses, Im proud of the effort Ive put in and the knowledge Ive gained. Each has prepared me for new challenges and adventures.
**Espresso Yourself: Excitement for Next Steps**
Looking ahead, Im thrilled to embark on my next semester with **Web Development Foundations** and **Web Development Applications**. With my experience building and hosting a couple of websites, I'm excited to deepen my knowledge in these areas. Its incredibly rewarding to see ideas come to life online, similar to watching a barista perfect their craft.
**Final Thoughts: Brewing Success**
As I move forward, I remain committed to my educational goals, excited for the challenges and opportunities ahead. The journey is as important as the destination, and Im grateful for each step taken so far. Heres to continued growth, new skills, and achieving my aspirations in this ever-evolving educational landscape.
Thank you for joining me on this journey. Stay tuned for more updates as I continue to explore new horizons—because like a good cup of coffee, theres always something brewing!

View File

@@ -0,0 +1,41 @@
---
layout: post
title: "from beans to bills: crafting my first project quote"
---
As I embark on the journey of freelancing, I found myself transitioning from creative coffee shop sessions to the business side of things. Like a well-brewed cup of coffee, managing my finances requires the right blend of tools and practices. Recently, I set up some essential systems that will help me streamline my invoicing process, including self-hosted InvoiceNinja software and a PayPal business account. Join me as I walk you through my experience of crafting my first project quote and the choices I made along the way.
## Brewing the Right Tools: Why I Chose InvoiceNinja
When it came to invoicing solutions, I needed something that was both flexible and easy to use. After researching various options, I settled on a self-hosted version of **InvoiceNinja**. This open-source software allowed me to have complete control over my data—much like crafting the perfect roast to suit my taste buds.
Self-hosting means I can customize the software according to my needs, and I love the idea of managing invoices without relying solely on a third-party provider. Its important for me to keep my operations as streamlined and personalized as a cozy coffee shop experience.
## Setting Up a PayPal Business Account: A Step Towards Professionalism
In tandem with InvoiceNinja, I opened a **PayPal business account**. Why PayPal? Its widespread recognition and reliability make it an ideal choice for freelancers and service providers alike. More importantly, I wanted to leverage the **PayPal API** for seamless integration with InvoiceNinja. This integration enables my clients to pay invoices directly through their PayPal accounts, creating a smoother transaction process.
The setup was straightforward—just like brewing a basic cup of coffee. I went through PayPals registration process, ensuring I provided all the necessary information for a business account. Once my account was active, diving into the API documentation was my next step, which paved the way for my future work with InvoiceNinja.
## Crafting My First Project Quote: A Blend of Creativity and Precision
With the systems in place, it was time to craft my first project quote. I approached it with the same care I put into creating my favorite coffee blend, ensuring every detail was perfect.
1. **Defining the Scope**: I laid out what the project entailed—including deliverables, timelines, and any specific requirements from the client. Clarity here is essential to avoid misunderstandings later.
2. **Pricing**: I accounted for my time, the resources Id need, and any potential expenses. Similar to calculating the cost of specialty beans, finding the right balance in pricing is crucial to ensure Im compensated fairly while remaining competitive.
3. **Creating the Quote in InvoiceNinja**: With everything defined, I jumped into InvoiceNinja. The platform made it easy to create a polished quote with customizable templates. I added my branding (because whats a business without a little personal flair?) and ensured the document looked professional yet inviting.
4. **Integrating PayPal**: Next, I set up the integration with PayPal, enabling a “Pay Now” button directly on the invoice. This feature is like a cherry on top of my coffee—making it easy for clients to settle their bills without delay.
5. **Sending the Quote**: Finally, I hit send! A mix of excitement and nervousness coursed through me. The quote looked great, and I was eager to see how my client would respond.
## The Aftertaste: Reflection and Learning
Crafting my first project quote was a learning experience—one that parallels tasting new coffee varieties. As I sip and savor, I reflect on what went well and what I could improve in future transactions.
The combination of self-hosted InvoiceNinja and PayPal has set the tone for how I will manage my finances moving forward. Having these tools in place not only streamlines my process but also provides my clients with a professional experience—much like being served the perfect brew in a café.
As I continue this journey, I look forward to refining my invoicing skills and serving clients with the same passion I bring to my craft. If you're on your own freelancing path, remember: success comes from blending the right tools to create a delightful experience for both you and your clients. Cheers to many more quotes, projects, and expansive horizons ahead!

View File

@@ -0,0 +1,47 @@
---
layout: post
title: "coffee, code, and creativity: the launch of my new website"
---
Im excited to announce the launch of my brand-new web development website! This venture has been a blend of creativity, dedication, and a lot of caffeinated brainstorming. The goal of my website is to serve as a landing page for potential clients, showcasing my skills and the services I offer, much like a beautifully curated coffee menu at your favorite café.
## Welcome to My Digital Space!
### Who Am I?
Just like each coffee has its unique flavor profile, I bring a distinct set of skills and experiences to web development. I specialize in creating responsive, user-friendly websites that not only look good but also function seamlessly. My passion for design and coding drives me to deliver solutions tailored to each clients needs.
### What I Offer
On my newly launched website, youll find a clear overview of my services:
- **Custom Web Development**: From concept to launch, I can create a website that matches your vision and goals.
- **Responsive Design**: All of my sites are designed to be mobile-friendly, ensuring a smooth experience for users on any device.
- **E-commerce Solutions**: Ready to take your business online? Ill help you set up an engaging and easy-to-navigate online store.
- **SEO Optimization**: Let's make sure your website is visible when potential customers are searching for your services.
- **Ongoing Support**: I believe in building long-term relationships. I provide ongoing support and maintenance to keep your site running smoothly.
## Why Choose Me?
In a world full of options, why should you choose to work with me? Here are a few reasons:
- **Personalized Approach**: I take the time to understand your unique needs and goals, just like how a barista will customize your order based on your preferences.
- **Quality First**: My commitment to quality ensures that every project I take on meets high standards.
- **Timely Delivery**: I value your time as much as a good cup of coffee—prompt, efficient service is guaranteed.
## Portfolio Showcase
Your first impression matters, and thats why Ive included a portfolio section showcasing my previous projects. Each piece reflects my capabilities and attention to detail, just like a well-crafted beverage reflects a barista's skill. This section will give you an idea of the work I do and the quality you can expect when you choose to collaborate with me.
## Get in Touch
I know that starting a new project can feel overwhelming, just like choosing the perfect brew in a coffee shop. Thats why Ive made it easy for you to reach out. If you have an idea, a project in mind, or just want to chat about web development, my contact form is just a click away. Let's take that first step together!
## Subscribe for Insights
Additionally, I invite you to subscribe to my blog for tips, tutorials, and industry insights. Much like sharing coffee brewing techniques, I believe in sharing knowledge and helping others grow in their web journey.
## Conclusion: Cheers to New Beginnings!
Launching my web development website is an exciting milestone, and I cant wait to connect with you and help bring your ideas to life. Thank you for visiting, and I hope to work with you soon to create something extraordinary together. Cheers to new beginnings and a future rich with possibilities!

View File

@@ -0,0 +1,33 @@
---
layout: post
title: "d@n tech is Live!"
---
# New Site Deployed: D@N Tech is Now Live!
I am excited to announce that my new Jekyll site, **d@n tech**, is officially live! This is a significant milestone for me, and I'm thrilled to share this journey with you.
## The Journey to Jekyll
Initially, I considered using WordPress for my website. WordPress is a powerful tool with a lot of flexibility, and it's great for many projects. However, for my specific needs, I found it to be somewhat bulky. I needed something streamlined, efficient, and more suited to a tech-centric site like mine.
That's when I turned to Jekyll. Jekyll is a static site generator that's perfect for developers who want to dive into code, customize their site extensively, and have a more hands-on approach to site management. It's lightweight, fast, and allows for greater control over the site's design and functionality.
## Why Jekyll?
There are several reasons why Jekyll stood out to me:
- **Simplicity and Speed**: Jekyll sites are static, which means they load faster and are simpler to host and manage.
- **Developer-Friendly**: As a developer, I appreciate being able to work directly with the code, and Jekyll is built for this kind of hands-on approach.
- **Customization**: With Jekyll, I have more freedom to customize my site exactly how I want it.
- **Community and Support**: The Jekyll community is vibrant and supportive, offering a wealth of plugins and themes.
## What's Next for D@N Tech?
The launch of d@n tech is just the beginning. This blog will serve as a chronicle of my journey in tech, a place where I can share updates, insights, and experiences.
- **Regular Updates**: Expect regular posts on projects I'm working on, new technologies I'm exploring, and general thoughts on the IT world.
- **Resource Sharing**: I'll be sharing resources and tips that I find useful in my professional journey.
- **Community Interaction**: I'm looking forward to engaging with the community, learning from others, and sharing my knowledge.
Stay tuned for more updates, and thank you for being a part of this exciting journey!

View File

@@ -0,0 +1,36 @@
---
layout: post
title: "brewing success: my journey into freelance web development and server upgrades"
---
As a tech enthusiast with a love for lifes little pleasures—like a well-brewed cup of coffee—I often find myself reflecting on the intersection of my passions and pursuits. Recently, Ive had the incredible opportunity to take on a couple of paid web development projects, which not only expanded my skill set but also funded an exciting server upgrade project. Join me as I spill the beans on my experiences in freelancing, my recent tech acquisitions, and how Invoice Ninja became my trusty sidekick in this journey.
## Pouring the Foundations: Freelancing in Web Development
The web development projects I completed were a fantastic exercise in blending creativity with technical skill. My first client was a dear friend launching her **Mental Health Counseling** practice, **Pemu Counseling and Wellness**. This comprehensive mental health service provider focuses on offering personalized counseling and wellness programs. Building her website from scratch was a rewarding endeavor, allowing me to combine my technical skills with a mission close to my heart. Hosting her site on my server not only helped keep costs down but also gave me an opportunity to fine-tune my server management skills.
Next up was a massage therapist transitioning her services to **shamanism and energy healing** with her business, **Powerful Healing Arts**. This sanctuary is dedicated to helping women move beyond physical healing into deeper energetic and spiritual transformation. For her, I built a new website using **Squarespace**, but with a twist—creating a new site allowed the old one to remain live while I developed it, ensuring there was zero downtime. This tactic was crucial for her business, and it showcased my ability to manage multiple projects while prioritizing client needs.
These projects pushed my problem-solving abilities to the forefront. Not only was I able to deliver functional websites, but I also learned to communicate effectively and manage timelines—skills that are crucial in the fast-paced freelance world.
## Upgrading My Server: A Techies Dream
With the earnings from my freelance work, I decided it was time to tackle my server upgrade project. Having recently acquired a **Dell C6420** that was lacking RAM, I knew the first step was to equip it with the necessary components. This led me on a treasure hunt, culminating in the purchase of a **NetApp DS4246** off eBay for a mere **$170**—a steal considering it typically retails for around **$500**!
The excitement didnt stop there. I also acquired 45 sticks of **16GB RAM** for just **$5 each** in Rochester, while similar RAM on eBay was fetching around **$30 each**. I felt like a savvy scavenger with each deal I bagged, transforming my server into a powerhouse without emptying my wallet.
## Tools of the Trade: Harnessing Invoice Ninja
With my freelancing ventures underway and new technology purchases piling up, I realized I needed a robust tool to manage quotes, task tracking, and invoicing. Enter **Invoice Ninja**! This streamlined software has been a game changer, allowing me to easily track my projects while ensuring timely payments from clients.
Not only does it provide a professional touch to the invoicing process, but its user-friendly interface has simplified my workflow, letting me focus more on what I love—coding and creating. With customized quotes and task tracking, I can keep my projects organized and ensure nothing falls through the cracks.
## The Perfect Blend: Coffee and Coding
As I embark on these projects, I cant help but savor a steaming mug of coffee by my side, fueling my productivity and creativity. The scent of freshly brewed coffee often inspires my coding sessions, turning each challenge into an enjoyable endeavor. It reminds me that work can be pleasurable, especially when you find the right balance between passion and profession.
## Conclusion
In retrospective sips of coffee, its clear that the intersection of freelancing, server upgrades, and the right tools has ignited a spark in my tech journey. Whether it's honing my web development skills to help clients shine or upgrading my server to expand my capabilities, Im excited about the path ahead.
If youre considering freelancing, I encourage you to explore your options and invest your earnings wisely—who knows what kind of tech treasures you might uncover? Until next time, keep coding, keep sipping, and keep crafting your unique blend of technology and life!

1
null Normal file
View File

@@ -0,0 +1 @@
In my professional life, I've navigated various roles in IT. I started at Delta Sonic, moved on to the New York State Office of Information Technology Services, and later thrived as a Desktop Support Specialist at VSO (Virtual Service Operations). After a role with Greene Resources as an Infrastructure Support Specialist, I joined Waygate Technologies in Skaneateles as an End User Support Engineer. Most recently, in March 2025, I returned to New York State service (Office of Information Technology Services), where I continue supporting end users and enterprise operations.

22
posts/index.html Normal file
View File

@@ -0,0 +1,22 @@
---
layout: default
title: d@n tech posts
pagination:
enabled: true
---
<h2>Posts</h2>
{% for post in paginator.posts %}
<span class="post-item"><span class="mobile-hide"> {{ post.date | date: '%Y-%m-%d' }} >> </span><a href="{{ post.url }}">{{ post.title }}</a><span class="float-right mobile-hide">{{ post.categories }}</span></span>
{% endfor %}
<div class="post-nav">
{% if paginator.total_pages > 1 %}
{% if paginator.next_page %}
<a href="{{ paginator.next_page_path | prepend: site.baseurl }}">&lt;- Older</a>
{% endif %}
{% if paginator.previous_page %}
<a href="{{ paginator.previous_page_path | prepend: site.baseurl }}">Newer -&gt;</a>
{% endif %}
{% endif %}
</div>

BIN
resume/.jekyll-metadata Normal file

Binary file not shown.

104
resume/index.md Normal file
View File

@@ -0,0 +1,104 @@
---
layout: default
title: dustin's resume
---
# DUSTIN NEWKIRK(7)
## NAME
**Dustin Newkirk** - Experienced IT Professional
## SYNOPSIS
`dustin` [OPTIONS]... [COMMAND]...
## DESCRIPTION
Results-driven IT professional with a strong background in systems administration, network infrastructure, and customer support. Adept at resolving complex technical issues, coordinating projects, and delivering top-notch service to stakeholders. Proficient in planning, organizing, and documenting complex server/network activities and collaborating effectively in team environments. ITILv4 Foundations and CompTIA A+ certified.
## EXPERIENCE
### March 2025 - Present
**Information Technology Specialist 2, New York State Office of Information Technology Services**
- Coordinates and facilitates data and business systems support to end-users.
- Independently resolves hardware, network connectivity, and application issues.
- Performs risk assessments, recommends IT solutions, assists in upgrades.
### October 2024 - March 2025
**MergeIT**
*End User Support Engineer, Waygate Technologies - Contract*
- Provide on-site deskside support in office and light manufacturing settings.
- Perform technical work activities remotely or on-site to fulfill business and customer needs.
- Coordinate small teams and deliver work packages following company processes.
- Document work completed and escalate issues in line with company procedures.
- Offer excellent customer service to both internal and external customers in a dynamic team environment.
### March 2024 - June 2024
**Greene Resources**
*Infrastructure Support Specialist, Wolfspeed - Contract*
- Maintained operational stability in IT support by swiftly addressing issues, demonstrating persistence and urgency, and aligning short-term results with long-term strategic objectives.
- Managed and resolved IT incidents, including prioritizing, diagnosing, and resolving client, telecom, network, and data storage issues, with a focus on first-contact solutions and backlog management.
- Efficiently escalated and routed IT tickets, adhered to incident SLAs, and regularly updated a central knowledge base with troubleshooting solutions and known issues.
- Coordinated within the IT team to optimize service delivery, time management, and process documentation, ensuring effective task completion and issue escalation.
- Handled workstation imaging, software installation, hardware logistics, and asset management, including deployment, relocation, and lifecycle management in accordance with CMDB standards.
### October 2023 - March 2024
**VSO (Virtual Service Operations)**
*Desktop Support Specialist, Pratt & Whitney - Contract*
- Provides desk support, diagnoses problems, resolves technical issues.
- Performs installations, repairs, upgrades, backups, and maintenance.
- Sets up Audio/Visual equipment, maintains hardware and software inventory.
### June 2019 - August 2023
**Information Technology Specialist 2, New York State Office of Information Technology Services**
- Coordinates and facilitates data and business systems support to end-users.
- Independently resolves hardware, network connectivity, and application issues.
- Performs risk assessments, recommends IT solutions, assists in upgrades.
### September 2017 - June 2019
**Computer Support Technician, Delta Sonic**
- Repairs and maintains point-of-sale equipment, computers, and network systems.
- Configures and troubleshoots hardware/software, resolves computer and network issues.
- Maintains company IT asset records.
## EDUCATION
**Computer & Network Systems Administration, AAS**
- ITT-Technical Institute, May 2013
## CERTIFICATIONS
**ITILv4 Foundations**
- Received February, 2024
- Proficient in IT Service Management principles and practices.
**CompTIA A+**
- Received October, 2023
- Demonstrates expertise in computer systems, networking, and security.
**AWS Certified Cloud Practitioner**
- Received January, 2025
- Validates foundational understanding of AWS Cloud concepts, services, security, architecture, pricing, and support. Recognizes the importance of AWS Cloud in driving business value through effective cloud adoption and management.
## TECHNICAL SKILLS
- Systems Administration: Windows Server, Linux (Ubuntu, CentOS), Active Directory, System Center Configuration Manager (SCCM)
- Networking: TCP/IP, DNS, DHCP, VPN, LAN/WAN
- Customer Support: ServiceNow, Spiceworks
- Virtualization: VMware, Hyper-V, XCP-NG, Proxmox
- Scripting: PowerShell, Bash
- Programming: PHP, HTML, CSS, Bootstrap
- Databases: MySQL
- Security: Firewalls, Antivirus, IDS/IPS, SIEM
## SOFT SKILLS
- Problem-solving and troubleshooting
- Communication and collaboration
- Time management and organization
- Adaptability and continuous learning
## AUTHOR
Dustin Newkirk <dustin@dustin.coffee>
## SEE ALSO
[LinkedIn profile](https://linkedin.com/in/dnewkirk)

2
robots.txt Normal file
View File

@@ -0,0 +1,2 @@
User-agent: *
Sitemap: https://dustin.coffee/sitemap.xml

View File

@@ -0,0 +1,72 @@
---
layout: post
title: "tech infrastructure unpacked: from cloud to home server"
---
#### Introduction: Sit back and grab a coffee
Welcome to a behind-the-scenes look at the infrastructure powering my websites, Dustin.coffee and Hobokenchicken.com. In this post, I'll lay out the complexities and intricacies of my personal tech setup, demonstrating the importance of reliability, technical skills, and the sheer appreciation of a well-built system.
#### Section 1: Domain and DNS Configuration
-**Cloudflare for DNS Management**
- **Why the Switch?** I transitioned to Cloudflare for managing the DNS of dustin.coffee and hobokenchicken.com after Google Domains shut down.
- **Understanding DNS Management:** Think of DNS (Domain Name System) management like a coffee shop's menu. It helps people find my websites using easy-to-remember names (like dustin.coffee) instead of complex numerical addresses, much like how you'd order a "Caramel Macchiato" instead of remembering a specific recipe.
- **Choosing Cloudflare:** Cloudflare is renowned for its speed and security, akin to a highly efficient and safe coffee shop where your order is always secure and served quickly.
- **Content Delivery Network (CDN) Explained:** Cloudflare includes a CDN, which can be likened to having multiple coffee stations in a large office. Instead of everyone queuing at one station, causing delays, there are several stations strategically placed around the office. This setup means that no matter where you are in the office, you can get your coffee quickly. In the same way, the CDN ensures that the static content of my websites (like images and stylesheets that don't change often) is stored in various locations on the internet, so its served faster to you, the visitor, no matter where you are.
#### Section 2: Oracle VPS and Its Role
- **Choosing Oracle VPS:** Think of Oracle VPS as a reliable and affordable storage unit for my website's digital data. After exploring options like Google Cloud and Hetzner, Oracle VPS stood out for its excellent free tier, offering just the right balance of space and features for my needs. And with the balooning costs of Google and Hetzner, Oracle's free tier had exactly what I wanted and needed for no cost.
- **Making Connections Work:**
- **Nginx Proxy Manager:** This is akin to a smart sorting system in a post office. When someone requests to view my website, Nginx Proxy Manager efficiently directs this request to the right destination. It ensures that every digital 'letter' (or in this case, a request to access my website) is sorted and sent to the correct mailbox (my server).
- **Tailscale:** Imagine Tailscale as a secure and private delivery service. It safely transports information from my Oracle VPS (the digital 'storage unit') to my home server (the 'house' where my website lives). Tailscale ensures this digital journey is secure, keeping the data safe from any unwanted interference.
- **How They Work Together:**
- The data journey starts when you type in my website's address. This request travels to Cloudflare (the DNS manager), which acts like a directory, pointing the request to the Oracle VPS.
- Next, the Oracle VPS, equipped with the Nginx Proxy Manager, receives this request. Nginx checks where the request needs to go in this case, it's directed to my home server.
- Tailscale then steps in, creating a secure path for this request to travel from the Oracle VPS to my home server. This ensures that the data remains private and secure as it makes its way to the server.
- Once the request arrives at my home server, the server processes it and sends back the requested web page or information via the same secure route, back to your screen.
This setup ensures a smooth, secure, and efficient flow of data, from the moment you request to view my website to the moment the content is displayed on your screen.
#### Section 3: The Home Server - Heart of the Operation
- **Server Specifications:**
- My home server, a Dell r720xd, is the workhorse behind my entire setup. It's designed to handle demanding tasks with ease. Here's a quick rundown of what it packs:
- **Processors:** It boasts 2x Xeon E5-2695v2 CPUs. These processors are like the brains of the server, handling multiple tasks simultaneously without breaking a sweat.
- **Memory:** With 378GB of RAM, it's like having a vast workspace, allowing me to run several applications and processes concurrently without any lag.
- **Storage:** For quick access and operations, it has 2x 1TB SSDs. These are like the top drawers of a desk, where I keep frequently used tools. For larger, less frequently accessed data, there are 12 10TB SAS HDDs, acting like a massive filing cabinet, offering ample space.
- This combination of processors, memory, and storage means the server can manage heavy data loads, run multiple services smoothly, and store a vast amount of data perfect for my varied needs.
- **Tailscale Subnet Router VM:**
- This particular VM (Virtual Machine) plays a unique role. It's set up as a subnet router for Tailscale. To understand its function, imagine Tailscale as a secure, private network connecting various devices. Normally, each device (or in my case, each LXC container) would need its own Tailscale setup, which can be like having a separate security system for each room in a house.
- What the Tailscale Subnet Router VM does is act like a central security system for the entire house. It means that instead of setting up Tailscale on every individual LXC container, they all automatically get secure access through this VM. This setup simplifies management, enhances security, and ensures that each part of my server communicates securely with the outside world.
- **A Note on Server Age and Ko-fi Initiative:**
- While my Dell r720xd server has been a reliable cornerstone of my digital infrastructure, it's important to note that it's part of an aging platform. In the tech world, this is akin to having a classic car - it has its charm and capabilities, but it also requires maintenance and eventual upgrades to keep up with modern demands and efficiencies.
- To address this, I've started a Ko-fi initiative. Think of Ko-fi as a digital tip jar where supporters can contribute small amounts to help fund upgrades and maintenance for the server. This initiative is all about ensuring that my server continues to run smoothly and remains capable of supporting the latest technologies and my growing needs. Contributions will go directly towards hardware upgrades, ensuring that the server remains robust, secure, and efficient.
- If you appreciate the content and services I provide and want to support the longevity and improvement of this setup, consider contributing to my Ko-fi. Every little bit helps in keeping this digital engine running at its best!
#### Section 4: LXC Containers and Services
- **Plex with GPU Passthrough:**
- My Plex server is a key component of my home entertainment system. By utilizing GPU passthrough, the server's graphics processing capabilities are significantly enhanced. This means smoother, higher-quality video transcoding, allowing for a better viewing experience on various devices, regardless of their native format compatibility.
- **Calibre-web in Docker:**
- Calibre-web, hosted in a Docker container, serves as a digital library. It's primarily used for managing and providing access to a wide range of college textbooks and educational materials for students I support. This setup simplifies the process of storing, accessing, and reading these books, making it an invaluable resource for their academic needs.
- **Jekyll Blog Hosting:**
- For my Jekyll blog, I've tailored a hosting environment that allows for efficient management and seamless content updates. This setup ensures that my blog remains responsive, secure, and easy to navigate, offering visitors a pleasant reading experience.
- **Foundry Server for Pathfinder:**
- The Foundry server is dedicated to hosting Pathfinder role-playing games. It's one of my oldest and most cherished projects, co-managed with another Dungeon Master. This server provides a rich, interactive platform for our gaming sessions, complete with maps, character sheets, and real-time updates, enhancing our Pathfinder experiences.
- **'Arr' Stack in Docker:**
- The 'Arr' stack, hosted within Docker, comprises several components including Prowlarr, Radarr, Sonarr, Sabnzbd, Lidarr, Bazarr, Overseer, Tautulli, Deemix, and Homarr. Each of these components plays a specific role, from managing TV show downloads (Sonarr) to handling music (Lidarr), and even tracking and analyzing Plex usage (Tautulli). This stack represents a comprehensive media management solution, catering to various entertainment needs.
- **Mealie Website for Recipes:**
- Mealie is a recent addition to my setup, currently in the testing phase. It's a web application for meal planning, recipe storage, and generating shopping lists. This tool is aimed at simplifying the process of deciding what to eat, preparing meals, and shopping for ingredients, streamlining the entire culinary experience in my household.
#### Section 5: Data Flow and Security
- **Overview of Data Flow**
- I'll provide a diagram and a thorough explanation of how data moves through this intricate setup.
- **Security Measures**
- Discussion of the various security measures in place, especially focusing on the role of Tailscale and other precautions I've implemented.
#### Conclusion: Bringing It All Together
As we've journeyed through the various components of my digital setup from DNS management with Cloudflare to the intricacies of my home server and LXC containers it's clear that managing such a system requires a blend of technical know-how, strategic planning, and a passion for technology.
The complexity of this setup not only showcases the dynamic nature of tech infrastructure but also highlights the importance of ongoing learning and adaptation. Whether it's handling the transition from Google Domains to Cloudflare, optimizing the use of Oracle VPS, or maintaining the myriad services on my Dell r720xd, each element plays a crucial role in delivering a seamless digital experience.
Beyond the technical aspects, this journey is also about the community and the shared experiences. From hosting Pathfinder games to providing educational resources through Calibre-web, each service has its unique impact.
As technology continues to evolve, so will the components of my setup. I'm excited to continue sharing these developments, insights, and stories with you. Your feedback, questions, and support especially through initiatives like the Ko-fi for server upgrades are what make this journey enriching and worthwhile.
Thank you for taking the time to delve into the world of dustin.coffee and hobokenchicken.com. I hope this glimpse behind the scenes not only informs but also inspires you in your own tech endeavors.

View File

@@ -0,0 +1,30 @@
---
layout: post
title: "transitioning from lxc to vms: preparing for xcp-ng"
---
#### Introduction:
In this latest discussion at d@n tech, we're focusing on a significant transition in the server environment. I've recently embarked on a project to shift from LXC containers to VMs (Virtual Machines), a move prompted by upcoming changes in the server infrastructure.
#### Why the Shift?:
The move away from LXC containers, a staple in my Proxmox setup, to VMs is driven by a need for greater flexibility and platform independence. With plans to eventually migrate to XCP-NG from Proxmox, VMs present a more viable option due to their portability and compatibility with various platforms.
#### The Transition Process:
- **Evaluation:** The initial phase involved assessing the existing LXC configurations, understanding the nuances of their deployment within Proxmox.
- **Selecting the VM Platform:** After exploring various options, I settled on a VM platform that complements the forthcoming XCP-NG environment.
- **Migration Strategy:** I planned the migration in stages, aiming to minimize disruptions and ensure data integrity throughout the process.
- **Implementation:** The services were methodically transitioned from LXC to VMs, with each step rigorously tested for performance and functionality.
- **Post-Migration Optimization:** Following the migration, I've been focusing on fine-tuning the VMs to optimize their performance in the new environment.
#### Upcoming Changes:
The most significant upcoming change is the construction and deployment of a new server that will run XCP-NG. This shift marks a departure from the current Proxmox setup. Once the new server is built and put into production, the VMs, currently housed within Proxmox, will be migrated over to XCP-NG. This transition is not just a change in technology but a strategic move towards a more versatile and robust server ecosystem.
#### Challenges and Learnings:
Navigating through this transition hasn't been straightforward. From compatibility checks to performance tuning, each step presented its own set of challenges. However, these hurdles have provided valuable insights into both Proxmox and XCP-NG platforms.
#### Conclusion:
This journey from LXC containers to VMs, culminating in the move to XCP-NG, is more than a technical upgrade. It's a step towards future-proofing the server environment, ensuring I stay agile and adaptable in the ever-evolving tech landscape.
#### Looking Ahead at d@n tech:
As we move closer to the full deployment of the XCP-NG server, stay tuned for more updates, insights, and learnings from this journey.

View File

@@ -0,0 +1,22 @@
---
layout: post
title: "brewing resilience: from lxc to vm for flawless plex and beyond"
---
#### Introduction:
Hey everyone, it's time for another tech update from d@n tech! Recently, I made a significant change to my Plex server setup that I'm excited to share with you all. After encountering issues with hardware transcoding, I decided to transition my Plex server from an LXC container to a VM, utilizing GPU passthrough for flawless transcoding performance.
#### The Importance of Hardware Transcoding and GPU Passthrough:
Before diving into the transition process, let's talk about why hardware transcoding and GPU passthrough are crucial for a smooth Plex experience. Hardware transcoding offloads the burden of video transcoding from the CPU to specialized hardware, such as a GPU. This results in lower CPU usage, faster transcoding speeds, and better playback performance, especially for remote streaming or multiple concurrent streams. GPU passthrough allows a virtual machine to directly access and utilize a physical GPU, ensuring optimal performance for tasks like video encoding and decoding.
#### Encountering Issues and Making the Transition:
A couple of weeks ago, I noticed that hardware transcoding on my Plex server was no longer functioning properly. After troubleshooting for hours, I discovered that something had broken, preventing the GPU from being utilized for transcoding within the LXC container. Faced with this dilemma, I decided to take the plunge and convert my Plex server to a VM, passing the GPU directly to the VM for optimal performance.
#### The Transition Process:
Converting the Plex server from an LXC container to a VM was no small feat, but it was well worth the effort. I spent several hours meticulously configuring the VM and setting up GPU passthrough. Once everything was in place, I fired up Plex and was thrilled to see hardware transcoding working flawlessly once again. The difference in performance was like night and day, with smoother playback and reduced CPU load.
#### Conclusion:
The transition from LXC to VM with GPU passthrough has revitalized my Plex server, ensuring seamless streaming experiences for users across the United States. With hardware transcoding back on track, remote streaming is once again smooth and reliable, regardless of the distance. Beyond Plex, this change underscores the significance of leveraging hardware acceleration and GPU passthrough for a wide range of services hosted on my server. From media streaming to collaborative projects and beyond, the improved performance enhances the overall user experience and reinforces the reliability of my server infrastructure.
#### Stay Tuned:
As I continue to fine-tune my server setup and explore new technologies, including optimizations for remote streaming and enhancements to various hosted services, be sure to stay tuned for more updates and insights here at d@n tech. Whether you're a fellow tech enthusiast or a remote user enjoying the benefits of my server, there's always something new on the horizon.

View File

@@ -0,0 +1,21 @@
---
layout: post
title: "when the coffee gets cold: recent adventures in my tech homelab"
---
#### A Not-So-Smooth Brew: Plex VM Crash
Just like the perfect cup of coffee, my Plex Media Server has always been a source of comfort. However, recently, it decided to give me a bit of a jolt. The Plex VM crashed, which felt like spilling a fresh brew all over the counter. Thankfully, no media was lost. But, just like trying to clean up a coffee spill, restoring the backup didnt go as planned.
Instead of throwing in the towel, I rolled up my sleeves and rebuilt the VM from scratch. In the end, it was like discovering a new coffee blend different, but better. I made some significant changes that improved the performance and reliability of the server. Sometimes, the best way to deal with a mess is to embrace the opportunity to improve.
#### Fresh Beans: Upgrading the Server
In the quest for better performance, I decided it was time for a hardware upgrade. I purchased 8 Xeon Gold 6138 processors, two per node, and got one node up and running for testing. It was like upgrading from instant coffee to a high-end espresso machine. The server feels more powerful and ready to handle anything I throw at it.
However, before I can start moving my VMs, I need to invest in more RAM. For now, the new node is up and running, and I've tested moving VMs from Proxmox to XCP-NG. The process was smooth, with no issues like making a seamless transition from drip coffee to a French press. Everything worked perfectly, setting the stage for future migrations.
#### Scheduled Downtime: Brewing the Perfect Cup
As any coffee aficionado knows, good things take time. Similarly, my server setup will require some planned downtime in the last week of July into early August. While this might feel like waiting for your morning coffee to brew, I assure you its worth it. There will be no loss of data, although services will be temporarily impacted.
This downtime is necessary to ensure everything is running as smoothly as a freshly brewed cup of coffee. Once complete, my homelab will be stronger and more efficient, ready to serve up the tech equivalent of a perfect cup of joe.
Stay tuned for more updates from dustin.coffee. Until then, keep your coffee hot and your servers cool!

View File

@@ -0,0 +1,52 @@
---
layout: post
title: "percolating ideas: my web dev adventure"
---
Creating a website is more than just coding; its about having a vision and bringing it to life. Recently, I embarked on an exciting web development adventure that was both personally and professionally fulfilling. Over the course of two weeks, I built a website for my friend, a dedicated mental health counselor, using HTML, CSS, Bootstrap, and PHP. Heres a glimpse into my journey, from the initial brainstorming sessions to the final launch, and everything in between.
## The Inspiration Behind the Website
The foundation of this project was rooted in a profound purpose: to help my friend connect with individuals seeking mental health support. She had a clear vision for her website—a space that not only highlighted her counseling services but also provided resources, insights, and a sense of community. Understanding this, I was eager to turn her vision into a reality.
## Planning and Design: Laying the Groundwork
Every great project begins with a solid plan. We kicked things off with brainstorming sessions where my friend shared her ideas about the websites content and structure. Together, we outlined the key pages:
- **About Page**: An introduction to my friends background and her approach to mental health counseling.
- **Services Offered**: Detailed descriptions of the different counseling options available.
- **Resource Hub**: A curated collection of articles, tips, and links to support mental well-being.
- **Contact Form**: An easy-to-use form for potential clients to get in touch.
Using Bootstrap allowed me to create a responsive and visually appealing layout. The emphasis was on clarity and accessibility, ensuring that visitors could find what they needed without hassle.
## Development Process: Turning Ideas into Reality
My two-week development timeline was packed with creativity and learning. Here are some highlights from this adventure:
### Week 1: Structuring the Site
In the first week, I focused on the websites foundational structure, employing HTML to set up content organization. CSS came next, allowing me to craft the aesthetic that matched my friends compassionate and professional tone. Bootstrap was instrumental during this phase, enabling a swift transition to a mobile-friendly design that adapts to various screen sizes.
### Week 2: Bringing Functionality to Life
With the structure in place, I sprinted into the second week, where I added PHP functionality for the contact form. This important feature would allow prospective clients to reach out without the hassle of dealing with their email accounts—a small yet significant convenience.
### Version Control: Keeping Track with GitHub
Track changes was a breeze thanks to GitHub. Every implementation and tweak was logged in the repository, which not only helped streamline development but also made it easier to involve my friend in the feedback loop. Iteration and collaboration became the backbone of our process, ensuring the final product was truly reflective of her vision.
## Hosting and Domain Setup: The Finishing Touches
Once we settled on the design and functionality, it was time to get the website online. I opted to host the site on a virtual machine (VM) within my own server. This gave me complete control over the hosting environment and security features.
For domain registration, we selected Cloudflare, known for its robust features and security enhancements. This decision meant that visitors would benefit from faster load times and improved site safety—important factors when dealing with sensitive topics like mental health.
## Conclusion: A Journey of Purpose
Building this website was more than a technical endeavor; it was an opportunity to contribute to a cause I truly believe in. Knowing that this platform can help connect individuals with the mental health support they need is immensely gratifying.
As my friend embarks on this new chapter of her practice, Im excited to see how the website will grow and evolve. If youre a mental health professional in need of an online presence or any kind of support to bring your ideas to fruition, remember: the journey may pose challenges, but the rewards are lasting.
This web dev adventure taught me that purpose drives creativity. Creating a meaningful website is not just an end goal; its a way to serve and connect with the community. Heres to more adventures and the endless possibilities that come from percolating ideas!

View File

@@ -0,0 +1,47 @@
---
layout: post
title: "brewing up my homelab: new services, hardware, and monitoring magic"
---
Hello fellow tech enthusiasts (and coffee lovers)!
As much as I enjoy a freshly brewed cup of coffee, theres something equally satisfying about brewing up new capabilities in my homelab. Over the past few weeks, Ive been busy adding some fresh services and hardware to keep my setup not just humming, but buzzing with efficiency and helpfulness. Whether youre managing your own digital playground or just curious about whats possible on a home scale, heres whats new on the docket — plus, the gear thats making it all work.
## New Services: From Collaboration to Monitoring and Gaming
### Nextcloud-AIO Saying Goodbye to Discord Dependence
First up: Ive integrated **Nextcloud-AIO** to replace our previous dependence on Discord for collaboration and file sharing. With the all-in-one Nextcloud setup, Ive gained a self-hosted, privacy-respecting platform that handles chat, file sharing, calendar syncing, and more — all under my control. Its the perfect homebrew alternative to relying on third-party cloud services.
### Grafana, Prometheus, and Telegraf Monitoring Made Beautiful
Monitoring is crucial, especially as my homelab grows in complexity. Ive hooked up **Grafana**, **Prometheus**, and **Telegraf** to create a robust monitoring stack that tracks performance metrics and visualizes everything in sleek, coffee-black dashboards. From CPU temps to network throughput, now I can sip some espresso while stats gently pour in real time.
### Uptime Kuma Watching Over My Homelab from the Cloud
While my monitoring stack watches internal metrics, I also set up **Uptime Kuma** on my VPS to keep an eye on service availability from an external vantage point. Having an external health check ensures that Im alerted if services go down when Im away from home—because coffee breaks shouldnt be interrupted by unexpected outages!
### WeddingShare Celebrating with Friends
On a more personal note, I deployed **WeddingShare** for a friends upcoming wedding. This open-source project is a fantastic way to collaboratively share photos and memories securely. Running it on my homelab feels great—using technology to enhance lifes special moments.
### Enshrouded Game Server Because Play Is Important
Lastly, I gave new life to my gaming side by spinning up an **Enshrouded game server**. After all, every techie needs downtime, and running a self-hosted game server keeps me connected with friends while enjoying some pixelated adventures.
## Upgrading the Hardware: Rack Em, Stack Em, and Speed Em Up
To support all these new services and keep things neat, Ive invested in some solid hardware upgrades:
- **25U Rack** — Finally, my scattered gear is beautifully racked and organized. Nothing like a sturdy rack to keep cables tidy and airflow optimal.
- **10Gb NICs for C6420** — High-speed networking is a must, so I equipped my C6420 with 10 Gigabit NICs. Moving data is faster than ever.
- **NetApp DS4246** — Storage gets a big upgrade with this robust disk shelf, improving both capacity and reliability.
- **NETGEAR GS724T v2 PROSAFE 24-Port Switch** — For all the 1Gb connections, this switch provides plenty of ports and solid management features.
- **Rails for R720xd, C6420, and NetApp DS4246** — Proper mounting hardware makes installing and servicing equipment a breeze.
## Lessons Learned & Whats Next
Setting up all these components has been a rewarding challenge that reminds me why I love blending technology with a little caffeine-induced focus. With better monitoring, more control over collaboration, and robust hardware behind it, my homelab feels ready to handle just about anything I throw at it.
Looking ahead, Im keen to explore containerizing more apps, automating backups, and maybe even dabbling in some home automation tied into this setup. And of course, keeping the coffee flowing remains a top priority.
---
If youre running your own homelab or considering starting one, I hope this update sparks some ideas (and maybe convinces you to add a rack or two!). Feel free to reach out if you want details on how I set up any of these services or hardware.
Until next post — stay caffeinated and curious!