xhynk.com Open in urlscan Pro
2a06:98c1:3120::3  Public Scan

Submitted URL: http://xhynk.com/
Effective URL: https://xhynk.com/
Submission: On January 24 via api from US — Scanned from NL

Form analysis 16 forms found in the DOM

<form>
  <h3 class="flex space-between full">Clickjacking Test:</h3>
  <p style="margin-top: 0;">Make sure that your website is safe from <a href="https://en.wikipedia.org/wiki/Clickjacking">Clickjacking</a> attacks. Type in your URL below and click "Test URL", the test should take only a few seconds.</p>
  <div class="flex nowrap align-center">
    <input type="url" id="cj-url" onkeydown="(function(event){ if(event.keyCode == 13) { event.preventDefault(); var start = document.querySelector('#start-cj-test'); simulateClick(start); } })(event);"><span id="start-cj-test"
      class="button primary small" style="top:0;margin-left:1em;" onclick="startCJTest(this, event);">Test URL</span>
  </div>
</form>

<form>
  <h3 class="flex space-between">Character Count: <span class="count-display">0</span></h3>
  <textarea id="character-count" onkeyup="this.previousElementSibling.querySelector('.count-display').innerText = this.value.length;"></textarea>
</form>

<form>
  <h3 class="flex space-between">Click Counter: <span class="count-display">0</span></h3>
  <div class="grid columns-3 small-gap clickers">
    <span class="button" onclick="var cd = this.closest('form').querySelector('.count-display'); cd.innerText = parseInt(cd.innerText) + 1; ">Increase</span>
    <span class="button" onclick="var cd = this.closest('form').querySelector('.count-display'); cd.innerText = parseInt(cd.innerText) - 1; ">Decrease</span>
    <span class="button" onclick="var cd = this.closest('form').querySelector('.count-display'); cd.innerText = 0;">Reset</span>
  </div>
</form>

<form>
  <h3>Base 64 Encode</h3>
  <input type="text" onkeyup="this.nextElementSibling.innerText = btoa(this.value);">
  <div class="result break-all"></div>
</form>

<form>
  <h3>Base 64 Decode</h3>
  <input type="text" onkeyup="this.nextElementSibling.innerText = atob(this.value);">
  <div class="result break-all"></div>
</form>

<form>
  <h3 class="flex space-between">
    <span>URL Encode</span>
    <label class="toggle" style="font-size: 12px;">
      <input type="checkbox" onclick="var input = this.closest('form').querySelector('[type=\'text\']'); this.closest('form').querySelector('.result').innerText = (this.checked) ? encodeURI(input.value) : encodeURIComponent(input.value); ">
      <span>Ignore Components</span>
    </label>
  </h3>
  <input type="text" onkeyup="this.nextElementSibling.innerText = (this.previousElementSibling.querySelector('input').checked) ? encodeURI(this.value) : encodeURIComponent(this.value);">
  <div class="result break-all"></div>
</form>

<form>
  <h3 class="flex space-between">
    <span>URL Decode</span>
    <label class="toggle" style="font-size: 12px;">
      <input type="checkbox" onclick="var input = this.closest('form').querySelector('[type=\'text\']'); this.closest('form').querySelector('.result').innerText = (this.checked) ? decodeURI(input.value) : decodeURIComponent(input.value); ">
      <span>Ignore Components</span>
    </label>
  </h3>
  <input type="text" onkeyup="this.nextElementSibling.innerText = (this.previousElementSibling.querySelector('input').checked) ? decodeURI(this.value) : decodeURIComponent(this.value);">
  <div class="result break-all"></div>
</form>

<form>
  <h3>Unserialize</h3>
  <input type="text" onkeyup="this.nextElementSibling.innerText = read_unserialize(unserialize(this.value));">
  <div class="result break-all"></div>
</form>

<form>
  <h3>HTML Entities: Encode</h3>
  <input type="text" onkeyup="this.nextElementSibling.innerText = html_entity_encode(this.value);">
  <div class="result break-all"></div>
</form>

<form>
  <h3>HTML Entities: Decode</h3>
  <input type="text" onkeyup="this.nextElementSibling.innerText = html_entity_decode(this.value);">
  <div class="result break-all"></div>
