danieljon.es

index posts opinions likes dislikes interesting cgit

Posts

My posts about programming and things.
Date format is DD/(M)M/YYYY because I'm sane.

prev 1 2 3 4 5 6 7 8 9 next
direct link

My online identity and why being a nice guy screws you over

11/1/2016

Unlike many of you (or at least I presume) I've been known online by many 'handles' used to hide my real identity. No, I'm not referring to Mr. Anonymous on 4chan, instead a unique name that people can identify you with online. Lately however I've thrown the idea of anonymity out of the window and instead have been using the name 'daniel_j'.
You may or may not know me in real life, (if you do, sorry) but I tend to personally stick to a simple rule: Be as nice as I can possibly be and give anything I can to make others happy. Some may view this as 'buying' respect from people; well it is, that is true. What more can be said? Respect isn't something that comes free, it always has a price. Whether the price is weeks, months and years of time speaking and chatting with certain people online, getting to know each other greatly, or simply providing a service hosted on your own hardware/servers, it isn't cheap and it can heavily affect ones attitude towards you as a person - either positive or negative.
An inherit flaw to my master plan of utter bliss is that sometimes I just can't provide what is needed to either gain or prolong the respect once had and treasured. I don't like that - I can't handle the idea of not being able to provide something to you.
But that is crazy. Who are you to ask for something from me when I'm already providing you with something that is costing me. But, then again why am I happily providing you with a service. I met you randomly and felt bad due to your current service situation. Why am I not just putting you on my blacklist of people and carrying on. Why am I even typing this out, is it because I can't confront you again? Don't worry, I'm not removing your service, I enjoy it actually.
I'm a nice guy right, someone will one day show such niceness to me, right?
The solution isn't being an asshole, right?
If you're reading this - and you know who you are, I don't hate you, and I'm certainly not ignoring you, I just can't say no.


direct link

IRC Bot made in both Python and Java

7/1/2016

I help maintain and moderate (when it was relevant, now we just have fun) an IRC channel dedicated to user support for the game BeamNG.drive (www.beamng.com) located on the IRC server irc.beamng.com #BeamNG. If you have ever done any form of tech-support you know that the questions you receive are repetitive, very repetitive, and I for one, could only repeat myself so many times before I just had to come up with something easier.
An IRC bot was a great idea - there are literally thousands online and opensource - the most favourable being EggDrop. I however have integrity and cannot simply use such a thing to make my life easier. Instead, I opted to make one, well multiple, for myself.
Both of my final copies can be found here: https://github.com/daniel-Jones/BeamBot
One is programmed in Python, while the other in Java.
Both bots work in the same simple manner:


The bots are pretty simple, but has saved myself and others plenty of time.
My IRC nick is daniel_j I can be found at the following locations, why not say hi:

direct link

Analysing and explaining my source code.

26/12/2015

Let's face it, my blog is stale - rarely new content, and whenever there is new content it is often short and boring.
I've decided to try something different, I'm going to being walking you through snippets of my code, explaining what I'm doing and my though process, just for fun.
I'm going to start today with my latest mini project, the number storage program.
The first section of my value recording program is simple.
I first include some C standard libraries that I need:
stdio.h - used for standard IO such as printf etc
string.h - used for comparing strings
time.h - pretty simple, I use this library to determine the systems time
I then proceed to define two functions that I use later on, this is to ensure that the C compiler knows the functions exists - compilers are dumb.

 
/* database like program to record values */
#include stdio.h
#include string.h
#include time.h

/* functions */
void addRecord(char* value);
void readRecord();
 

Next up, just like every other C program in existence I define a main function and add code inside of it. The main function in any program is the first place any compiler looks for code - without the presence of this function your program WILL NOT compile.
To attempt to keep things slightly less complicated I shall post the source first and then explain it.
 
int main(int argc, char* argv[])
{
	if (argc < 2)
	{
		printf("Utility for recording and monitoring values\n");
        	printf("This utility requires arguments.\nusage: %s -l [list records] -i [insert record]\n", argv[0]);
                return 0;
        }
        int i;
        for (i = 1; i < argc; i++)
	{
		if (strcmp("-l", argv[i]) == 0)
                {
                        readRecord();
                        break;
                }

		if (strcmp("-i", argv[i]) == 0)
		{
			addRecord(argv[i+1]);
			break;
		}

        }
        return 0;
}
 

