loading document...

Welcome!!

Hey welcome to the site! Please feel free to look around and test stuff, drop me a message and have a great day :)

Latest Projects

ok so i'm gonna be throwing up an RSS stream of some of the latest things that i'm working on so that you can see, learn and use what i've worked out in your environment, hopefully to make things cooler for you and your clients!

Most places on the internet that i visit

  1. Tutorialzine - this page gives some really great tuts on how to build sites, plus the writer is pretty entertaining!
  2. CodePlex - usually there's a nice tool or utility that i need for some advanced programming/networking system. It is open source, and so you don't need to pay (SCORE!).
  3. php.net - i must admit, i spend 90% of my dev time here, looking up solutions or syntaxes. The new site is pretty awesome too.
  4. StackOverflow - i swear this has to be my number 1 visited site, and i've based more code on the solutions offered here than any other source combined. Seriously helpful site.
  5. The New Boston AKA Bucky Roberts - this guy has soooo many tutorials on everything any aanything, from iPhone development to C++ to high school chemistry to vlogging about burgers to pizza hut to all sorts! BUCK ROBERTS IS THE MAN!
  6. GrooveShark - because everyone needs good music (specifically dubstep/kyle worde/underoath)
  7. TENET Mirror Service - these guys stock about 100 TB of linux repositories and software, and i'm proud to say i pillage from them. They rock.
  8. The Green Bean Coffee Roastery - the BEST coffee shop in Durban (my city), stocking some sick beans and awesome coffees. Plus the music is pretty dope too.
  9. w3schools - really great place to go if you want to learn a programming language from scratch & step-by-step with working examples. They may be a little green but green is good.
  10. 9gag - because we all need some meme humour here and there. Just DON'T go into the NSFW (Not Safe For Work) section - that part is just wrong.
  11. VBExplorer - excellent resource for the basics of VB (second to MSDN).
  12. Netbeans - the BEST development IDE (along with Eclipse) which is free and modular. It supports about 12 languages and team collaborative programming.
  13. tiny.cc - great tool for shortening URLs for if you want to send them on whatsapp or sms (i mean, who wants to type out http://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&sqi=2&ved=0CB0QFjAA&url=http%3A%2F%2Fwww.vbexplorer.com%2F&ei=wYsJVJ6VMuKM7Qaj2IHACQ&usg=AFQjCNFRdeQve2QvEcnBZnifyKys30-jaQ&sig2=2zlWHKYjZI8-3DvBUYrgCA&bvm=bv.74649129,d.ZGU anyway?)
  14. omegle - cos it's really fun seeing people's reaction to my ugly mug!
  15. CARM - these guys provide some really great insight into how the Bible is true and how relationship with God is possible from a scientific, rational and logical perspective.
  16. Nitite.com - great place to make some awesome automatic installers for software, as well as buy a commercial pack to use in the office/enterprise. Really good piece of software.
  17. instagram - cos i love taking pictures and uploading funny stuff :D
  18. Hiren's BootCD - this is an amazing free boot DVD that allows you to repair basically any software/hardware issue on any pc. I use it a lot.
  19. OpenWRT - because stock ROMs on xDSL routers are not cool. You should build your own from source. #nerded
  20. css3generator - because writing css from scratch is difficult and i'm very lazy :P also, it is pretty effective if you are writing 6-12 lines of CSS in a hurry.

i'll post more later. See you guys there!

About me


Me in 2013

Hello! My name is benskev, i'm a 20something nerd who likes to develop stuff that helps people. I have been a professing geek since 1999 when i realised that DNS is sexy (Thanks, dyn.com!) and that geek are cool (thanks, Nerd Machine!). Since the Y2k, i have spent most of my waking hours in front of a PC, learning all sorts of things: at first it was basic computer control (repairs/breaking/repairing/BIOS hacks, TCP/IP hacks, and eventually networking) and then moving into the amazing world of Linux (yes, go penguins! Thanks to Eosza for introducing me).

After that i started to do game composition development, which is a fancy term for learning how to deconstruct games and get them to work on linux/windows when they aren't supposed to. Since then, i've become a distrib maintainer for Counter Strike Source on WineHQ and have developed about 20 preinstalled game packs to run games in Linux that would normally only run in windows.

My real passion for the deeper nerd stuff started in about 2003 when there was this TV show called "Reboot" which was on at the time. It made me think that i could develop anything i wanted if i only knew a programming language - and so i taught myself Visual Basic scripting language. That was about 9 or 10 years ago. Since then I've taken computers as one of my Matriculation subjects, learnt/taught myself about 10 languages and programmed soo many things. When i was in grade 8 i was super depressed, and i used to write vbscripts using the MS Agents characters (you know, Clippy, the Wizard, Fat Woman, etc from MS Word 2000?) and i taught them to (basically) compliment me and congratulate me whenever i did something. So if i wrote a program and it compiled correctly, they would say "Well done ben" or "Good job buddy", as i didnt really have many friends at the time.

I don't really like focusing on the past, but there is one event that is really special to me: The day that i gave my life to Jesus Christ as Lord and Saviour. I believe wholeheartedly in Him, which is hard for most geeks to accept, but I can usually explain why i believe in Him to them more accurately. (if you're interested in hearing the story, drop me a mail and i'll chat about it with you). The really really short version is this: Jesus loves you. He doesn't love your skills, although he admires them, or your speech, although he thinks it's cool, and regardless of how you feel about him, he loves you, and wants to know you personally, and be your friend. If that's offensive to you then i'm sorry for offending you but that's what i believe, and i want you to know that seeing as i'm blogging away here.

So mostly what i'm gonna try and do is post about geek stuff: technological successes/stresses i'm having, posting ideas for cool Open source software project, journaling about how things are going and basically trying to help you as a computer geek do things better. Eventually i might even get up the courage to talk about vlogging - although i think my hosting package would crash and burn if that happened. My big goal in life is to help people achieve their best, and to help out where i can, and this is my area of greatest skill - so why don't i share what i know?

So i hope you find some of the stuff on here helpful, i'm not gonna post too much christian stuff on here but if i do and you find it offensive then read it with an open mind. Chat to me about it, i enjoy seeking truth with people, and if i'm wrong i'm happy to receive correction. I don't like being a pain in the butt when it comes to being corrected. Have fun everyone! God bless you, and i hope this helps you grow as a geek :)