</form>

<form>
  <h3 class="flex space-between">
    <span>MD5 Hash</span>
  </h3>
  <input type="text" onkeyup="getMD5(this,event);">
  <div class="result break-all"></div>
</form>

<form>
  <h3 class="flex space-between">
    <span>Spin-2-Win</span>
  </h3>
  <input type="text">
  <span class="button primary small"
    onclick="var text = this.previousElementSibling.value; if( text ){ var span = document.createElement('span'); span.onclick = function(){ this.remove() }; span.innerText = text; this.nextElementSibling.insertBefore(span, this.nextElementSibling.querySelector('.special')); this.previousElementSibling.value = ''; var labsDiv = document.getElementById('labs'); labsDiv.scrollTop = labsDiv.scrollHeight; this.previousElementSibling.focus(); }">Add</span>
  <div class="result break-all">
    <button class="button special" onclick="spin2win(event);">Spin-2-Win!</button>
  </div>
</form>

POST https://xhynk.com/

<form id="contact-form" method="POST" action="https://xhynk.com/" onsubmit="ajaxSubmit(this,event);">
  <div class="field flex-col-reverse">
    <input required="" type="text" name="name" id="name" tab-index="-1" value="">
    <input class="hidden" style="padding: 0; overflow: hidden;" type="text" name="your_last_name" id="your_last_name" tab-index="-1" autocomplete="nope" value="">
    <label for="name">Name</label>
  </div>
  <div class="field flex-col-reverse">
    <input style="display: none;" type="email" name="email" id="email" autocomplete="nope" value="">
    <input required="" type="email" name="email" id="email" value="">
    <label for="email">Email</label>
  </div>
  <div class="field flex-col-reverse">
    <textarea required="" name="message" id="message" rows="4"></textarea>
    <label for="message">Message</label>
  </div>
  <div class="field">
    <div class="g-recaptcha" data-sitekey="6LfIOFgUAAAAANQ5vb6gmMGQuZoNlr_JCeU8-an-">
      <div style="width: 304px; height: 78px;">
        <div><iframe title="reCAPTCHA" width="304" height="78" role="presentation" name="a-fbzqzof6z8k4" frameborder="0" scrolling="no"
            sandbox="allow-forms allow-popups allow-same-origin allow-scripts allow-top-navigation allow-modals allow-popups-to-escape-sandbox allow-storage-access-by-user-activation"
            src="https://www.google.com/recaptcha/api2/anchor?ar=1&amp;k=6LfIOFgUAAAAANQ5vb6gmMGQuZoNlr_JCeU8-an-&amp;co=aHR0cHM6Ly94aHluay5jb206NDQz&amp;hl=nl&amp;v=Ya-Cd6PbRI5ktAHEhm9JuKEu&amp;size=normal&amp;cb=o0b4k7o9tctn"></iframe></div>
        <textarea id="g-recaptcha-response" name="g-recaptcha-response" class="g-recaptcha-response" style="width: 250px; height: 40px; border: 1px solid rgb(193, 193, 193); margin: 10px 25px; padding: 0px; resize: none; display: none;"></textarea>
      </div><iframe style="display: none;"></iframe>
    </div>
  </div>
  <div class="actions">
    <button name="submit" value="true" class="full">Send Message</button>
  </div>
</form>

<form>
  <h3>Step 1: Authorize Xhynk.com</h3>
  <span>This part is <strong>easy</strong>, just click the button! A new page will open up, click the "Authorize App" button, and you'll come back here.</span>
  <span class="button primary" onclick="requestTwitterToken(this,event);">Authorize Xhynk.com</span>
</form>

<form>
  <h3>Step 2: Get an Access Token</h3>
  <span>This part is <strong>also easy</strong>, again, just click the button! With xhynk.com authorized, we now need to get our access tokens.</span>
  <span class="button primary" onclick="accessToken(this,event);" data-oauth-token="" data-oauth-verifier="">Get Access Token</span>
</form>

