Having a wind down for the holiday away.

It’s Monday evening now and on Wednesday, my loved one and I are jetting off to Morroco for a break away and much deserved to get away from reality.

However, I’ve already setup a laptop that I’m taking with me for when I get heat stroke, or something else like boredom, for not only keeping in touch with family and friends (when we’re not busy lazying it), with a small ssd. My accounts are not being stored on it just in case but I have installed some essential IDE’s that I use.

When I get back, and as I’ve already setup, I’ve got a test home server running which I can monitor and use while I’m away. A few final touches to it tomorrow evening. With the wifi at the hotel, I’m going to knock up a quick android app to test it out with.

Apart from that, I’m pretty grumpy at the moment. Home is a tip and needs a hand-grenade throwing at it. Worrying about the next week while we’re away. Argh!!!

Anyway… Noisy all of a sudden here…

Java programming

After just over 3 years of programming in Java, I still haven’t sussed out how to actually open up a basic IDE and start a simple UI project from scratch.

This I know from installing Netbeans. Which I’ve used before to create a dedicated server so that client devices can receive images created using Java AWT libraries. That was easy, create a TCP listening thread, accept connections, return renderings of bitmaps in compressed PNG format. Easy.

I’ve also created (which was a UI app) a program that sniffs the UDP broadcast of the IPTV/Digital Signage server (which I wrote), and opens up a custom web interface from the server without knowing the IP address. That was easy with the help of a couple of references from the web. It turned out to be quite a small program in the end and hardly any effort in it.

Even after Android development, writing games and even using FFMpeg to write a media player using the NDK.

I simply just wanted to write (using the accumulated knowledge of Java) a simple multi window/dialog application on my laptop. Wow… It still amazes me how I got through all the previous software developing. Maybe on an evening, I’m just not that focused. But I’m not giving in.

Java may not have the power of C, but it does have a lot that can be used as I’ve mentioned above. I’m finding it simple to handle threading and AWT bitmaps, etc. All I need now is to be able to setup up a display in a window (GL or raster, whichever is the quickest to begin with) and I’ll be happy.

Qt is simple enough for both openGL and normal UI stuff. So now I want to do the same with Java. So far without the UI stuff, I can run anything, ie server side from Java, but UI stuff I’ll just have to persevere with.

I’ll get there. Nighttime coding was something I always used to do. Going to bed when I realised the sun was poking its head up in the morning.

If I can keep this up (future plans)

Many years ago I started building my online profile and populated my old website with lots of content. Unfortunately, all that has gone despite trying to get in touch with the hosting company. It was free hosting.

Now my hosting is paid for so that gives me something if times get dark and finances get short.

The boiler-plate code for a 3D online demo is almost complete but am I hell staying up past 11pm when I have to be up at 6am in the morning.

I have all next week off, so when I am not out on my motorbike getting lost around the country, which I can’t do much anyway until I get paid next, I’ll be at home building up some showcase examples. These I will plan on hosting using webGL. I’ve got a lot of ideas and I plan on getting a good few of them done next week.

My future depends on it now, because I haven’t got the pennies to fill up my tank.

Dev updates for May 2017

There’s actually a shed load of updates, but I doubt I’ll get them all done tonight.

  1. I now have a Java server running which provides Java specific rendering using AWT and other java standard features.
  2. DVB-S is easy.
  3. Using FFMpeg as a general media player for both IPTV/UDP and file/network based streams, including pause and seek.
  4. Finally got round to installing 4 OS’s on my main laptop. Windows 10 and 3 other Linux OS’s.
  5. Manually re-installed a HP tablet with Android OS from scratch.
  6. Erm… Blank…

Stuff to do:

  1. Loads… I’ll remember them probably tomorrow.
  2. Add more code to this website.

 

Time to get personal…

With a long weekend coming up due to the Easter break and a lot of ideas in my head, I’ve decided to start some more experiments with some serious coding.

Various online profiles will be updated too.

Watch this space…

!false is funny because it's true

Variable names are important

For the last two days I’ve been working on decoding video frames and displaying them. The idea is to run against the system clock which I’ve had working everytime so far. This time though, I decided to make a general decoder so that I didn’t have to worry about FFMpeg’s video decoded format which up until now has always been YUV420 which I just had a GL using SL shader convert on the fly. Everything gets converted to an RGBA bitmap so I don’t have to worry about it.

Anyway, variable names…