Deprecated: mysql_escape_string(): This function is deprecated; use mysql_real_escape_string() instead. in /home/xiatnovl/public_html/includes/Article.php on line 105

Why cPanel is amazing

30 October

Morning all!



So the other day my mate and I started reselling hosting packages from a promonent promonant prominent South African ISP, and it's been a battle all the way. The original company that we went with were so annoying that my partner basically told them to go stuff themselves, because they has promised us the following: Dynamic ("on-the-fly") DNS registration systems, along with domain name registration functionality, a dedicated VPS/cloud on a static IP, cPanel capabilities and world class customer service. They gave us a sllllllllllllooooooooooooooooooooooooooooow (like Pentium 2 non-HT slow) virtual server running on some crappy architecture, with an archaic version of cPanel (the latest version as of writing this is v11.46.0 STABLE, we were using v10.1 or v9.8 or thereabouts, in August 2014).



If you could ping the server you were lucky.



So at the end of August this year we moved to our current hosting providers, who promised us nothing but have given us the world (literally, we've got everything that they advertised and more. They actually called us to apologise for unscheduled downtime), as well as the latest cPanel/WHM virtual machine running on CentOS 6.5/6.6 on vSphere server clusters with a SAN config that rivals a couple of really hardcore SAN development corps. Also, a 40 mbit line in South Africa (which is pretty standard in the world, but in South Africa, it's like a private 100Gbit line).



So we trudge along, and setup everything and get all our legal ducks in a row and start collecting some clients, and things finally start to work: We started using WHMCS (which is complex but amazing) to handle our clients, and we setup billing and a few sites, as well as outsourced web design and some other cool stuff. It's actually taking off now, 2 months later, which is good, and for a first month's turnover we're looking at about 12 to 16 clients who are happy with our service.