<form>
  <h3>Step 3: Get Your Hat</h3>
  <span><strong>Huzzah!</strong> All of the boring technical <strong>magic</strong> and hullabaloo is done! Now just click the button below to put on your Holiday Hat!</span>
  <span class="primary button" onclick="putOnHat(this,event);">Put On Your Hat!</span>
</form>

Text Content

 
About Projects Labs Resources Reviews Contact Donate
1971


ALEXANDER DEMCHAK

@Xhynk Lead Software Developer
TikTok Discord
13,5810833698700519
Support Me Contact


ABOUT

I did my first Terrarium Building Stream on Saturday, March 26th, 2022! You can
check out the replay on Twitch! A huge thank you to everyone who came and hung
out!

Howdy! I'm Alexander Demchak.
I'm known colloquially online as Xhynk (pronounced "zinc"), and more recently:
Stinky. I've been a web developer since 2010, and now work mainly with PHP and
its associated languages.
I've spent much of 2020 and 2021 helping cultivate positive, inclusive,
non-toxic communities online - and have made some wonderful friends across the
world since!
Age:33 Years
Freelance:Available
Location:Salem, Oregon - USA
Language:English



EXPERTISE


Web Development

Whether you need a simple website, help integrating a WordPress theme, or a
fully customized solution - I can help!


Debugging

Having issues with a PHP implementation, WordPress website (theme, plugin,
dashboard), database, or DNS? Fear not! (check out my Stack Overflow profile for
some reassurance!)


Web Presence Analysis

I can help you find critical usablitity errors on your website, consult about
your online presence, and more.


Teaching

Stuck on a project, want to learn WordPress, have a PHP or JavaScript bug, or
want to learn to empower your marketing?


TERRARIUM MATERIALS

If anybody would like to follow along, I've got a buy list! The minimum basics
are:

 * Glass Container
 * Gravel/Rocks
 * Activated Charcoal
 * Sterile Potting Mix
 * and of course: Plants!

There's a few other things that are helpful and or nice to have:

 * Tools: Wooden dowel/stick and long tweezers, spray bottle
 * Different sizes/colors of gravel
 * Sand
 * "Aeration Medium" (pumice, perlite, leca balls, etc)
 * Decorative elements (crystals, figures, etc - non bio-degradable!!)!

Glass Container: Just about anything will work, with or without a lid. I prefer
a loose fitting lid. You can use a mason jar too (just poke a hole in the lid).
Any clear glass will work, however. Fish bowls, terrarium specific glass, hollow
glass lamps, cookie jars, etc. Just make sure it's clear and not tinted!
https://www.amazon.com/CYS-EXCEL-Glass-Container/dp/B08H3MY9V4/
https://www.amazon.com/Anchor-Hocking-2-Gallon-Heritage-Hill/dp/B000KKI7GY/

Gravel/Rocks: Having some nice river rocks and aquarium gravel is two-fold. It
prevents stagnant stinky water in the base, and gives you some aesthetic
elements on the top. No links - just get some rocks/gravel you like!

Activated Charcoal: Useful for drainage, soil aeration, and most importantly -
plant health!
https://www.amazon.com/TerraGreen-Creations-Horticultural-Activated-Conditioning/dp/B095J8FG4P/

Potting Mix: Some will have activated charcoal and perlite in them, but they're
still good to have separately as well. Make sure whatever mix you get does not
have fertilizer additives in it.
https://www.amazon.com/Terrarium-Soil-Terrariums-Filtering-Charcoal/dp/B091S7SFX9/

PLANTS: Most any ground plants that are not succulents will work great! Thinks
like Nerve Plants, Polka Dot Plants, Goldfish Plants, Spidermoss, Creeping Fig,
Clubmoss, Ferns, African Mask, etc - all do really well. A local nursery
probably has a great selection for cheap (~$2-$5 per plant), but you may be able
to get some from "the big box store" garden center too.
https://www.amazon.com/Terrarium-Plants-Garden-Assorted-Varieties/dp/B07GBBZN8D/

---- Optional/Helpful Things ----

Tools: Long tweezers are great. A long dowel is great for digging holes. Curved
long-handle scissors for trimming is great. There's a million kits out there but
something like this is great: https://www.amazon.com/dp/B07BBFZB4F/ - Also a
spray bottle will make watering it much easier