Now, this is about the time those of whom don't know at least a little programming should leave - I'm not here to teach you how to program, just to explain what I do!
I define the main function as an int - as you should know this is due to passing the OS an exit code upon completion. I also use the common "int argc, char* argv" to obtain CLI arguments as this is, of course a CLI only program.
I follow the definition by checking for arguments, if this program does not receive at least one argument I print to the screen usage instruction and end the program.
Once it has been confirmed that at least one argument has been passed I check them incrementally for specific key triggers - -l and -i. If none of these are found, the program ends silently - I could have told the user they didn't input a correct argument, but why bother.
If the correct arguments are found, I call the relating function (the same ones we defined earlier) and let them take over - after passing the correct values of course, which in -i's case is anything AFTER the -i (-i was to INSERT, -l was to LIST).
Once the functions are complete, we break out of the for loop and end the program - our job is done.
The final parts to be explained are the two functions we use.
 
void addRecord(char* value)
{
	printf("Adding record: %s\n", value);
	/* before we open our file, we want to get our date and time setup which we will also write */
	time_t rawtime;
	struct tm *timeinfo;
	time(&rawtime);
	timeinfo = localtime(&rawtime);
	/* open file for writing */
	FILE *fp;
	fp = fopen("values", "a"); /* a to append, not w - would overwrite */
	if (fp == NULL)
	{
		printf("Can't open the file for writing.");
	}
	else /* file open, write data */
	{
		fprintf(fp, "%s - %s\n", asctime(timeinfo), value);
		fclose(fp);
	}
}
 

Oh my, if you are new to programming close your eyes and run, this looks scary.
This function labelled "addRecord" does just that, it adds a record to the file we are using to store our data.
Now, I have to be honest, this is a simple ass way of storing values. I use no database, I just take whatever a user enters and append it to the end of a file - lazy, yes, but very convenient as I don't expect anyone to actually use this script, except myself.
I begin by informing the user of what record is being appended to the file. I follow it by some nice copy-pasta code for retrieving and converting the time and date to a human readable format that will also be appended to file.
At this point we are ready to append our data to file, so I generically create a FILE pointer and fopen the file we are using to store data. I open it with 'a' access to allow the data to be appended - using 'w' for write mode WILL OVERWRITE the file, we don't want this.
I then check to see if the file was opened successfully, if not I inform the user and the function ends there. If it was however opened correctly, I fprintf the data into the file we opened and then, of course then close it. The function then ends. Also note how I never delete the fp pointer, sue me.
The next function is awfully similar and just reads and displays the entire file to the screen.
 
void readRecord()
{
	/* open file for reading */
        FILE *fp;
        fp = fopen("values", "r");
        if (fp == NULL)
        {
                printf("Can't open the file for reading.\n");
        }
        else /* file open, read data */
        {
		char buff[1000];
		while (fgets(buff, 1000, fp) != NULL)
        		printf("%s", buff);
                fclose(fp);
        }

}
 

I use fgets to retrieve the files data into a buffer and then print it, etc
Awfully simple, yet quite nifty and useful.
Should I bother doing more of these? Probably not.

direct link

simple C CLI program for adding and monitoring values

21/12/2015