The best part is that i'm finally doing what I love: developing web technologies and hosting an ISP. I can remember in grade 5 wanting to have my own ISP, and who knew it would come now!



The whole backbone to the system is WHM cPanel. It is truely remarkable, i mean the other day i had to setup 80 mailboxes, using a specific formula for generating usernames, and WHM did it for me in a few seconds without much work. It did all my network traffic and bandwidth config, apache2 config, exim, etc config in a matter of seconds, which normally takes me about 3 days of sitting down and manually typing up everything that i want to configure or using a Zentyal frontend to manage the entire show.



The one thing i must really say that is very flexible and powerful is WHM's API. Normally, it would take about 80 to 100 lines of php, bash, python and compiler ASM to do what the cPanel XML-API does in about 10 lines.



I'm pretty satisfied with this system. I think one of these days when i have some free time i'm going to review a couple of other webconsole hosting solutions that compete with cPanel, and give you guys a technical run down of it. Just stuff like DirectAdmin, ISPConfig, openISP, etc.



Anyway, it's just gone 4am here, so i had better run along and go find Mr Sandman to go to sleep.



NERD ON.


HTML5 doc preloaders and google hell

21 October

So today is the first day in a while that i've had both time and motivation to blog about ANYTHING! What a ridiculous day, first i have to get up at 6am, so my body decides that i'm not going to sleep. Then i get going to a job in the morning, which lasts approximately 8 hours, but i only get about 3 hours of work done, and didn't even get half the work i wanted to do done, and then i get home and find that my website needs maintenance.



Wonderful day.



 



So I am googling around, looking for something cool to put into this site when a small memory leaps into the foreground of my mind and begs for attention: "what about a loading page!", to which i respond "What the heck do i have to load a loading page for? Only an scriptkiddy would load that into his site."



No sooner had i said those words than i started looking up Document Preloaders.



Now, don't get me wrong, i love CSS3/HTML5 animations and i'm all game for it, but a CSS document preloader? That's something i'm never going to get used to. Basically the idea behind it is to load a div/element before the document loads, and then erase the element/div once the document has been completely loaded.



This is great in theory but it is a killer in practice.



So the code goes something like this:



<!DOCTYPE html>


<style> 

.container,.container-fluid {

background: line-gradient(black,grey);

}



div#load_screen{

background: linear-gradient(black, gray);

opacity: 1;

position: fixed;

z-index:100000000000;

top: 0px;

width: 100%;

height: 1600px;

}



div#load_screen > div#loading {

color:#FFF;

width:120px;

height:24px;

margin: 300px auto;

}
.one {

opacity: 0;
-webkit-animation: dot 1.3s infinite;

-webkit-animation-delay: 0.0s;

animation: dot 1.3s infinite;

animation-delay: 0.0s;

}



.two {

opacity: 0;

-webkit-animation: dot 1.3s infinite;

-webkit-animation-delay: 0.2s;

animation: dot 1.3s infinite;

animation-delay: 0.2s;

}



.three {

opacity: 0;

-webkit-animation: dot 1.3s infinite;

-webkit-animation-delay: 0.3s;

animation: dot 1.3s infinite;

animation-delay: 0.3s;

}



@-webkit-keyframes dot {

0% { opacity: 0; }

50% { opacity: 0; }

100% { opacity: 1; }

}



@keyframes dot {

0% { opacity: 0; }

50% { opacity: 0; }

100% { opacity: 1; }

}
</style>



<script> 

window.addEventListener("load", function(){

var load_screen = document.getElementById("load_screen");

document.body.removeChild(load_screen);

});

</script>

<body>
<div id="load_screen">
<div id="loading">loading document
<span class="one">.</span>
<span class="two">.</span>
<span class="three">.</span>
</div>
</div>
</body>







So this little piece of code does 3 things essentially:



1) Creates the CSS animation for the loading-style ellipsis;



Let's talk about this for a moment. There are essentially 3 spans that are created, each with a specfic class. Now the content within the span doesn't change, but the visibility (via opacity) changes. Thus the illusion of a moving ellipsis is created! Here's the code:



div#load_screen{ /* the CSS for the initial loading screen, which will pop up and show you the
loading display */

background: linear-gradient(black, gray); /* nice background */

opacity: 1; /* we don't want to see through it, giving away the 'magic trick' */

position: fixed; /* locak it so that regardless of where we scroll to, it wont move */

z-index:100000000000; /* make it so on top it's not even funny */

top: 0px; /* where is the upper most top left pixel going to be relative to the document? */

width: 100%; /* How wide? */

height: 1600px; /* How tall? */

}



div#load_screen > div#loading { /* Styling for the loading info display (ie 'loading ...') */

color:#FFF;

width:120px;

height:24px;

margin: 300px auto;

}

.one { /* animation class for the 1st dot in the ellipsis */

opacity: 0;
-webkit-animation: dot 1.3s infinite;

-webkit-animation-delay: 0.0s;

animation: dot 1.3s infinite;

animation-delay: 0.0s;

}



.two { /* animation for the second dot in the ellipsis */
opacity: 0;

-webkit-animation: dot 1.3s infinite; /* Run this animation until the 25th hour */

-webkit-animation-delay: 0.2s; /* Code for not-so-webkit-friendly buddy browsers */

animation: dot 1.3s infinite;

animation-delay: 0.2s;

}



.three { /* I think you may have guessed what this is for - monty python's flee circus */

opacity: 0;

-webkit-animation: dot 1.3s infinite;

-webkit-animation-delay: 0.3s;

animation: dot 1.3s infinite;

animation-delay: 0.3s;

}


/* change the opacity of the effect called 'dot' to the following values at the following percentages */

@-webkit-keyframes dot {

0% { opacity: 0; }

50% { opacity: 0; }

100% { opacity: 1; }

}


/* same thing, but for compatability */

@keyframes dot {

0% { opacity: 0; }

50% { opacity: 0; }

100% { opacity: 1; }

}


2) Creates the javascript trigger for showing the div/element when you load the page;



What happens here is quite interesting, and is distinct to HTML5. We have all the content on the page on a z-index of (for example) 2, and then a div covering the entire page and more with a z-index of (a really large number like) 1000000. Basically, the page waits until every element in the body has 'loaded', and then removes the overlaying div, along with the div's child elements. The site is then shown.



Here's how:



window.addEventListener("load", function(){  // when the window has completed the event called 'load',
// run this code

var load_screen = document.getElementById("load_screen"); // initalise the overlaying div

document.body.removeChild(load_screen); // destroy it (darth mall style)

}); // end html5 function


3) Creates the div for covering the entire page.



The div's code is as follows:



<div id="load_screen">
<div id="loading">loading document <!-- this is the text that will stay forever -->
<span class="one">.</span> <!-- the first dot in the ellipsis -->
<span class="two">.</span> <!-- the second dot in the ellipsis -->
<span class="three">.</span> <!-- the third dot in the ellipsis -->
</div> <!-- end inner div -->
</div> <!-- end overlaying div -->


 



But first, please never try and syncronise >300kB (or ~4000) contacts from google contacts to a smartphone ever, as this will cause your phone to die. Trust me, it happened twice today. Here's the scoop:



I was working with a client who has about 5000 email contacts, 300 phone/sim contacts, and 140 miscellaneous contacts (Whatsapp, BBM, instagram, viber, etc) and i needed to migrate them all from a Blackberry Curve to a Samsung Galaxy S3 Trend Mini. It was taking about 30 minutes per sync (between google and the Samsung), and it took me about 2 hours to find that the Google sync was cloning all 5000 email contacts every time i synced with the Google Account.



But for future reference, you shouldn't have any issues syncing < 1000 Email/SIM/etc contacts to google in less than 5 mins.



 



Speak soon guys and gals, keep nerding!


First Blog Post

19 August

This is the first blog post.



More to come soon!


Contact me

Please feel free to drop me an email - but also remember that i don't like spam!!!

What's your name?
What's your email?
What do you wanna say to me?
CAPTCHA
Let's send this message off!