Sand: Basically, even smaller gravel. This is mostly an aesthetic element to
help fill in some bare dirt spots on the top, I just like the way it looks!

Aeration Medium: Many soils will have one in them, but having some extra for
underneath and or breaking up soil is nice. Either pumice, perlite, or LECA
balls work really well.

Decorations!! These are purely aesthetic! Find something you think is cute/cool
and stick it in there! Just make sure it's not biodegradable, otherwise it will
rot and cause damage. Things like shells, crystals, or figurines are great!

-------

If you want to be super prepared, be sure to boil any solid things you get and
plan to put in. (Rocks, gravel, crystals, figures, etc) - Since these are
semi-closed and semi-self sustaining, any yuckies you introduce will thrive
(mold spores, fungal spores, etc) Side note, you can "get along" with, at a
minimum:

 * a Mason Jar
 * Terrarium Soil
 * Plants
 * Some rocks from the backyard




REVIEWS

Write a Review

THANKS SO MUCH!!




Thanks so much for replying, and quickly too - really wasn’t expecting it to be
honest. So yes, I have given the iframe approach a go. The settings I had come
up with were a little janky but I implemented yours and they are much better!
I’ll keep playing around with a few other solutions, but I just wanted to say
thanks again for helping me out with this, and all the best with your future
endeavours.

Read Review

GREAT PLUGIN




Thanks for your rapid response. Fixed the problem.

Read Review

AMAZING!




This is an amazingly effective and easy to use plugin. I went out searching for
some code to adapt to my pages to do this same thing. Even about to hire someone
on Fiverr. And then I came across the Content Mask plugin. It does exactly what
I need in two steps. Thank you!

Read Review

WOW! YOU'RE MOVING FAST! VERY MUCH APPRECIATED!




I’ve upgraded the module and there are quite a lot of changes. I think I’ve got
it, after a few quick tests! Cheers and cold beers from Romania! PS – If I found
something that’s not quite right, I let you know! I salute you, be safe!

Read Review

BRILLIANT APP




I'm currently using the content masking plugin with a iFrame

Read Review

A WONDERFUL CONCEPT!




I have a hard time articulating what's swirling around in my head, and Alex took
the time to really extract and *understand* what I wanted. I'm super greatful
for his time and effort!!

Read Review

OUTSTANDING TIME SAVER!




This plug is wonderful! It works efficiently and saved me from custom coding,
subdirectories, DNS changes, and more. I’m usually reluctant donate to plugins,
but for this one I was more than happy to do so!

Read Review

MUST DOWNLOAD




This works seamlessly and the developer is extremely responsive. You can tell he
cares about his products.

Read Review

I JUST TESTED IT AND IT WORKS BEAUTIFULLY!




Thank you so much for pushing this upgrade out! It helps me more than you can
even imagine with the way some of my affiliate funnel is set up right now. Have
a phenomenal rest of your week! I deeply appreciate your work!

Read Review

GREAT PLUGIN AND EVEN BETTER SUPPORT!




I just got the plugin and it does all that I was looking for! I tried to find a
solution to my problem for hours, and then I stumbled upon this plugin. Amazing.
Also, the support is awesome! I noticed a small bug, and he quickly updated it.
Most definitely recommend it. Thank you!

Read Review


LABS

Super-Duper Top Secret Labs


CLICKJACKING TEST:

Make sure that your website is safe from Clickjacking attacks. Type in your URL
below and click "Test URL", the test should take only a few seconds.

Test URL


CHARACTER COUNT: 0


CLICK COUNTER: 0

Increase Decrease Reset


BASE 64 ENCODE




BASE 64 DECODE




URL ENCODE IGNORE COMPONENTS




URL DECODE IGNORE COMPONENTS




UNSERIALIZE




HTML ENTITIES: ENCODE




HTML ENTITIES: DECODE




MD5 HASH




SPIN-2-WIN

Add
Spin-2-Win!


BLOG




EMOTES

View All Emotes

Ever since I've been trying to cultivate a fun, positive, non-toxic atmosphere
online (largely around programming and gaming communities) - making emotes for
Twitch and Discord has been enormously fun!

