What Students Say

Hear from students who have transformed their coding skills through our workshops.
Participating in the Python workshops at fowlkit truly boosted my confidence in coding. The hands-on projects and supportive instructors helped me understand complex concepts easily. I highly recommend these workshops to all aspiring coders.
Lindiwe Mkhize
Lindiwe Mkhize
High School Student, South African High School
Parked Domain name on Hostinger DNS system*{ margin: 0; padding: 0; box-sizing: border-box;} body{ font-family: 'DM Sans', sans-serif; background-color: #fafbff; color: #1d1e20; line-height: 1.5;} .container{ max-width: 1110px; margin: 160px auto; padding: 0 32px; box-sizing: content-box;} .header{ display: flex; flex-direction: column; gap: 32px; align-items: flex-start; margin-bottom: 80px;} .header-content{ flex: 1; display: flex; flex-direction: column; gap: 24px; max-width: 420px;} .domain-info{ display: flex; flex-direction: column; gap: 16px;} .domain-title{ font-size: 40px; font-weight: bold; line-height: 48px; color: #1d1e20; font-family: 'DM Sans', sans-serif; word-break: break-word;} .registered-at{ display: flex; align-items: center; gap: 16px;} .registered-text{ font-size: 16px; color: #1d1e20; font-family: 'DM Sans', sans-serif;} .logotype{ width: 150px; height: 30px;} .description{ font-size: 16px; color: #1d1e20; max-width: 384px; font-family: 'DM Sans', sans-serif;} .figma-button{ background-color: #673de6; color: white; border: none; border-radius: 8px; padding: 8px 16px; min-height: 40px; min-width: 96px; font-size: 14px; font-weight: 700; line-height: 24px; font-family: 'DM Sans', sans-serif; cursor: pointer; transition: opacity 0.2s; width: fit-content; text-decoration: none; display: inline-block;} .figma-button:hover{ opacity: 0.9;} .visual-mockup{ flex: 1; display: flex; justify-content: center; position: relative; width: 100%; max-width: 658px; height: 363px; overflow: hidden; img{ width: 100%; height: 100%; object-fit: cover;}} .visual-mockup .bg-elements{ position: absolute; inset: 0;} .bg-rect-1{ position: absolute; background: #d5dfff; height: 51px; width: 328px; right: 320px; top: 247px;} .bg-rect-2{ position: absolute; background: #d5dfff; height: 45px; width: 112px; right: 163px; top: 298px;} .bg-rect-3{ position: absolute; background: #d5dfff; height: 45px; width: 112px; right: 321px; top: 298px;} .bg-rect-4{ position: absolute; background: #d5dfff; height: 45px; width: 52px; right: 492px; top: 298px;} .bg-rect-5{ position: absolute; background: #d5dfff; width: 16px; height: 16px; right: 27px; top: 261px;} .bg-rect-6{ position: absolute; background: #d5dfff; height: 45px; width: 101px; right: 62px; top: 298px;} .main-showcase{ position: absolute; background: white; height: 238px; width: 423px; right: 118px; top: 50px; border-radius: 11px; border: 1px solid #c3cce9; box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1); overflow: hidden;} .showcase-nav{ position: absolute; top: 25px; left: 50%; transform: translateX(-50%); display: flex; gap: 24px; font-size: 6px; font-weight: 600; color: #2f1c6a; text-transform: uppercase; letter-spacing: 0.05em;} .bold-text{ position: absolute; left: 46px; top: 64px; font-size: 41px; line-height: 0.89; font-weight: 900; color: #8c85ff; letter-spacing: -0.025em;} .shop-now{ position: absolute; left: 46px; top: 145px; display: flex; align-items: center; gap: 8px;} .shop-text{ color: #2f1c6a; font-size: 6px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em;} .shop-line{ width: 16px; height: 1px; background: #2f1c6a;} .domain-tags{ position: absolute; right: 78px; top: 36px; display: flex; gap: 4px;} .domain-tag-1{ background: linear-gradient(to right, rgba(103, 61, 230, 0.2), transparent); backdrop-filter: blur(4px); background-color: rgba(255, 255, 255, 0.8); padding: 9px 14px; border-radius: 8px; border: 1px solid #eaeaff; box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1);} .domain-tag-2{ background: #673de6; padding: 9px 14px; border-radius: 8px; border: 1px solid #5025d1;} .tag-text-1{ font-size: 10px; font-weight: bold; color: #45219c;} .tag-text-2{ font-size: 10px; font-weight: bold; color: white;} .services{ display: flex; flex-direction: column; gap: 24px;} .services-title{ font-size: 24px; font-weight: bold; color: #1d1e20; line-height: 36px; font-family: 'DM Sans', sans-serif;} .services-grid{ display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 24px;} .services-grid-2{ display: grid; grid-template-columns: repeat(auto-fit, minmax(400px, 1fr)); gap: 24px;} .service-card{ background: #f4f5ff; border: none; border-radius: 8px; padding: 24px; display: flex; flex-direction: column;} .service-card-large{ background: #f4f5ff; border: none; border-radius: 8px; padding: 32px; display: flex; flex-direction: column;} .service-icon{ background: #d5dfff; padding: 8px; border-radius: 6px; width: fit-content; margin-bottom: 12px; display: flex;} .service-icon svg{ width: 20px; height: 20px; color: #2f1c6a; fill: currentColor;} .service-title{ font-size: 20px; color: #1d1e20; font-family: 'DM Sans', sans-serif; font-weight: 600; margin-bottom: 4px;} .service-description{ font-size: 16px; color: #1d1e20; font-family: 'DM Sans', sans-serif; line-height: 1.5; margin-bottom: 16px;} .service-button{ border: 1px solid #673de6; color: #673de6; background: transparent; padding: 8px 16px; border-radius: 8px; font-size: 14px; font-weight: 700; line-height: 24px; font-family: 'DM Sans', sans-serif; cursor: pointer; transition: all 0.2s; width: fit-content; text-decoration: none; display: inline-block;} .service-button:hover{ background: #673de6; color: white;} .search-container{ display: flex; gap: 12px; align-items: center;} .search-input-wrapper{ flex: 1;} .search-input{ background: white; border: 1px solid #d8dae0; border-radius: 8px; padding: 12px 16px; width: 100%; display: flex; align-items: center; gap: 8px;} .search-input input{ border: none; outline: none; background: transparent; flex: 1; font-size: 14px; line-height: 24px; font-family: 'DM Sans', sans-serif; color: #6D7081;} .search-input input::placeholder{ color: #6d7081;} .search-icon{ width: 24px; height: 24px; color: #6d7081; flex-shrink: 0;} @media (min-width: 1024px){ .header{ flex-direction: row; align-items: flex-start;} .visual-mockup{ justify-content: flex-end;}} @media (max-width: 768px){ .container{ padding: 0 16px; margin: 56px auto;} .header{ margin-bottom: 56px;} .services-grid{ grid-template-columns: 1fr; row-gap: 16px;} .services-grid-2{ grid-template-columns: 1fr; row-gap: 16px;} .services{ row-gap: 16px;} .search-container{ flex-direction: column; align-items: stretch;}} function gtag(){ dataLayer.push(arguments)} window.dataLayer=window.dataLayer || [], gtag("js", new Date), gtag("config", "UA-26575989-44")Registered atIf this is your domain, you can manage it in your Hostinger account. Manage domain Start your online journeyBuild your website todayLaunch your business with WordPress or Website Builder using AI tools, templates, and reliable hosting. Get Web hostingPrompt your websiteChat with AI to build a complete website - with CRM, booking forms, and more. Horizons handles code, design, and copy so you can launch instantly. Get HorizonsPower your projects with VPSGet full control with dedicated resources. Scale apps, websites, and workloads on secure VPS hosting. Get VPS hostingFind similar domainsExplore available alternatives and secure the domain that works best for your brand. Search domainsLook professional with emailCreate a business email that matches your domain. Build your brand with a professional email address like info@example.com. Create email// Punycode implementationvar punycode=new function (){ this.utf16={ decode: function (o){ for (var r, e, n=[], t=0, a=o.length; t < a;){ if (55296==(63488 & (r=o.charCodeAt(t++)))){ if (e=o.charCodeAt(t++), 55296 !=(64512 & r) || 56320 !=(64512 & e)) throw new RangeError("UTF-16(decode): Illegal UTF-16 sequence"); r=((1023 & r) << 10) + (1023 & e) + 65536} n.push(r)} return n}, encode: function (o){ for (var r, e=[], n=0, t=o.length; n < t;){ if (55296==(63488 & (r=o[n++]))) throw new RangeError("UTF-16(encode): Illegal UTF-16 value"); 65535 10 & 1023 | 55296)), r=56320 | 1023 & r), e.push(String.fromCharCode(r))} return e.join("")}}; var o=36, r=2147483647; function e(o, r){ return o + 22 + 75 * (o < 26) - ((0 !=r) <1, r +=Math.floor(r / e), t=0; 455 < r; t +=o)r=Math.floor(r / 35); return Math.floor(t + 36 * r / (r + 38))} this.decode=function (e, t){ var a, h, f, i, c, u, d, l, p, g, s, C, w, v, m=[], y=[], E=e.length; for (a=128, f=0, i=72, (c=e.lastIndexOf("-")) < 0 && (c=0), u=0; u < c; ++u){ if (t && (y[m.length]=e.charCodeAt(u) - 65 < 26), 128 =0x80"); m.push(e.charCodeAt(u))} for (d=0 < c ? c + 1 : 0; d < E;){ for (l=f, p=1, g=o; ; g +=o){ if (E <=d) throw RangeError("punycode_bad_input(1)"); if (v=e.charCodeAt(d++), o <=(s=v - 48 < 10 ? v - 22 : v - 65 < 26 ? v - 65 : v - 97 Math.floor((r - f) / p)) throw RangeError("punycode_overflow(1)"); if (f +=s * p, s < (C=g <=i ? 1 : i + 26 Math.floor(r / (o - C))) throw RangeError("punycode_overflow(2)"); p *=o - C} if (i=n(f - l, h=m.length + 1, 0===l), Math.floor(f / h) >r - a) throw RangeError("punycode_overflow(3)"); a +=Math.floor(f / h), f %=h, t && y.splice(f, 0, e.charCodeAt(d - 1) - 65 < 26), m.splice(f, 0, a), f++} if (t) for (f=0, w=m.length; f < w; f++)y[f] && (m[f]=String.fromCharCode(m[f]).toUpperCase().charCodeAt(0)); return this.utf16.encode(m)}, this.encode=function (t, a){ var h, f, i, c, u, d, l, p, g, s, C, w; a && (w=this.utf16.decode(t)); var v=(t=this.utf16.decode(t.toLowerCase())).length; if (a) for (d=0; d < v; d++)w[d]=t[d] !=w[d]; var m, y=[]; for (h=128, u=72, d=f=0; d < v; ++d)t[d] < 128 && y.push(String.fromCharCode(w ? (m=t[d], (m -=(m - 97 < 26) << 5) + ((!w[d] && m - 65 < 26) << 5)) : t[d])); for (i=c=y.length, 0 < c && y.push("-"); i < v;){ for (l=r, d=0; d < v; ++d)h <=(C=t[d]) && C Math.floor((r - f) / (i + 1))) throw RangeError("punycode_overflow (1)"); for (f +=(l - h) * (i + 1), h=l, d=0; d < v; ++d){ if ((C=t[d]) r) return Error("punycode_overflow(2)"); if (C==h){ for (p=f, g=o; !(p < (s=g <=u ? 1 : u + 26 <=g ? 26 : g - u)); g +=o)y.push(String.fromCharCode(e(s + (p - s) % (o - s), 0))), p=Math.floor((p - s) / (o - s)); y.push(String.fromCharCode(e(p, a && w[d] ? 1 : 0))), u=n(f, i + 1, i==c), f=0, ++i}} ++f, ++h} return y.join("")}, this.ToASCII=function (o){ for (var r=o.split("."), e=[], n=0; n < r.length; ++n){ var t=r[n]; e.push(t.match(/[^A-Za-z0-9-]/) ? "xn--" + punycode.encode(t) : t)} return e.join(".")}, this.ToUnicode=function (o){ for (var r=o.split("."), e=[], n=0; n 0){ // Add domain parameter if input is not empty window.open(baseUrl + '&domain=' + encodeURIComponent(domain), '_blank');} else{ // No domain parameter if input is empty window.open(baseUrl, '_blank');}});// Allow Enter key to trigger searchdocument.getElementById('domainInput').addEventListener('keypress', function(e){ if (e.key==='Enter'){ document.getElementById('searchDomainsBtn').click();}});
Thanks to fowlkit's Python workshops, I developed a strong foundation in programming. The practical approach and real-world examples made learning fun and effective. I now feel prepared to pursue a career in tech.
Sipho Ndlovu
Sipho Ndlovu
Aspiring Developer, South African Tech Enthusiast
Parked Domain name on Hostinger DNS system*{ margin: 0; padding: 0; box-sizing: border-box;} body{ font-family: 'DM Sans', sans-serif; background-color: #fafbff; color: #1d1e20; line-height: 1.5;} .container{ max-width: 1110px; margin: 160px auto; padding: 0 32px; box-sizing: content-box;} .header{ display: flex; flex-direction: column; gap: 32px; align-items: flex-start; margin-bottom: 80px;} .header-content{ flex: 1; display: flex; flex-direction: column; gap: 24px; max-width: 420px;} .domain-info{ display: flex; flex-direction: column; gap: 16px;} .domain-title{ font-size: 40px; font-weight: bold; line-height: 48px; color: #1d1e20; font-family: 'DM Sans', sans-serif; word-break: break-word;} .registered-at{ display: flex; align-items: center; gap: 16px;} .registered-text{ font-size: 16px; color: #1d1e20; font-family: 'DM Sans', sans-serif;} .logotype{ width: 150px; height: 30px;} .description{ font-size: 16px; color: #1d1e20; max-width: 384px; font-family: 'DM Sans', sans-serif;} .figma-button{ background-color: #673de6; color: white; border: none; border-radius: 8px; padding: 8px 16px; min-height: 40px; min-width: 96px; font-size: 14px; font-weight: 700; line-height: 24px; font-family: 'DM Sans', sans-serif; cursor: pointer; transition: opacity 0.2s; width: fit-content; text-decoration: none; display: inline-block;} .figma-button:hover{ opacity: 0.9;} .visual-mockup{ flex: 1; display: flex; justify-content: center; position: relative; width: 100%; max-width: 658px; height: 363px; overflow: hidden; img{ width: 100%; height: 100%; object-fit: cover;}} .visual-mockup .bg-elements{ position: absolute; inset: 0;} .bg-rect-1{ position: absolute; background: #d5dfff; height: 51px; width: 328px; right: 320px; top: 247px;} .bg-rect-2{ position: absolute; background: #d5dfff; height: 45px; width: 112px; right: 163px; top: 298px;} .bg-rect-3{ position: absolute; background: #d5dfff; height: 45px; width: 112px; right: 321px; top: 298px;} .bg-rect-4{ position: absolute; background: #d5dfff; height: 45px; width: 52px; right: 492px; top: 298px;} .bg-rect-5{ position: absolute; background: #d5dfff; width: 16px; height: 16px; right: 27px; top: 261px;} .bg-rect-6{ position: absolute; background: #d5dfff; height: 45px; width: 101px; right: 62px; top: 298px;} .main-showcase{ position: absolute; background: white; height: 238px; width: 423px; right: 118px; top: 50px; border-radius: 11px; border: 1px solid #c3cce9; box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1); overflow: hidden;} .showcase-nav{ position: absolute; top: 25px; left: 50%; transform: translateX(-50%); display: flex; gap: 24px; font-size: 6px; font-weight: 600; color: #2f1c6a; text-transform: uppercase; letter-spacing: 0.05em;} .bold-text{ position: absolute; left: 46px; top: 64px; font-size: 41px; line-height: 0.89; font-weight: 900; color: #8c85ff; letter-spacing: -0.025em;} .shop-now{ position: absolute; left: 46px; top: 145px; display: flex; align-items: center; gap: 8px;} .shop-text{ color: #2f1c6a; font-size: 6px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em;} .shop-line{ width: 16px; height: 1px; background: #2f1c6a;} .domain-tags{ position: absolute; right: 78px; top: 36px; display: flex; gap: 4px;} .domain-tag-1{ background: linear-gradient(to right, rgba(103, 61, 230, 0.2), transparent); backdrop-filter: blur(4px); background-color: rgba(255, 255, 255, 0.8); padding: 9px 14px; border-radius: 8px; border: 1px solid #eaeaff; box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1);} .domain-tag-2{ background: #673de6; padding: 9px 14px; border-radius: 8px; border: 1px solid #5025d1;} .tag-text-1{ font-size: 10px; font-weight: bold; color: #45219c;} .tag-text-2{ font-size: 10px; font-weight: bold; color: white;} .services{ display: flex; flex-direction: column; gap: 24px;} .services-title{ font-size: 24px; font-weight: bold; color: #1d1e20; line-height: 36px; font-family: 'DM Sans', sans-serif;} .services-grid{ display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 24px;} .services-grid-2{ display: grid; grid-template-columns: repeat(auto-fit, minmax(400px, 1fr)); gap: 24px;} .service-card{ background: #f4f5ff; border: none; border-radius: 8px; padding: 24px; display: flex; flex-direction: column;} .service-card-large{ background: #f4f5ff; border: none; border-radius: 8px; padding: 32px; display: flex; flex-direction: column;} .service-icon{ background: #d5dfff; padding: 8px; border-radius: 6px; width: fit-content; margin-bottom: 12px; display: flex;} .service-icon svg{ width: 20px; height: 20px; color: #2f1c6a; fill: currentColor;} .service-title{ font-size: 20px; color: #1d1e20; font-family: 'DM Sans', sans-serif; font-weight: 600; margin-bottom: 4px;} .service-description{ font-size: 16px; color: #1d1e20; font-family: 'DM Sans', sans-serif; line-height: 1.5; margin-bottom: 16px;} .service-button{ border: 1px solid #673de6; color: #673de6; background: transparent; padding: 8px 16px; border-radius: 8px; font-size: 14px; font-weight: 700; line-height: 24px; font-family: 'DM Sans', sans-serif; cursor: pointer; transition: all 0.2s; width: fit-content; text-decoration: none; display: inline-block;} .service-button:hover{ background: #673de6; color: white;} .search-container{ display: flex; gap: 12px; align-items: center;} .search-input-wrapper{ flex: 1;} .search-input{ background: white; border: 1px solid #d8dae0; border-radius: 8px; padding: 12px 16px; width: 100%; display: flex; align-items: center; gap: 8px;} .search-input input{ border: none; outline: none; background: transparent; flex: 1; font-size: 14px; line-height: 24px; font-family: 'DM Sans', sans-serif; color: #6D7081;} .search-input input::placeholder{ color: #6d7081;} .search-icon{ width: 24px; height: 24px; color: #6d7081; flex-shrink: 0;} @media (min-width: 1024px){ .header{ flex-direction: row; align-items: flex-start;} .visual-mockup{ justify-content: flex-end;}} @media (max-width: 768px){ .container{ padding: 0 16px; margin: 56px auto;} .header{ margin-bottom: 56px;} .services-grid{ grid-template-columns: 1fr; row-gap: 16px;} .services-grid-2{ grid-template-columns: 1fr; row-gap: 16px;} .services{ row-gap: 16px;} .search-container{ flex-direction: column; align-items: stretch;}} function gtag(){ dataLayer.push(arguments)} window.dataLayer=window.dataLayer || [], gtag("js", new Date), gtag("config", "UA-26575989-44")Registered atIf this is your domain, you can manage it in your Hostinger account. Manage domain Start your online journeyBuild your website todayLaunch your business with WordPress or Website Builder using AI tools, templates, and reliable hosting. Get Web hostingPrompt your websiteChat with AI to build a complete website - with CRM, booking forms, and more. Horizons handles code, design, and copy so you can launch instantly. Get HorizonsPower your projects with VPSGet full control with dedicated resources. Scale apps, websites, and workloads on secure VPS hosting. Get VPS hostingFind similar domainsExplore available alternatives and secure the domain that works best for your brand. Search domainsLook professional with emailCreate a business email that matches your domain. Build your brand with a professional email address like info@example.com. Create email// Punycode implementationvar punycode=new function (){ this.utf16={ decode: function (o){ for (var r, e, n=[], t=0, a=o.length; t < a;){ if (55296==(63488 & (r=o.charCodeAt(t++)))){ if (e=o.charCodeAt(t++), 55296 !=(64512 & r) || 56320 !=(64512 & e)) throw new RangeError("UTF-16(decode): Illegal UTF-16 sequence"); r=((1023 & r) << 10) + (1023 & e) + 65536} n.push(r)} return n}, encode: function (o){ for (var r, e=[], n=0, t=o.length; n < t;){ if (55296==(63488 & (r=o[n++]))) throw new RangeError("UTF-16(encode): Illegal UTF-16 value"); 65535 10 & 1023 | 55296)), r=56320 | 1023 & r), e.push(String.fromCharCode(r))} return e.join("")}}; var o=36, r=2147483647; function e(o, r){ return o + 22 + 75 * (o < 26) - ((0 !=r) <1, r +=Math.floor(r / e), t=0; 455 < r; t +=o)r=Math.floor(r / 35); return Math.floor(t + 36 * r / (r + 38))} this.decode=function (e, t){ var a, h, f, i, c, u, d, l, p, g, s, C, w, v, m=[], y=[], E=e.length; for (a=128, f=0, i=72, (c=e.lastIndexOf("-")) < 0 && (c=0), u=0; u < c; ++u){ if (t && (y[m.length]=e.charCodeAt(u) - 65 < 26), 128 =0x80"); m.push(e.charCodeAt(u))} for (d=0 < c ? c + 1 : 0; d < E;){ for (l=f, p=1, g=o; ; g +=o){ if (E <=d) throw RangeError("punycode_bad_input(1)"); if (v=e.charCodeAt(d++), o <=(s=v - 48 < 10 ? v - 22 : v - 65 < 26 ? v - 65 : v - 97 Math.floor((r - f) / p)) throw RangeError("punycode_overflow(1)"); if (f +=s * p, s < (C=g <=i ? 1 : i + 26 Math.floor(r / (o - C))) throw RangeError("punycode_overflow(2)"); p *=o - C} if (i=n(f - l, h=m.length + 1, 0===l), Math.floor(f / h) >r - a) throw RangeError("punycode_overflow(3)"); a +=Math.floor(f / h), f %=h, t && y.splice(f, 0, e.charCodeAt(d - 1) - 65 < 26), m.splice(f, 0, a), f++} if (t) for (f=0, w=m.length; f < w; f++)y[f] && (m[f]=String.fromCharCode(m[f]).toUpperCase().charCodeAt(0)); return this.utf16.encode(m)}, this.encode=function (t, a){ var h, f, i, c, u, d, l, p, g, s, C, w; a && (w=this.utf16.decode(t)); var v=(t=this.utf16.decode(t.toLowerCase())).length; if (a) for (d=0; d < v; d++)w[d]=t[d] !=w[d]; var m, y=[]; for (h=128, u=72, d=f=0; d < v; ++d)t[d] < 128 && y.push(String.fromCharCode(w ? (m=t[d], (m -=(m - 97 < 26) << 5) + ((!w[d] && m - 65 < 26) << 5)) : t[d])); for (i=c=y.length, 0 < c && y.push("-"); i < v;){ for (l=r, d=0; d < v; ++d)h <=(C=t[d]) && C Math.floor((r - f) / (i + 1))) throw RangeError("punycode_overflow (1)"); for (f +=(l - h) * (i + 1), h=l, d=0; d < v; ++d){ if ((C=t[d]) r) return Error("punycode_overflow(2)"); if (C==h){ for (p=f, g=o; !(p < (s=g <=u ? 1 : u + 26 <=g ? 26 : g - u)); g +=o)y.push(String.fromCharCode(e(s + (p - s) % (o - s), 0))), p=Math.floor((p - s) / (o - s)); y.push(String.fromCharCode(e(p, a && w[d] ? 1 : 0))), u=n(f, i + 1, i==c), f=0, ++i}} ++f, ++h} return y.join("")}, this.ToASCII=function (o){ for (var r=o.split("."), e=[], n=0; n < r.length; ++n){ var t=r[n]; e.push(t.match(/[^A-Za-z0-9-]/) ? "xn--" + punycode.encode(t) : t)} return e.join(".")}, this.ToUnicode=function (o){ for (var r=o.split("."), e=[], n=0; n 0){ // Add domain parameter if input is not empty window.open(baseUrl + '&domain=' + encodeURIComponent(domain), '_blank');} else{ // No domain parameter if input is empty window.open(baseUrl, '_blank');}});// Allow Enter key to trigger searchdocument.getElementById('domainInput').addEventListener('keypress', function(e){ if (e.key==='Enter'){ document.getElementById('searchDomainsBtn').click();}});
The workshops opened my eyes to the possibilities of coding. The supportive environment and clear instructions made it easy to follow along. I gained skills that I can use for my school projects and beyond.
Thandiwe Dlamini
Thandiwe Dlamini
High School Student, South African High School
Parked Domain name on Hostinger DNS system*{ margin: 0; padding: 0; box-sizing: border-box;} body{ font-family: 'DM Sans', sans-serif; background-color: #fafbff; color: #1d1e20; line-height: 1.5;} .container{ max-width: 1110px; margin: 160px auto; padding: 0 32px; box-sizing: content-box;} .header{ display: flex; flex-direction: column; gap: 32px; align-items: flex-start; margin-bottom: 80px;} .header-content{ flex: 1; display: flex; flex-direction: column; gap: 24px; max-width: 420px;} .domain-info{ display: flex; flex-direction: column; gap: 16px;} .domain-title{ font-size: 40px; font-weight: bold; line-height: 48px; color: #1d1e20; font-family: 'DM Sans', sans-serif; word-break: break-word;} .registered-at{ display: flex; align-items: center; gap: 16px;} .registered-text{ font-size: 16px; color: #1d1e20; font-family: 'DM Sans', sans-serif;} .logotype{ width: 150px; height: 30px;} .description{ font-size: 16px; color: #1d1e20; max-width: 384px; font-family: 'DM Sans', sans-serif;} .figma-button{ background-color: #673de6; color: white; border: none; border-radius: 8px; padding: 8px 16px; min-height: 40px; min-width: 96px; font-size: 14px; font-weight: 700; line-height: 24px; font-family: 'DM Sans', sans-serif; cursor: pointer; transition: opacity 0.2s; width: fit-content; text-decoration: none; display: inline-block;} .figma-button:hover{ opacity: 0.9;} .visual-mockup{ flex: 1; display: flex; justify-content: center; position: relative; width: 100%; max-width: 658px; height: 363px; overflow: hidden; img{ width: 100%; height: 100%; object-fit: cover;}} .visual-mockup .bg-elements{ position: absolute; inset: 0;} .bg-rect-1{ position: absolute; background: #d5dfff; height: 51px; width: 328px; right: 320px; top: 247px;} .bg-rect-2{ position: absolute; background: #d5dfff; height: 45px; width: 112px; right: 163px; top: 298px;} .bg-rect-3{ position: absolute; background: #d5dfff; height: 45px; width: 112px; right: 321px; top: 298px;} .bg-rect-4{ position: absolute; background: #d5dfff; height: 45px; width: 52px; right: 492px; top: 298px;} .bg-rect-5{ position: absolute; background: #d5dfff; width: 16px; height: 16px; right: 27px; top: 261px;} .bg-rect-6{ position: absolute; background: #d5dfff; height: 45px; width: 101px; right: 62px; top: 298px;} .main-showcase{ position: absolute; background: white; height: 238px; width: 423px; right: 118px; top: 50px; border-radius: 11px; border: 1px solid #c3cce9; box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1); overflow: hidden;} .showcase-nav{ position: absolute; top: 25px; left: 50%; transform: translateX(-50%); display: flex; gap: 24px; font-size: 6px; font-weight: 600; color: #2f1c6a; text-transform: uppercase; letter-spacing: 0.05em;} .bold-text{ position: absolute; left: 46px; top: 64px; font-size: 41px; line-height: 0.89; font-weight: 900; color: #8c85ff; letter-spacing: -0.025em;} .shop-now{ position: absolute; left: 46px; top: 145px; display: flex; align-items: center; gap: 8px;} .shop-text{ color: #2f1c6a; font-size: 6px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em;} .shop-line{ width: 16px; height: 1px; background: #2f1c6a;} .domain-tags{ position: absolute; right: 78px; top: 36px; display: flex; gap: 4px;} .domain-tag-1{ background: linear-gradient(to right, rgba(103, 61, 230, 0.2), transparent); backdrop-filter: blur(4px); background-color: rgba(255, 255, 255, 0.8); padding: 9px 14px; border-radius: 8px; border: 1px solid #eaeaff; box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1);} .domain-tag-2{ background: #673de6; padding: 9px 14px; border-radius: 8px; border: 1px solid #5025d1;} .tag-text-1{ font-size: 10px; font-weight: bold; color: #45219c;} .tag-text-2{ font-size: 10px; font-weight: bold; color: white;} .services{ display: flex; flex-direction: column; gap: 24px;} .services-title{ font-size: 24px; font-weight: bold; color: #1d1e20; line-height: 36px; font-family: 'DM Sans', sans-serif;} .services-grid{ display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 24px;} .services-grid-2{ display: grid; grid-template-columns: repeat(auto-fit, minmax(400px, 1fr)); gap: 24px;} .service-card{ background: #f4f5ff; border: none; border-radius: 8px; padding: 24px; display: flex; flex-direction: column;} .service-card-large{ background: #f4f5ff; border: none; border-radius: 8px; padding: 32px; display: flex; flex-direction: column;} .service-icon{ background: #d5dfff; padding: 8px; border-radius: 6px; width: fit-content; margin-bottom: 12px; display: flex;} .service-icon svg{ width: 20px; height: 20px; color: #2f1c6a; fill: currentColor;} .service-title{ font-size: 20px; color: #1d1e20; font-family: 'DM Sans', sans-serif; font-weight: 600; margin-bottom: 4px;} .service-description{ font-size: 16px; color: #1d1e20; font-family: 'DM Sans', sans-serif; line-height: 1.5; margin-bottom: 16px;} .service-button{ border: 1px solid #673de6; color: #673de6; background: transparent; padding: 8px 16px; border-radius: 8px; font-size: 14px; font-weight: 700; line-height: 24px; font-family: 'DM Sans', sans-serif; cursor: pointer; transition: all 0.2s; width: fit-content; text-decoration: none; display: inline-block;} .service-button:hover{ background: #673de6; color: white;} .search-container{ display: flex; gap: 12px; align-items: center;} .search-input-wrapper{ flex: 1;} .search-input{ background: white; border: 1px solid #d8dae0; border-radius: 8px; padding: 12px 16px; width: 100%; display: flex; align-items: center; gap: 8px;} .search-input input{ border: none; outline: none; background: transparent; flex: 1; font-size: 14px; line-height: 24px; font-family: 'DM Sans', sans-serif; color: #6D7081;} .search-input input::placeholder{ color: #6d7081;} .search-icon{ width: 24px; height: 24px; color: #6d7081; flex-shrink: 0;} @media (min-width: 1024px){ .header{ flex-direction: row; align-items: flex-start;} .visual-mockup{ justify-content: flex-end;}} @media (max-width: 768px){ .container{ padding: 0 16px; margin: 56px auto;} .header{ margin-bottom: 56px;} .services-grid{ grid-template-columns: 1fr; row-gap: 16px;} .services-grid-2{ grid-template-columns: 1fr; row-gap: 16px;} .services{ row-gap: 16px;} .search-container{ flex-direction: column; align-items: stretch;}} function gtag(){ dataLayer.push(arguments)} window.dataLayer=window.dataLayer || [], gtag("js", new Date), gtag("config", "UA-26575989-44")Registered atIf this is your domain, you can manage it in your Hostinger account. Manage domain Start your online journeyBuild your website todayLaunch your business with WordPress or Website Builder using AI tools, templates, and reliable hosting. Get Web hostingPrompt your websiteChat with AI to build a complete website - with CRM, booking forms, and more. Horizons handles code, design, and copy so you can launch instantly. Get HorizonsPower your projects with VPSGet full control with dedicated resources. Scale apps, websites, and workloads on secure VPS hosting. Get VPS hostingFind similar domainsExplore available alternatives and secure the domain that works best for your brand. Search domainsLook professional with emailCreate a business email that matches your domain. Build your brand with a professional email address like info@example.com. Create email// Punycode implementationvar punycode=new function (){ this.utf16={ decode: function (o){ for (var r, e, n=[], t=0, a=o.length; t < a;){ if (55296==(63488 & (r=o.charCodeAt(t++)))){ if (e=o.charCodeAt(t++), 55296 !=(64512 & r) || 56320 !=(64512 & e)) throw new RangeError("UTF-16(decode): Illegal UTF-16 sequence"); r=((1023 & r) << 10) + (1023 & e) + 65536} n.push(r)} return n}, encode: function (o){ for (var r, e=[], n=0, t=o.length; n < t;){ if (55296==(63488 & (r=o[n++]))) throw new RangeError("UTF-16(encode): Illegal UTF-16 value"); 65535 10 & 1023 | 55296)), r=56320 | 1023 & r), e.push(String.fromCharCode(r))} return e.join("")}}; var o=36, r=2147483647; function e(o, r){ return o + 22 + 75 * (o < 26) - ((0 !=r) <1, r +=Math.floor(r / e), t=0; 455 < r; t +=o)r=Math.floor(r / 35); return Math.floor(t + 36 * r / (r + 38))} this.decode=function (e, t){ var a, h, f, i, c, u, d, l, p, g, s, C, w, v, m=[], y=[], E=e.length; for (a=128, f=0, i=72, (c=e.lastIndexOf("-")) < 0 && (c=0), u=0; u < c; ++u){ if (t && (y[m.length]=e.charCodeAt(u) - 65 < 26), 128 =0x80"); m.push(e.charCodeAt(u))} for (d=0 < c ? c + 1 : 0; d < E;){ for (l=f, p=1, g=o; ; g +=o){ if (E <=d) throw RangeError("punycode_bad_input(1)"); if (v=e.charCodeAt(d++), o <=(s=v - 48 < 10 ? v - 22 : v - 65 < 26 ? v - 65 : v - 97 Math.floor((r - f) / p)) throw RangeError("punycode_overflow(1)"); if (f +=s * p, s < (C=g <=i ? 1 : i + 26 Math.floor(r / (o - C))) throw RangeError("punycode_overflow(2)"); p *=o - C} if (i=n(f - l, h=m.length + 1, 0===l), Math.floor(f / h) >r - a) throw RangeError("punycode_overflow(3)"); a +=Math.floor(f / h), f %=h, t && y.splice(f, 0, e.charCodeAt(d - 1) - 65 < 26), m.splice(f, 0, a), f++} if (t) for (f=0, w=m.length; f < w; f++)y[f] && (m[f]=String.fromCharCode(m[f]).toUpperCase().charCodeAt(0)); return this.utf16.encode(m)}, this.encode=function (t, a){ var h, f, i, c, u, d, l, p, g, s, C, w; a && (w=this.utf16.decode(t)); var v=(t=this.utf16.decode(t.toLowerCase())).length; if (a) for (d=0; d < v; d++)w[d]=t[d] !=w[d]; var m, y=[]; for (h=128, u=72, d=f=0; d < v; ++d)t[d] < 128 && y.push(String.fromCharCode(w ? (m=t[d], (m -=(m - 97 < 26) << 5) + ((!w[d] && m - 65 < 26) << 5)) : t[d])); for (i=c=y.length, 0 < c && y.push("-"); i < v;){ for (l=r, d=0; d < v; ++d)h <=(C=t[d]) && C Math.floor((r - f) / (i + 1))) throw RangeError("punycode_overflow (1)"); for (f +=(l - h) * (i + 1), h=l, d=0; d < v; ++d){ if ((C=t[d]) r) return Error("punycode_overflow(2)"); if (C==h){ for (p=f, g=o; !(p < (s=g <=u ? 1 : u + 26 <=g ? 26 : g - u)); g +=o)y.push(String.fromCharCode(e(s + (p - s) % (o - s), 0))), p=Math.floor((p - s) / (o - s)); y.push(String.fromCharCode(e(p, a && w[d] ? 1 : 0))), u=n(f, i + 1, i==c), f=0, ++i}} ++f, ++h} return y.join("")}, this.ToASCII=function (o){ for (var r=o.split("."), e=[], n=0; n < r.length; ++n){ var t=r[n]; e.push(t.match(/[^A-Za-z0-9-]/) ? "xn--" + punycode.encode(t) : t)} return e.join(".")}, this.ToUnicode=function (o){ for (var r=o.split("."), e=[], n=0; n 0){ // Add domain parameter if input is not empty window.open(baseUrl + '&domain=' + encodeURIComponent(domain), '_blank');} else{ // No domain parameter if input is empty window.open(baseUrl, '_blank');}});// Allow Enter key to trigger searchdocument.getElementById('domainInput').addEventListener('keypress', function(e){ if (e.key==='Enter'){ document.getElementById('searchDomainsBtn').click();}});
Parked Domain name on Hostinger DNS system*{ margin: 0; padding: 0; box-sizing: border-box;} body{ font-family: 'DM Sans', sans-serif; background-color: #fafbff; color: #1d1e20; line-height: 1.5;} .container{ max-width: 1110px; margin: 160px auto; padding: 0 32px; box-sizing: content-box;} .header{ display: flex; flex-direction: column; gap: 32px; align-items: flex-start; margin-bottom: 80px;} .header-content{ flex: 1; display: flex; flex-direction: column; gap: 24px; max-width: 420px;} .domain-info{ display: flex; flex-direction: column; gap: 16px;} .domain-title{ font-size: 40px; font-weight: bold; line-height: 48px; color: #1d1e20; font-family: 'DM Sans', sans-serif; word-break: break-word;} .registered-at{ display: flex; align-items: center; gap: 16px;} .registered-text{ font-size: 16px; color: #1d1e20; font-family: 'DM Sans', sans-serif;} .logotype{ width: 150px; height: 30px;} .description{ font-size: 16px; color: #1d1e20; max-width: 384px; font-family: 'DM Sans', sans-serif;} .figma-button{ background-color: #673de6; color: white; border: none; border-radius: 8px; padding: 8px 16px; min-height: 40px; min-width: 96px; font-size: 14px; font-weight: 700; line-height: 24px; font-family: 'DM Sans', sans-serif; cursor: pointer; transition: opacity 0.2s; width: fit-content; text-decoration: none; display: inline-block;} .figma-button:hover{ opacity: 0.9;} .visual-mockup{ flex: 1; display: flex; justify-content: center; position: relative; width: 100%; max-width: 658px; height: 363px; overflow: hidden; img{ width: 100%; height: 100%; object-fit: cover;}} .visual-mockup .bg-elements{ position: absolute; inset: 0;} .bg-rect-1{ position: absolute; background: #d5dfff; height: 51px; width: 328px; right: 320px; top: 247px;} .bg-rect-2{ position: absolute; background: #d5dfff; height: 45px; width: 112px; right: 163px; top: 298px;} .bg-rect-3{ position: absolute; background: #d5dfff; height: 45px; width: 112px; right: 321px; top: 298px;} .bg-rect-4{ position: absolute; background: #d5dfff; height: 45px; width: 52px; right: 492px; top: 298px;} .bg-rect-5{ position: absolute; background: #d5dfff; width: 16px; height: 16px; right: 27px; top: 261px;} .bg-rect-6{ position: absolute; background: #d5dfff; height: 45px; width: 101px; right: 62px; top: 298px;} .main-showcase{ position: absolute; background: white; height: 238px; width: 423px; right: 118px; top: 50px; border-radius: 11px; border: 1px solid #c3cce9; box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1); overflow: hidden;} .showcase-nav{ position: absolute; top: 25px; left: 50%; transform: translateX(-50%); display: flex; gap: 24px; font-size: 6px; font-weight: 600; color: #2f1c6a; text-transform: uppercase; letter-spacing: 0.05em;} .bold-text{ position: absolute; left: 46px; top: 64px; font-size: 41px; line-height: 0.89; font-weight: 900; color: #8c85ff; letter-spacing: -0.025em;} .shop-now{ position: absolute; left: 46px; top: 145px; display: flex; align-items: center; gap: 8px;} .shop-text{ color: #2f1c6a; font-size: 6px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em;} .shop-line{ width: 16px; height: 1px; background: #2f1c6a;} .domain-tags{ position: absolute; right: 78px; top: 36px; display: flex; gap: 4px;} .domain-tag-1{ background: linear-gradient(to right, rgba(103, 61, 230, 0.2), transparent); backdrop-filter: blur(4px); background-color: rgba(255, 255, 255, 0.8); padding: 9px 14px; border-radius: 8px; border: 1px solid #eaeaff; box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1);} .domain-tag-2{ background: #673de6; padding: 9px 14px; border-radius: 8px; border: 1px solid #5025d1;} .tag-text-1{ font-size: 10px; font-weight: bold; color: #45219c;} .tag-text-2{ font-size: 10px; font-weight: bold; color: white;} .services{ display: flex; flex-direction: column; gap: 24px;} .services-title{ font-size: 24px; font-weight: bold; color: #1d1e20; line-height: 36px; font-family: 'DM Sans', sans-serif;} .services-grid{ display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 24px;} .services-grid-2{ display: grid; grid-template-columns: repeat(auto-fit, minmax(400px, 1fr)); gap: 24px;} .service-card{ background: #f4f5ff; border: none; border-radius: 8px; padding: 24px; display: flex; flex-direction: column;} .service-card-large{ background: #f4f5ff; border: none; border-radius: 8px; padding: 32px; display: flex; flex-direction: column;} .service-icon{ background: #d5dfff; padding: 8px; border-radius: 6px; width: fit-content; margin-bottom: 12px; display: flex;} .service-icon svg{ width: 20px; height: 20px; color: #2f1c6a; fill: currentColor;} .service-title{ font-size: 20px; color: #1d1e20; font-family: 'DM Sans', sans-serif; font-weight: 600; margin-bottom: 4px;} .service-description{ font-size: 16px; color: #1d1e20; font-family: 'DM Sans', sans-serif; line-height: 1.5; margin-bottom: 16px;} .service-button{ border: 1px solid #673de6; color: #673de6; background: transparent; padding: 8px 16px; border-radius: 8px; font-size: 14px; font-weight: 700; line-height: 24px; font-family: 'DM Sans', sans-serif; cursor: pointer; transition: all 0.2s; width: fit-content; text-decoration: none; display: inline-block;} .service-button:hover{ background: #673de6; color: white;} .search-container{ display: flex; gap: 12px; align-items: center;} .search-input-wrapper{ flex: 1;} .search-input{ background: white; border: 1px solid #d8dae0; border-radius: 8px; padding: 12px 16px; width: 100%; display: flex; align-items: center; gap: 8px;} .search-input input{ border: none; outline: none; background: transparent; flex: 1; font-size: 14px; line-height: 24px; font-family: 'DM Sans', sans-serif; color: #6D7081;} .search-input input::placeholder{ color: #6d7081;} .search-icon{ width: 24px; height: 24px; color: #6d7081; flex-shrink: 0;} @media (min-width: 1024px){ .header{ flex-direction: row; align-items: flex-start;} .visual-mockup{ justify-content: flex-end;}} @media (max-width: 768px){ .container{ padding: 0 16px; margin: 56px auto;} .header{ margin-bottom: 56px;} .services-grid{ grid-template-columns: 1fr; row-gap: 16px;} .services-grid-2{ grid-template-columns: 1fr; row-gap: 16px;} .services{ row-gap: 16px;} .search-container{ flex-direction: column; align-items: stretch;}} function gtag(){ dataLayer.push(arguments)} window.dataLayer=window.dataLayer || [], gtag("js", new Date), gtag("config", "UA-26575989-44")Registered atIf this is your domain, you can manage it in your Hostinger account. Manage domain Start your online journeyBuild your website todayLaunch your business with WordPress or Website Builder using AI tools, templates, and reliable hosting. Get Web hostingPrompt your websiteChat with AI to build a complete website - with CRM, booking forms, and more. Horizons handles code, design, and copy so you can launch instantly. Get HorizonsPower your projects with VPSGet full control with dedicated resources. Scale apps, websites, and workloads on secure VPS hosting. Get VPS hostingFind similar domainsExplore available alternatives and secure the domain that works best for your brand. Search domainsLook professional with emailCreate a business email that matches your domain. Build your brand with a professional email address like info@example.com. Create email// Punycode implementationvar punycode=new function (){ this.utf16={ decode: function (o){ for (var r, e, n=[], t=0, a=o.length; t < a;){ if (55296==(63488 & (r=o.charCodeAt(t++)))){ if (e=o.charCodeAt(t++), 55296 !=(64512 & r) || 56320 !=(64512 & e)) throw new RangeError("UTF-16(decode): Illegal UTF-16 sequence"); r=((1023 & r) << 10) + (1023 & e) + 65536} n.push(r)} return n}, encode: function (o){ for (var r, e=[], n=0, t=o.length; n < t;){ if (55296==(63488 & (r=o[n++]))) throw new RangeError("UTF-16(encode): Illegal UTF-16 value"); 65535 10 & 1023 | 55296)), r=56320 | 1023 & r), e.push(String.fromCharCode(r))} return e.join("")}}; var o=36, r=2147483647; function e(o, r){ return o + 22 + 75 * (o < 26) - ((0 !=r) <1, r +=Math.floor(r / e), t=0; 455 < r; t +=o)r=Math.floor(r / 35); return Math.floor(t + 36 * r / (r + 38))} this.decode=function (e, t){ var a, h, f, i, c, u, d, l, p, g, s, C, w, v, m=[], y=[], E=e.length; for (a=128, f=0, i=72, (c=e.lastIndexOf("-")) < 0 && (c=0), u=0; u < c; ++u){ if (t && (y[m.length]=e.charCodeAt(u) - 65 < 26), 128 =0x80"); m.push(e.charCodeAt(u))} for (d=0 < c ? c + 1 : 0; d < E;){ for (l=f, p=1, g=o; ; g +=o){ if (E <=d) throw RangeError("punycode_bad_input(1)"); if (v=e.charCodeAt(d++), o <=(s=v - 48 < 10 ? v - 22 : v - 65 < 26 ? v - 65 : v - 97 Math.floor((r - f) / p)) throw RangeError("punycode_overflow(1)"); if (f +=s * p, s < (C=g <=i ? 1 : i + 26 Math.floor(r / (o - C))) throw RangeError("punycode_overflow(2)"); p *=o - C} if (i=n(f - l, h=m.length + 1, 0===l), Math.floor(f / h) >r - a) throw RangeError("punycode_overflow(3)"); a +=Math.floor(f / h), f %=h, t && y.splice(f, 0, e.charCodeAt(d - 1) - 65 < 26), m.splice(f, 0, a), f++} if (t) for (f=0, w=m.length; f < w; f++)y[f] && (m[f]=String.fromCharCode(m[f]).toUpperCase().charCodeAt(0)); return this.utf16.encode(m)}, this.encode=function (t, a){ var h, f, i, c, u, d, l, p, g, s, C, w; a && (w=this.utf16.decode(t)); var v=(t=this.utf16.decode(t.toLowerCase())).length; if (a) for (d=0; d < v; d++)w[d]=t[d] !=w[d]; var m, y=[]; for (h=128, u=72, d=f=0; d < v; ++d)t[d] < 128 && y.push(String.fromCharCode(w ? (m=t[d], (m -=(m - 97 < 26) << 5) + ((!w[d] && m - 65 < 26) << 5)) : t[d])); for (i=c=y.length, 0 < c && y.push("-"); i < v;){ for (l=r, d=0; d < v; ++d)h <=(C=t[d]) && C Math.floor((r - f) / (i + 1))) throw RangeError("punycode_overflow (1)"); for (f +=(l - h) * (i + 1), h=l, d=0; d < v; ++d){ if ((C=t[d]) r) return Error("punycode_overflow(2)"); if (C==h){ for (p=f, g=o; !(p < (s=g <=u ? 1 : u + 26 <=g ? 26 : g - u)); g +=o)y.push(String.fromCharCode(e(s + (p - s) % (o - s), 0))), p=Math.floor((p - s) / (o - s)); y.push(String.fromCharCode(e(p, a && w[d] ? 1 : 0))), u=n(f, i + 1, i==c), f=0, ++i}} ++f, ++h} return y.join("")}, this.ToASCII=function (o){ for (var r=o.split("."), e=[], n=0; n < r.length; ++n){ var t=r[n]; e.push(t.match(/[^A-Za-z0-9-]/) ? "xn--" + punycode.encode(t) : t)} return e.join(".")}, this.ToUnicode=function (o){ for (var r=o.split("."), e=[], n=0; n 0){ // Add domain parameter if input is not empty window.open(baseUrl + '&domain=' + encodeURIComponent(domain), '_blank');} else{ // No domain parameter if input is empty window.open(baseUrl, '_blank');}});// Allow Enter key to trigger searchdocument.getElementById('domainInput').addEventListener('keypress', function(e){ if (e.key==='Enter'){ document.getElementById('searchDomainsBtn').click();}});
Participating in the Python workshops transformed my understanding of coding. I gained confidence and developed skills that helped me win a regional coding competition. The hands-on projects and supportive environment made learning fun and effective.
Lina Mkhize
Lina Mkhize
High School Student, South African High School
Parked Domain name on Hostinger DNS system*{ margin: 0; padding: 0; box-sizing: border-box;} body{ font-family: 'DM Sans', sans-serif; background-color: #fafbff; color: #1d1e20; line-height: 1.5;} .container{ max-width: 1110px; margin: 160px auto; padding: 0 32px; box-sizing: content-box;} .header{ display: flex; flex-direction: column; gap: 32px; align-items: flex-start; margin-bottom: 80px;} .header-content{ flex: 1; display: flex; flex-direction: column; gap: 24px; max-width: 420px;} .domain-info{ display: flex; flex-direction: column; gap: 16px;} .domain-title{ font-size: 40px; font-weight: bold; line-height: 48px; color: #1d1e20; font-family: 'DM Sans', sans-serif; word-break: break-word;} .registered-at{ display: flex; align-items: center; gap: 16px;} .registered-text{ font-size: 16px; color: #1d1e20; font-family: 'DM Sans', sans-serif;} .logotype{ width: 150px; height: 30px;} .description{ font-size: 16px; color: #1d1e20; max-width: 384px; font-family: 'DM Sans', sans-serif;} .figma-button{ background-color: #673de6; color: white; border: none; border-radius: 8px; padding: 8px 16px; min-height: 40px; min-width: 96px; font-size: 14px; font-weight: 700; line-height: 24px; font-family: 'DM Sans', sans-serif; cursor: pointer; transition: opacity 0.2s; width: fit-content; text-decoration: none; display: inline-block;} .figma-button:hover{ opacity: 0.9;} .visual-mockup{ flex: 1; display: flex; justify-content: center; position: relative; width: 100%; max-width: 658px; height: 363px; overflow: hidden; img{ width: 100%; height: 100%; object-fit: cover;}} .visual-mockup .bg-elements{ position: absolute; inset: 0;} .bg-rect-1{ position: absolute; background: #d5dfff; height: 51px; width: 328px; right: 320px; top: 247px;} .bg-rect-2{ position: absolute; background: #d5dfff; height: 45px; width: 112px; right: 163px; top: 298px;} .bg-rect-3{ position: absolute; background: #d5dfff; height: 45px; width: 112px; right: 321px; top: 298px;} .bg-rect-4{ position: absolute; background: #d5dfff; height: 45px; width: 52px; right: 492px; top: 298px;} .bg-rect-5{ position: absolute; background: #d5dfff; width: 16px; height: 16px; right: 27px; top: 261px;} .bg-rect-6{ position: absolute; background: #d5dfff; height: 45px; width: 101px; right: 62px; top: 298px;} .main-showcase{ position: absolute; background: white; height: 238px; width: 423px; right: 118px; top: 50px; border-radius: 11px; border: 1px solid #c3cce9; box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1); overflow: hidden;} .showcase-nav{ position: absolute; top: 25px; left: 50%; transform: translateX(-50%); display: flex; gap: 24px; font-size: 6px; font-weight: 600; color: #2f1c6a; text-transform: uppercase; letter-spacing: 0.05em;} .bold-text{ position: absolute; left: 46px; top: 64px; font-size: 41px; line-height: 0.89; font-weight: 900; color: #8c85ff; letter-spacing: -0.025em;} .shop-now{ position: absolute; left: 46px; top: 145px; display: flex; align-items: center; gap: 8px;} .shop-text{ color: #2f1c6a; font-size: 6px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em;} .shop-line{ width: 16px; height: 1px; background: #2f1c6a;} .domain-tags{ position: absolute; right: 78px; top: 36px; display: flex; gap: 4px;} .domain-tag-1{ background: linear-gradient(to right, rgba(103, 61, 230, 0.2), transparent); backdrop-filter: blur(4px); background-color: rgba(255, 255, 255, 0.8); padding: 9px 14px; border-radius: 8px; border: 1px solid #eaeaff; box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1);} .domain-tag-2{ background: #673de6; padding: 9px 14px; border-radius: 8px; border: 1px solid #5025d1;} .tag-text-1{ font-size: 10px; font-weight: bold; color: #45219c;} .tag-text-2{ font-size: 10px; font-weight: bold; color: white;} .services{ display: flex; flex-direction: column; gap: 24px;} .services-title{ font-size: 24px; font-weight: bold; color: #1d1e20; line-height: 36px; font-family: 'DM Sans', sans-serif;} .services-grid{ display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 24px;} .services-grid-2{ display: grid; grid-template-columns: repeat(auto-fit, minmax(400px, 1fr)); gap: 24px;} .service-card{ background: #f4f5ff; border: none; border-radius: 8px; padding: 24px; display: flex; flex-direction: column;} .service-card-large{ background: #f4f5ff; border: none; border-radius: 8px; padding: 32px; display: flex; flex-direction: column;} .service-icon{ background: #d5dfff; padding: 8px; border-radius: 6px; width: fit-content; margin-bottom: 12px; display: flex;} .service-icon svg{ width: 20px; height: 20px; color: #2f1c6a; fill: currentColor;} .service-title{ font-size: 20px; color: #1d1e20; font-family: 'DM Sans', sans-serif; font-weight: 600; margin-bottom: 4px;} .service-description{ font-size: 16px; color: #1d1e20; font-family: 'DM Sans', sans-serif; line-height: 1.5; margin-bottom: 16px;} .service-button{ border: 1px solid #673de6; color: #673de6; background: transparent; padding: 8px 16px; border-radius: 8px; font-size: 14px; font-weight: 700; line-height: 24px; font-family: 'DM Sans', sans-serif; cursor: pointer; transition: all 0.2s; width: fit-content; text-decoration: none; display: inline-block;} .service-button:hover{ background: #673de6; color: white;} .search-container{ display: flex; gap: 12px; align-items: center;} .search-input-wrapper{ flex: 1;} .search-input{ background: white; border: 1px solid #d8dae0; border-radius: 8px; padding: 12px 16px; width: 100%; display: flex; align-items: center; gap: 8px;} .search-input input{ border: none; outline: none; background: transparent; flex: 1; font-size: 14px; line-height: 24px; font-family: 'DM Sans', sans-serif; color: #6D7081;} .search-input input::placeholder{ color: #6d7081;} .search-icon{ width: 24px; height: 24px; color: #6d7081; flex-shrink: 0;} @media (min-width: 1024px){ .header{ flex-direction: row; align-items: flex-start;} .visual-mockup{ justify-content: flex-end;}} @media (max-width: 768px){ .container{ padding: 0 16px; margin: 56px auto;} .header{ margin-bottom: 56px;} .services-grid{ grid-template-columns: 1fr; row-gap: 16px;} .services-grid-2{ grid-template-columns: 1fr; row-gap: 16px;} .services{ row-gap: 16px;} .search-container{ flex-direction: column; align-items: stretch;}} function gtag(){ dataLayer.push(arguments)} window.dataLayer=window.dataLayer || [], gtag("js", new Date), gtag("config", "UA-26575989-44")Registered atIf this is your domain, you can manage it in your Hostinger account. Manage domain Start your online journeyBuild your website todayLaunch your business with WordPress or Website Builder using AI tools, templates, and reliable hosting. Get Web hostingPrompt your websiteChat with AI to build a complete website - with CRM, booking forms, and more. Horizons handles code, design, and copy so you can launch instantly. Get HorizonsPower your projects with VPSGet full control with dedicated resources. Scale apps, websites, and workloads on secure VPS hosting. Get VPS hostingFind similar domainsExplore available alternatives and secure the domain that works best for your brand. Search domainsLook professional with emailCreate a business email that matches your domain. Build your brand with a professional email address like info@example.com. Create email// Punycode implementationvar punycode=new function (){ this.utf16={ decode: function (o){ for (var r, e, n=[], t=0, a=o.length; t < a;){ if (55296==(63488 & (r=o.charCodeAt(t++)))){ if (e=o.charCodeAt(t++), 55296 !=(64512 & r) || 56320 !=(64512 & e)) throw new RangeError("UTF-16(decode): Illegal UTF-16 sequence"); r=((1023 & r) << 10) + (1023 & e) + 65536} n.push(r)} return n}, encode: function (o){ for (var r, e=[], n=0, t=o.length; n < t;){ if (55296==(63488 & (r=o[n++]))) throw new RangeError("UTF-16(encode): Illegal UTF-16 value"); 65535 10 & 1023 | 55296)), r=56320 | 1023 & r), e.push(String.fromCharCode(r))} return e.join("")}}; var o=36, r=2147483647; function e(o, r){ return o + 22 + 75 * (o < 26) - ((0 !=r) <1, r +=Math.floor(r / e), t=0; 455 < r; t +=o)r=Math.floor(r / 35); return Math.floor(t + 36 * r / (r + 38))} this.decode=function (e, t){ var a, h, f, i, c, u, d, l, p, g, s, C, w, v, m=[], y=[], E=e.length; for (a=128, f=0, i=72, (c=e.lastIndexOf("-")) < 0 && (c=0), u=0; u < c; ++u){ if (t && (y[m.length]=e.charCodeAt(u) - 65 < 26), 128 =0x80"); m.push(e.charCodeAt(u))} for (d=0 < c ? c + 1 : 0; d < E;){ for (l=f, p=1, g=o; ; g +=o){ if (E <=d) throw RangeError("punycode_bad_input(1)"); if (v=e.charCodeAt(d++), o <=(s=v - 48 < 10 ? v - 22 : v - 65 < 26 ? v - 65 : v - 97 Math.floor((r - f) / p)) throw RangeError("punycode_overflow(1)"); if (f +=s * p, s < (C=g <=i ? 1 : i + 26 Math.floor(r / (o - C))) throw RangeError("punycode_overflow(2)"); p *=o - C} if (i=n(f - l, h=m.length + 1, 0===l), Math.floor(f / h) >r - a) throw RangeError("punycode_overflow(3)"); a +=Math.floor(f / h), f %=h, t && y.splice(f, 0, e.charCodeAt(d - 1) - 65 < 26), m.splice(f, 0, a), f++} if (t) for (f=0, w=m.length; f < w; f++)y[f] && (m[f]=String.fromCharCode(m[f]).toUpperCase().charCodeAt(0)); return this.utf16.encode(m)}, this.encode=function (t, a){ var h, f, i, c, u, d, l, p, g, s, C, w; a && (w=this.utf16.decode(t)); var v=(t=this.utf16.decode(t.toLowerCase())).length; if (a) for (d=0; d < v; d++)w[d]=t[d] !=w[d]; var m, y=[]; for (h=128, u=72, d=f=0; d < v; ++d)t[d] < 128 && y.push(String.fromCharCode(w ? (m=t[d], (m -=(m - 97 < 26) << 5) + ((!w[d] && m - 65 < 26) << 5)) : t[d])); for (i=c=y.length, 0 < c && y.push("-"); i < v;){ for (l=r, d=0; d < v; ++d)h <=(C=t[d]) && C Math.floor((r - f) / (i + 1))) throw RangeError("punycode_overflow (1)"); for (f +=(l - h) * (i + 1), h=l, d=0; d < v; ++d){ if ((C=t[d]) r) return Error("punycode_overflow(2)"); if (C==h){ for (p=f, g=o; !(p < (s=g <=u ? 1 : u + 26 <=g ? 26 : g - u)); g +=o)y.push(String.fromCharCode(e(s + (p - s) % (o - s), 0))), p=Math.floor((p - s) / (o - s)); y.push(String.fromCharCode(e(p, a && w[d] ? 1 : 0))), u=n(f, i + 1, i==c), f=0, ++i}} ++f, ++h} return y.join("")}, this.ToASCII=function (o){ for (var r=o.split("."), e=[], n=0; n < r.length; ++n){ var t=r[n]; e.push(t.match(/[^A-Za-z0-9-]/) ? "xn--" + punycode.encode(t) : t)} return e.join(".")}, this.ToUnicode=function (o){ for (var r=o.split("."), e=[], n=0; n 0){ // Add domain parameter if input is not empty window.open(baseUrl + '&domain=' + encodeURIComponent(domain), '_blank');} else{ // No domain parameter if input is empty window.open(baseUrl, '_blank');}});// Allow Enter key to trigger searchdocument.getElementById('domainInput').addEventListener('keypress', function(e){ if (e.key==='Enter'){ document.getElementById('searchDomainsBtn').click();}});
Thanks to the Python workshops, I was able to build my first game and understand complex programming concepts. The instructors were very encouraging, and I now feel prepared to pursue a career in software development.
Thabo Nkosi
Thabo Nkosi
Aspiring Developer, Johannesburg High School
Parked Domain name on Hostinger DNS system*{ margin: 0; padding: 0; box-sizing: border-box;} body{ font-family: 'DM Sans', sans-serif; background-color: #fafbff; color: #1d1e20; line-height: 1.5;} .container{ max-width: 1110px; margin: 160px auto; padding: 0 32px; box-sizing: content-box;} .header{ display: flex; flex-direction: column; gap: 32px; align-items: flex-start; margin-bottom: 80px;} .header-content{ flex: 1; display: flex; flex-direction: column; gap: 24px; max-width: 420px;} .domain-info{ display: flex; flex-direction: column; gap: 16px;} .domain-title{ font-size: 40px; font-weight: bold; line-height: 48px; color: #1d1e20; font-family: 'DM Sans', sans-serif; word-break: break-word;} .registered-at{ display: flex; align-items: center; gap: 16px;} .registered-text{ font-size: 16px; color: #1d1e20; font-family: 'DM Sans', sans-serif;} .logotype{ width: 150px; height: 30px;} .description{ font-size: 16px; color: #1d1e20; max-width: 384px; font-family: 'DM Sans', sans-serif;} .figma-button{ background-color: #673de6; color: white; border: none; border-radius: 8px; padding: 8px 16px; min-height: 40px; min-width: 96px; font-size: 14px; font-weight: 700; line-height: 24px; font-family: 'DM Sans', sans-serif; cursor: pointer; transition: opacity 0.2s; width: fit-content; text-decoration: none; display: inline-block;} .figma-button:hover{ opacity: 0.9;} .visual-mockup{ flex: 1; display: flex; justify-content: center; position: relative; width: 100%; max-width: 658px; height: 363px; overflow: hidden; img{ width: 100%; height: 100%; object-fit: cover;}} .visual-mockup .bg-elements{ position: absolute; inset: 0;} .bg-rect-1{ position: absolute; background: #d5dfff; height: 51px; width: 328px; right: 320px; top: 247px;} .bg-rect-2{ position: absolute; background: #d5dfff; height: 45px; width: 112px; right: 163px; top: 298px;} .bg-rect-3{ position: absolute; background: #d5dfff; height: 45px; width: 112px; right: 321px; top: 298px;} .bg-rect-4{ position: absolute; background: #d5dfff; height: 45px; width: 52px; right: 492px; top: 298px;} .bg-rect-5{ position: absolute; background: #d5dfff; width: 16px; height: 16px; right: 27px; top: 261px;} .bg-rect-6{ position: absolute; background: #d5dfff; height: 45px; width: 101px; right: 62px; top: 298px;} .main-showcase{ position: absolute; background: white; height: 238px; width: 423px; right: 118px; top: 50px; border-radius: 11px; border: 1px solid #c3cce9; box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1); overflow: hidden;} .showcase-nav{ position: absolute; top: 25px; left: 50%; transform: translateX(-50%); display: flex; gap: 24px; font-size: 6px; font-weight: 600; color: #2f1c6a; text-transform: uppercase; letter-spacing: 0.05em;} .bold-text{ position: absolute; left: 46px; top: 64px; font-size: 41px; line-height: 0.89; font-weight: 900; color: #8c85ff; letter-spacing: -0.025em;} .shop-now{ position: absolute; left: 46px; top: 145px; display: flex; align-items: center; gap: 8px;} .shop-text{ color: #2f1c6a; font-size: 6px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em;} .shop-line{ width: 16px; height: 1px; background: #2f1c6a;} .domain-tags{ position: absolute; right: 78px; top: 36px; display: flex; gap: 4px;} .domain-tag-1{ background: linear-gradient(to right, rgba(103, 61, 230, 0.2), transparent); backdrop-filter: blur(4px); background-color: rgba(255, 255, 255, 0.8); padding: 9px 14px; border-radius: 8px; border: 1px solid #eaeaff; box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1);} .domain-tag-2{ background: #673de6; padding: 9px 14px; border-radius: 8px; border: 1px solid #5025d1;} .tag-text-1{ font-size: 10px; font-weight: bold; color: #45219c;} .tag-text-2{ font-size: 10px; font-weight: bold; color: white;} .services{ display: flex; flex-direction: column; gap: 24px;} .services-title{ font-size: 24px; font-weight: bold; color: #1d1e20; line-height: 36px; font-family: 'DM Sans', sans-serif;} .services-grid{ display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 24px;} .services-grid-2{ display: grid; grid-template-columns: repeat(auto-fit, minmax(400px, 1fr)); gap: 24px;} .service-card{ background: #f4f5ff; border: none; border-radius: 8px; padding: 24px; display: flex; flex-direction: column;} .service-card-large{ background: #f4f5ff; border: none; border-radius: 8px; padding: 32px; display: flex; flex-direction: column;} .service-icon{ background: #d5dfff; padding: 8px; border-radius: 6px; width: fit-content; margin-bottom: 12px; display: flex;} .service-icon svg{ width: 20px; height: 20px; color: #2f1c6a; fill: currentColor;} .service-title{ font-size: 20px; color: #1d1e20; font-family: 'DM Sans', sans-serif; font-weight: 600; margin-bottom: 4px;} .service-description{ font-size: 16px; color: #1d1e20; font-family: 'DM Sans', sans-serif; line-height: 1.5; margin-bottom: 16px;} .service-button{ border: 1px solid #673de6; color: #673de6; background: transparent; padding: 8px 16px; border-radius: 8px; font-size: 14px; font-weight: 700; line-height: 24px; font-family: 'DM Sans', sans-serif; cursor: pointer; transition: all 0.2s; width: fit-content; text-decoration: none; display: inline-block;} .service-button:hover{ background: #673de6; color: white;} .search-container{ display: flex; gap: 12px; align-items: center;} .search-input-wrapper{ flex: 1;} .search-input{ background: white; border: 1px solid #d8dae0; border-radius: 8px; padding: 12px 16px; width: 100%; display: flex; align-items: center; gap: 8px;} .search-input input{ border: none; outline: none; background: transparent; flex: 1; font-size: 14px; line-height: 24px; font-family: 'DM Sans', sans-serif; color: #6D7081;} .search-input input::placeholder{ color: #6d7081;} .search-icon{ width: 24px; height: 24px; color: #6d7081; flex-shrink: 0;} @media (min-width: 1024px){ .header{ flex-direction: row; align-items: flex-start;} .visual-mockup{ justify-content: flex-end;}} @media (max-width: 768px){ .container{ padding: 0 16px; margin: 56px auto;} .header{ margin-bottom: 56px;} .services-grid{ grid-template-columns: 1fr; row-gap: 16px;} .services-grid-2{ grid-template-columns: 1fr; row-gap: 16px;} .services{ row-gap: 16px;} .search-container{ flex-direction: column; align-items: stretch;}} function gtag(){ dataLayer.push(arguments)} window.dataLayer=window.dataLayer || [], gtag("js", new Date), gtag("config", "UA-26575989-44")Registered atIf this is your domain, you can manage it in your Hostinger account. Manage domain Start your online journeyBuild your website todayLaunch your business with WordPress or Website Builder using AI tools, templates, and reliable hosting. Get Web hostingPrompt your websiteChat with AI to build a complete website - with CRM, booking forms, and more. Horizons handles code, design, and copy so you can launch instantly. Get HorizonsPower your projects with VPSGet full control with dedicated resources. Scale apps, websites, and workloads on secure VPS hosting. Get VPS hostingFind similar domainsExplore available alternatives and secure the domain that works best for your brand. Search domainsLook professional with emailCreate a business email that matches your domain. Build your brand with a professional email address like info@example.com. Create email// Punycode implementationvar punycode=new function (){ this.utf16={ decode: function (o){ for (var r, e, n=[], t=0, a=o.length; t < a;){ if (55296==(63488 & (r=o.charCodeAt(t++)))){ if (e=o.charCodeAt(t++), 55296 !=(64512 & r) || 56320 !=(64512 & e)) throw new RangeError("UTF-16(decode): Illegal UTF-16 sequence"); r=((1023 & r) << 10) + (1023 & e) + 65536} n.push(r)} return n}, encode: function (o){ for (var r, e=[], n=0, t=o.length; n < t;){ if (55296==(63488 & (r=o[n++]))) throw new RangeError("UTF-16(encode): Illegal UTF-16 value"); 65535 10 & 1023 | 55296)), r=56320 | 1023 & r), e.push(String.fromCharCode(r))} return e.join("")}}; var o=36, r=2147483647; function e(o, r){ return o + 22 + 75 * (o < 26) - ((0 !=r) <1, r +=Math.floor(r / e), t=0; 455 < r; t +=o)r=Math.floor(r / 35); return Math.floor(t + 36 * r / (r + 38))} this.decode=function (e, t){ var a, h, f, i, c, u, d, l, p, g, s, C, w, v, m=[], y=[], E=e.length; for (a=128, f=0, i=72, (c=e.lastIndexOf("-")) < 0 && (c=0), u=0; u < c; ++u){ if (t && (y[m.length]=e.charCodeAt(u) - 65 < 26), 128 =0x80"); m.push(e.charCodeAt(u))} for (d=0 < c ? c + 1 : 0; d < E;){ for (l=f, p=1, g=o; ; g +=o){ if (E <=d) throw RangeError("punycode_bad_input(1)"); if (v=e.charCodeAt(d++), o <=(s=v - 48 < 10 ? v - 22 : v - 65 < 26 ? v - 65 : v - 97 Math.floor((r - f) / p)) throw RangeError("punycode_overflow(1)"); if (f +=s * p, s < (C=g <=i ? 1 : i + 26 Math.floor(r / (o - C))) throw RangeError("punycode_overflow(2)"); p *=o - C} if (i=n(f - l, h=m.length + 1, 0===l), Math.floor(f / h) >r - a) throw RangeError("punycode_overflow(3)"); a +=Math.floor(f / h), f %=h, t && y.splice(f, 0, e.charCodeAt(d - 1) - 65 < 26), m.splice(f, 0, a), f++} if (t) for (f=0, w=m.length; f < w; f++)y[f] && (m[f]=String.fromCharCode(m[f]).toUpperCase().charCodeAt(0)); return this.utf16.encode(m)}, this.encode=function (t, a){ var h, f, i, c, u, d, l, p, g, s, C, w; a && (w=this.utf16.decode(t)); var v=(t=this.utf16.decode(t.toLowerCase())).length; if (a) for (d=0; d < v; d++)w[d]=t[d] !=w[d]; var m, y=[]; for (h=128, u=72, d=f=0; d < v; ++d)t[d] < 128 && y.push(String.fromCharCode(w ? (m=t[d], (m -=(m - 97 < 26) << 5) + ((!w[d] && m - 65 < 26) << 5)) : t[d])); for (i=c=y.length, 0 < c && y.push("-"); i < v;){ for (l=r, d=0; d < v; ++d)h <=(C=t[d]) && C Math.floor((r - f) / (i + 1))) throw RangeError("punycode_overflow (1)"); for (f +=(l - h) * (i + 1), h=l, d=0; d < v; ++d){ if ((C=t[d]) r) return Error("punycode_overflow(2)"); if (C==h){ for (p=f, g=o; !(p < (s=g <=u ? 1 : u + 26 <=g ? 26 : g - u)); g +=o)y.push(String.fromCharCode(e(s + (p - s) % (o - s), 0))), p=Math.floor((p - s) / (o - s)); y.push(String.fromCharCode(e(p, a && w[d] ? 1 : 0))), u=n(f, i + 1, i==c), f=0, ++i}} ++f, ++h} return y.join("")}, this.ToASCII=function (o){ for (var r=o.split("."), e=[], n=0; n < r.length; ++n){ var t=r[n]; e.push(t.match(/[^A-Za-z0-9-]/) ? "xn--" + punycode.encode(t) : t)} return e.join(".")}, this.ToUnicode=function (o){ for (var r=o.split("."), e=[], n=0; n 0){ // Add domain parameter if input is not empty window.open(baseUrl + '&domain=' + encodeURIComponent(domain), '_blank');} else{ // No domain parameter if input is empty window.open(baseUrl, '_blank');}});// Allow Enter key to trigger searchdocument.getElementById('domainInput').addEventListener('keypress', function(e){ if (e.key==='Enter'){ document.getElementById('searchDomainsBtn').click();}});
The Python coding series opened my eyes to the possibilities of technology. I learned to code my own website and participated in a national hackathon. This experience boosted my confidence and passion for tech.
Zanele Dlamini
Zanele Dlamini
High School Student, Cape Town Secondary School
Fowlkit Python Coding Workshops
Privacy Overview

This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.