I had a personal reason for needing to insert, store and monitor specific values - I could have just used a text document or piece of paper - but that is boring, who likes boring?
The program in action is displayed below.
post14_1
The program allows only 2 arguments: -l (lists the values stored) and -i (insert values), everything else is ignored.
To compile and run the program simply enter in any Linux programming environment: gcc main.c -o valueStorage;./valueStorage
The program will compile and present you with an output describing your options.
The source code is located here for anyone to use: http://pastebin.com/027YH4Qi
As always, you can contact me via my email: admin@danieljon.es or via irc: danieljon.es:9090/?channels=#fun
(if you try to use the IRC server use a realistic name that identifies yourself, if not you will be kicked from #fun)


direct link

Been on Windows playing Fallout 4 - ashamed.

1/12/2015

But, i'm now back home doing what I love.
A new theme face lift, fancy background images and home security camera setup. Perfect.
Current work space - split over 2 1920*1080 monitors.
post13_1
I'm currently working on my RGB lighting program - more precisely, I'm working on the micro-controller side of things - fun!
So much for """"daily"""" media/posts.
You can always find me on my IRC server - http://danieljon.es:9090/?channels=#fun - I kick anyone that doesn't identify themselves.
Or, contact me via Email at: admin@danieljon.es


direct link

Game engines and OpenGL

6/10/2015

Lately I've been teaching myself OpenGL in C using GLUT, literally as low level and annoying as you can get.
Just today I've been playing with an engine known as 'Irrlicht'. It is an OpenGL C++ API for OpenGL.
At the moment i'm just simply loading meshes and maps from Quake, I hope soon to get a shooting game of sorts going, but that is quite a while away.
You can download a video of my current progress here


direct link

Langton's Ant

20/9/2015

Inspired by https://www.youtube.com/watch?v=NWBToaXK5T0 I've decided to embark on creating my own version of this simulation using Qt/C++.
Yet another boring weekend.
post11_1
Woo, I have a grid drawn, amazing.
2d graphics suck.


direct link

Card hand generator

17/8/2015

When not flicking them i'm randomly generating them, because why not.
It is written in C and is able to be compiled on any UNIX/Windows environment.
example use:
./CardsGrid hand 5
this generates a completely random hand of 5 cards. (seeded with the current time)
the code for this mini-project can be found here http://pastebin.com/1KyJBEB6
post10_1


direct link

Front panel PC device

12/6/2015

Recently I've been working on a front PC panel device.
Seeing as there are plenty of unused slots I've designed and created a display panel containing a 16*2 LCD display and a small OLED screen.
They are powered by an Arduino with the data coming from an application made in C++/Qt communicating via a serial connection via USB. Currently it can play a few songs through a piezo buzzer, and just for fun, I created a simple flappy birds clone.
The arduino has an internal controller made up of 3 buttons; however for external interaction I have added an infra-red reciever; this allows me to control the entire project with an IR controller - I have chosen and programmed my RGB LED controller -any controller can easily be added.
The arduino is currently sitting inside my PC and the mounting for the screens are ugly. But it isn't done; I plan to make it look better and add features such as CPU/RAM etc monitoring with graphs and a weather display.
Here is an image of the current application controlling the Arduino:
post9_1
And here is a horrible image of the display (shitty webcam):
post9_1
I'll repost any updates made.
update:
Have done some major work to the UIs back end.
It downloads a weeks worth of data for your location and stores it all etc.
Also allowed the user to display custom text on either screen, makes your computer look more personal.
post9_3
I've now published the code on GitHub and will update it regularly.
https://github.com/daniel-Jones/PC-Panel-Display


direct link

Services I run

5/6/2015

I've realised that I run quite a few things on my server, some useful, most not:
IRC (Internet Relay Chat) Server:
I run this server for myself and a few people to hang out in a free setting - http://irc.danieljon.es:6667
QWEBIRC - Online IRC Client (connects to my server):
I run this service to allow people without IRC client to connect to my server (derp* sucks) - http://danieljon.es:9090/
ZNC - IRC Bouncer:
This is a private bouncer using the ZNC software package, this allow myself and a few others to connect to multiple IRC servers using a fancy reverse DNS host (currently relaxing.in.the.stars.because-of.science)
IRSSI - IRC client:
IRSSI is a text based IRC client I run on my server inside a screen session.
Image Hosting Service:
I created an image hosting service from scratch because I figured it would be useful for assisting people with issues in #BeamNG, it turned out to just be a cool project for myself and others to use - http://upload.awful.pictures
Custom User Software:
I've also integrated the image hosting service with a register/login system custom made using PHP and MySQL, this allows you to register to services (I currently have a "Draw something" game made and a file uploading service) that are not available to the public. The database has critical information MD5 hashed with a custom salt accompanying it - your password is completely safe. - http://danieljon.es/login/
Blog:
You're here right now; I point all my domains here - http://danieljon.es
Domains:
I currently own and maintain one server with 3 domains:
danieljon.es - main domain used for most things - if you didn't notice it is my name, Daniel Jones - I bet you don't have your name as a domain
awful.pictures - I use this domain for my image hosting service
because-of.science - my server has a reverse DNS record that points here - it makes me look sup3r l33t in IRC.
Email server:
I currently have an email server setup - instead of using Gmail and having a something@gmail.com address I have something@danieljon.es - My main account admin@danieljon.es - this is where you can easily reach me (or IRC of course)
I will probably host a lot more in the future, but currently, this is all I need.


prev 1 2 3 4 5 6 7 8 9 next

page generated 2018-11-20 20:26:21 using sitegenerator