AdamBruh.gif CinderNope.gif CleoBox.png CleoBoxButt.gif CleoSadWantHug.png
CleoUppies.gif Cleowo.png CrispBan.gif CrispBonk.png CrispBully.png
CrispDarude.gif CrispDerp.png CrispDerp2.png CrispDerp2b.png CrispDickbutt.gif
CrispFire.gif CrispGlow.png CrispGlowBlack.png CrispHeartHug.png CrispHug.png
CrispHydrate.png CrispIceCreamDerp.png CrispJamAnim.gif CrispJamDerp.png
CrispLol.png CrispNoBully.gif CrispNoLol.png CrispNote.gif CrispOctopus.png
CrispPat.png CrispRainbowBleh.png CrispRainbowBleh2.png CrispSaber.gif
CrispSaberBlack.gif CrispShake.gif CrispSlam.gif CrispWeinerAnim.gif
CrispWeinerAnimZoom.gif CrispWigglyOctopus.gif CrispYesLol.png FarmerCrisp.png
IsrafelWiggle.gif NORTH.png RIP-128.png SuperSayaCroc.png SuperSayaLOL.png
SuperSayaSad.png SuperSayaSmug.png UNNORTH.png WigglyOctopus.gif
WigglyOctopus2.gif WigglyOctopusX.gif blank.png cranberry.png cranberrybig.png
crispdab.png crisphi.png crispspin.gif ib7.png ibBonk.png ibBonk2.png
ibBooster.png ibBop.png ibBopChop.png ibBopChop2.png ibBopFish.png
ibBopFish_A.gif ibBopHelm.png ibBopSpoon.png ibBopSword.png ibBopTreat.png
ibBopUwU.png ibBruh.png ibBuffL.png ibBuffR.png ibBuster.png ibCake.png
ibCharge.png ibCheeks.png ibCheeks2.png ibCircleThingy.png ibComfee.png
ibComfy.png ibGasm.png ibGasp.png ibGlow.png ibGoth.png ibHeart.png ibHi.png
ibHi_A.gif ibHornyJail.png ibHornyJailRGB.png ibHungJury.png ibIkelosSMG.png
ibKEK.png ibKEKW.png ibKek.png ibLament.png ibLick.png ibLickyLicky.png
ibLol.png ibLurkA.png ibLurkB.png ibLurkyLurky_anim.gif ibMask.png ibMeatBop.png
ibMote.png ibNorth.png ibNoseBleed.png ibNotes.png ibOhnyo.png ibOoOoOoOo.gif
ibOoo.png ibPain.png ibPatPat.gif ibPersonality.png ibSadWantHug-l.png
ibSadWantHug.png ibSarcasm.png ibSlam.gif ibSlamNecrotic.gif ibSmoke.png
ibSquee.png ibSqueeArt.png ibSqueeBear.png ibSqueePup.png ibSqueeVex.png
ibStank.png ibSus.gif ibTeehee.png ibUrk.png ibWAT.png ibYeet.png
xhynkTraumaCrux.png xhynkTraumaDorito.png xhynkTraumaIlluminati.png


PROJECTS

All DIY/Woodwork Programming

OAK & LEATHER BOUND BOOKS

For my Secret Santas this year, I handmade some Oak & Leather bound books, one
"Short Stories of Overwatch" and one Fellowship of the Ring.

Contact for Details

UNDER THE WILLOW TREE VR

My sweet Willow passed away during the eclipse in 2017. I'm making a VR game as
a sentimental legacy project in honor of her. Slow & steady progress 💜

Video Contact

WHIRLOCAL.IO

WhirLocal is an easy-to-use automated "Neighborhood Marketing Platform" that
makes it easy to get more ideal customers.

Learn More

CONTENT MASK

A robust WordPress plugin that eliminates the need for complex domain masks and
forwarders.

Learn More

DOGECARDS

A silly project that uses PHP and Ajax to generate "Dogecards" on the fly. MySQL
Database driven.

Learn More

KARMABOT

A sentiment detecting, database driveno allow our Slack team to award "Karma" to
users.

Learn More

PHIZSPA

A website redesign for a client who underwent large-scale internal rebranding
for her new location.