I buffer up the frames and then test them against the current system clock for a frame that’s ready to be presented. I had two variable names, frame and frame_temp which are pretty innocent. Unfortunately though, and which I kept missing whilst going through the code, I was grabbing a pointer in frame_temp and testing it. If it fell below the current system time then it would then be assigned to frame. If there was a previous frame then it would be cleared from the buffer queue and added to the unused buffer queue.

Now this is what I missed.

Frame_temp is first used, frame is unitialised (actually null), the tests are done on frame_temp and if failed then just exits with a null pointer. Fair enough.

It was a “typo”.

Hidden between four lines of code using frame_temp I had used the variable frame instead (which is null to start with). When I accessed a method on that class it would crash.

The error message was very obscure and nothing on google search or anywhere else was any help.

My mistake…

Most of the time I rely on debug log outputs. And whilst running this code, everything was running just as it should. It’s hard to follow multiple threads in debug output.

Finally, I ran it through gdb which took me straight to the line of code where it crashed. The line right after the “typo”.

Lesson learnt…

New laptop and Linux Mint dual boot

A few weeks ago I bought a laptop, a Dell Precision 4500, i7 2Ghz, 4Gb memory, Quadro 1800M and a 320Gb hard disk, pre-installed with Windows 7.

The first thing I did was to shrink the volume which gave me about 130Gb which I installed Linux Mint 18.3. The dual boot worked fine until I updated the nVidia drivers and lost the resolution of 1920×1080. This is after installing everything, all my programming stuff, 3D stuff, etc. I tried the workarounds online with no joy, I was losing performance.

Anyway, I had a 9.5mm draw replacement which I could remove the DVD drive and put in my SSD drive.

The first three installs of Linux and it freezing randomly, plus sussing out out why in the end the GRUB bootloader was on the wrong drive, I finally figured a way to get it up and running. Initially, after reading that on an SSD you don’t need a swap partition, the last install I went back to the swap partition with the install. And it is now working.

I’ve yet to update the nVidia drivers which I will do sometime soon.

At the moment, I can boot into Windows off the normal HD and Linux off my SSD. It runs sweet. Programming stuff is installed but not yet used. I need a long holiday to really get this beast going. The graphics on this laptop actually run better than my PC (i7 4790, nVidia GTX 730).

The only thing that slows this laptop down is the hard drive and Windows.

Maybe tomorrow I will actually bravely update the nVidia drivers for Linux Mint because I soon want to start experimenting with 3D graphics API’s for desktop and mobile again. And as usual I wish I had just a minute more time to focus on my personal projects.

It’s been a while

Yes, most definitely it has been some time since I last posted anything on my blog. That’s because this last month I have hardly had any real chill time to myself. Well, I have had some, but it never lasts for long enough.

Anyway, I’ve still been faffing about. I recently purchased CopperCube so that I could delve deeper into WebGL. Plus I’m familiar with Irrlicht, and CopperLicht makes working with 3D graphics a doddle.

I’ve also found that I can actually call myself a full-stack developer considering recent projects I’ve been working on. One project involves a C/C++ TCP/UDP server for communications, A Java TCP server to use Java AWT graphics, GWT for a web interface instead of installing software. The server does many things, too many to mention, but I’m well chuffed with it.

Setting up the server involves freshly installing Linux. Then installing Apache Tomcat. Making a few modifications to the system and then installing the software.

Device connect on the network via ethernet or wifi and will automatically detect the location of the server because of the UDP heart beat. Clever stuff really. Probably not, but all the same, it works great.

I’ve also played around with having a home TCP server which can be made use of from my mobile phone while I am out, my tablet or a PC, as well as a GWT web interface.

After playing around with all of this, there’s lot’s more I want to play with. Maybe Vaadin or similar. Move on to desktop 3D graphics again instead of openGLES 2.

I’ve also finally got myself an i7 laptop with nVidia graphics. Cheap off eBay! So I can develop on the go. That’s if the battery is good in it.

There’s other things over this last month that have tickled my fancy, but I won’t mentioned that here. Tempting though.

Hopefully this weekend I will have a long one as I’m booking Friday and Monday off because I seriously need to relax a little.

Until next time…

WebGL engine test

Yesterday I played around with a webGL engine and added it to my home hosted servers website. So it will not be available to view all the time.

wlgfx@home

Here’s a screenshot of it running in the Chrome browser:

wlgfxathomejunglescene