Learn More

PRIVACY & CONSENT ASSISTANT

A plugin that inserts Form Consent to all forms on the site and a Tracking
Consent bar.

Learn More

CUSTOM REPUTATION ENGINE REST API

A custom API to allow easy access to local businesses' reputation and to embed
their reviews.

Learn More


DONATE

Donate via PayPal.me


LIKE WHAT I'M DOING?

I love making sure my discord and twitch bots, plugins, tutorials, and code
samples are chugging along merrily - and donations help me keep doing what I'm
doing. I have a couple ways to accept donations, and I'm sincerely thankful for
each and every donation I get!

DONATE VIA STREAMELEMENTS

If you support me while I'm streaming, I'd love for you to do it here so I can
thank you properly!

BUY ME A KO-FI

I drink so much coffee, it's only fitting!

Support Me on Ko-fi

DONATE DIRECTLY

Venmo CashApp PayPal.me

SUPPORT WITH CRYPTO

I'm a crypto enthusiast, and these are just a few wallet addresses. I'm also
available on Coinbase Wallet as @xhynk.

0x13d62F37eccf13aE0d266a54dBC9fA6DFb87FCcD
3LUzAsHe6v9rPNjtkGYHVdfPTb2kpAMrWc
MFJQPCiAsG5ioQG2mT1XyQHhYx2bA6qksR
0x2B5bF1Ed8e22d99888DED7d3FCEf5c1865017b9C
GDQP2KPQGKIHYJGXNUIYOMHARUARCA7DJT5FO2FFOOKY3B2WSQHG4W37
Memo: 1710883615


RESOURCES

Request a Resource

I've been starting to try and publicize resources when I end up helping someone,
whether that's with a walk-through video, or StackOverflow answer.

GOOGLE SHEETS AS TIMESHEET

We used tedious paper timesheets, and then clunky or expensive software. We use
Sheets for everything, why not our timesheet? A simple Apps Script
validates/emails it to our CFO, while formulas in the sheet assist in
maintenance.

Apps Script Timesheet

USING GITHUB

I had someone ask me how to get started with GitHub, so I made this impromptu
walk-through video. It covers the basics of using GitHub Desktop, committing
changes, pushing and pulling, and a few other basics.

View on Loom

HOW I MADE XHYNK.COM MOVE

Somebody asked me for a tutorial on how I made this website animated. I made
this quick walkthrough showing a process to create some simple
translation/rotation animation with JavaScript to make it look like it has
depth.

View on Loom

BOX SHADOW BASICS

I made this as I see more people joining #100DaysOfCode and learning the basics.
Box Shadows are great, but most people make them way too stark for the elements
they're on.

View on CodePen


CONTACT

info@xhynk.com

If you have any questions or want to get in touch, feel free to contact me
below. (Note: Do not send me credentials through this form! If you need to send
me any login credentials, please use the form located here: xhynk.com/keygen/)

Name
Email
Message

Send Message
 * Oregon
 * info@xhynk.com
 * Stack Overflow
 * Pluralsight logo icon PluralSight
 * GitHub
 * CodePen.io
 * WordPress.org
 * Twitter
 * TikTok TikTok
 * Twitch
 * Discord Discord
 * Facebook
 * Instagram
 * WhirLocal
 * LinkTr.ee


WANT A HAT?

Lol, we all want a hat
Is your Twitter profile picture boring? Is it a picture of your face without a
hat? Let me fix that for you!

Using Google's Cloud Vision API, Twitter's Profile API, and PHP's ImageMagick
Class Library, we can find your face, add a cool hat to your hat-less head, and
then automatically upload it back to Twitter!


STEP 1: AUTHORIZE XHYNK.COM

This part is easy, just click the button! A new page will open up, click the
"Authorize App" button, and you'll come back here. Authorize Xhynk.com


STEP 2: GET AN ACCESS TOKEN

This part is also easy, again, just click the button! With xhynk.com authorized,
we now need to get our access tokens. Get Access Token


STEP 3: GET YOUR HAT

Huzzah! All of the boring technical magic and hullabaloo is done! Now just click
the button below to put on your Holiday Hat! Put On Your Hat!