Scott Pritchard

Connecting Inspiration

  • Home
  • What is ThoughtCloud?
  • CV
  • My Designs
    • MoPAndBugget - Bug Report Tool ("Mists of Pandaria")
    • VTemp - NVIDIA Temperature Monitor
    • Foren - iPhone Music Renamer
    • Boiled - Steam Drive Optimiser
    • TCUpdate - A Basic Updater DLL
  • Upcoming Projects
    • Hypercaine
  • Delphi XE2 Code Samples
    • What is this section?

Speedometer Demo

Tuesday, 15 May 2012 17:08 | Written by Scott Pritchard
Good evening guys!

Last night i put out a short video of something i designed while waiting for D3 to launch. It's a basic speedometer. I've been wondering for a while now exactly how i could bring VTemp to Firemonkey completely. You see, some of the components i use in VTemp currently are available in Firemonkey, but cost money. Being unemployed (for now at least) means i don't have the cash to spare to buy these components, and despite my knowledge improving a lot,i've been unable to figure out how to make a graph component. As such, last night i realised that creating a speedometer with animation wouldn't be all that difficult. I spent a few hours on it, and more time was spent trying to render the video (below) at truly high quality than was spent designing the speedometer.



As you can see, it's a very short video. It was when i was filling in the description and tags that i realised i could potentially use something like this for displaying temperatures rather than the graph. The "Randomise" button randomises the position of the arrow. The only part that's drawn in Photoshop is the notch overlay. I had to scale the whole thing up to 2x to make it take up enough room in the video/be large enough to see properly so it's a little blurry. The other elements are actually objects and shapes from within firemonkey. All of this is done with animation, and the only code used is to change the rotation angle/value that the hand should point to. At the moment, it points to an angled position but i aim to make it work with values at some point, probably by dividing by the range of values (which would be 270 in this example) and then multiplying by the desired output value, but i'll have to work with the code to verify that.

On the topic of the video, i think i'm gonna stick with this style for most of my future developer videos. I always liked the Google style videos because they're simple, to the point, and don't have distractions in them. I might change the colour with different videos, but i'll aim to stick with colours in the same luminosity as they give a good feeling to the videos.

VTemp 2.0 will be released later this year. I don't have an ETA for it, and i don't even have an ETA for starting it, but i've got plans for a complete overhaul of the interface. It'll still have all the features you'd associate with it, but i'll be trying to make it cleaner and more appealing to look at. Look at MoPAndBugget to see what i mean. The interface is "HD", which in this sense, simply means i could scale the whole thing up and it'd not lose clarity (as everything is vector drawn and as you've seen, powered by the GPU and CPU). Of course, Firemonkey has some issues with 3D interfaces and button response, but since i'm not dealing with 3D interfaces for my current projects, that's not such an issue.

Also, Bleakfall. That's something i REALLY want to bring back. In my new vision of development, i feel that something like Bleakfall could allow remote control from both the web, and from the desktop via a client. However, i want to ensure that it's secure enough that it can't be abused by malware authors.

One last point is about the 3D modules i worked on in the original Hypercaine. I forgot to release those to the public as i said i would, but i'm still wanting to get them out there. It's really about fixing up any remaining issues and packaging them up. Then i want to make a promotional video to show them off in a decent way.

So, plenty of things to get done, and another project i'm contemplating (but absolutely no guarantees i'll even get past the assessment stage with it).

Have a great evening guys! ;)
Add new comment

TCUpdate Released!

Friday, 11 May 2012 15:55 | Written by Scott Pritchard
Good afternoon guys! I've got a few points i wish to discuss today!

First of all, i've just released another (very small) product! This one is a DLL, and it's more focused towards other developers. It's simply a very basic updater that downloads a file from the net to a memory stream, and then saves it to disk when the download is complete. It does NOT provide any information on download progress. It is ideal, however, if you wish to do a "FileExists" check to see if it's finished downloading. This would allow you to perform some actions within your application (such as showing a message) without having to constantly check for progress. However, if you require a solution where progress does NOT need to be reported, then TCUpdate would be ideal. This has taken only a few hours from start to finish, and is a spawn-child from code i was working on with Hypercaine.

Full Details on TCUpdate: http://www.innuendo-eu.co.uk/index.php/my-designs/tcupdate-a-basic-updater-dll

Next point; Hypercaine technology updates!
I recently announced on the ThoughtCloud Facebook Page that i was planning on implementing a few different technologies into Hypercaine. The first is "Thunderchild". This is merely the name for the security engine i'm building into Hypercaine. The second, and the one i'm most excited about, is the as-yet unnamed "Live Module Streaming" system. This system is being designed so that you'll be able to update individual modules with new code WITHOUT needing to restart Hypercaine! You'll simply be informed that you need to restart the module that's been updated. Because of how i've designed TCUpdate around this idea, i'll be able to simply inform the users that a module update is available, and provide them with the option to restart that module. The new code will be initialised immediately and the updated module will be available straight away.

That's all for now!
Add new comment

Hypercaine, Boiled, and VTemp Updates

Tuesday, 08 May 2012 22:31 | Written by Scott Pritchard
Good evening guys!
I've got a few updates that i'd like to provide you with regarding a few pieces of software. First of all, let's cover the short ones.

Boiled
Boiled is likely be be redesigned at some point in the future. Essentially, with what i've learnt since i started working with XE2 and Firemonkey in January, i'm not happy with how Boiled looks, or how it technically works. Sure, it DOES work, but i want to update it and make it look and perform better. I don't know when these updates will be done, or even when i'll start them, but i do have plans to update it.

VTemp
VTemp is also going to see some updates. Again, with what i've learnt, i feel that i can make it better. I'm not sure if i'll be changing the ribbon interface it uses, but i do have plans to at least build it to be able to communicate with Hypercaine. This is likely to be just 3 lines of text to indicate GPU temp and name, but it might go as far as including graphs inside a panel. I'm also looking to update VTemp's actual interface to use the Firemonkey framework, but this isn't guaranteed just yet. It depends entirely on the technical aspects of it, but initial assessment shows it should be possible (thanks to Firemonkey, where any control can parent any other control).

Hypercaine
Hypercaine is progressing nicely, and much of the framework is done. The panel system is working pretty well, but there's some tweaks and additions still to be done. I've also added some authentication to it. I'm not talking about typing a text password. I'm talking about 3-point authentication with a Username, a Picture Password, and a Picture selection. The first is simply a text username. The second is a picture, where you click 3 points on it in order to log yourself in. The third is a dropdown box where you select which picture to display. All 3 combined will form a hash which is then checked against your own password. Example!

I've also built in "IPC", or Inter-Process Communication, which allows other programs to communicate with Hypercaine. At present, it allows them to create, modify, or delete panels, provided they know the name of the panel, and the access hash that Hypercaine generates. The hash is generated by Hypercaine simply because i want to try and avoid applications from creating their own hash and it conflicting with another panel.

I'm also wanting to integrate Twitter, Facebook, and Email alerts into the app. My ideal design is one where applications have "toasts" built into them, and that way you won't need to worry about missing out on something.

I've also started work on a "Hotbar" system. Essentially, this is a panel with 5 buttons on. Each one is assigned to a hotkey. When you press this hotkey, you open up a "Category" of quick access. For example, if you click the hotkey for "Games", it'll list your most recent games. Same with movies, music, images and documents hotkeys.

I'm also going to try and work on a rather unique docking design. An idea i was shown was where you drag and drop windows into a panel, and then it docks them all inside that panel as smaller versions. Simply drag and drop out of the panel to get them back as normal windows.

I also want to try and extend Hypercaine out past the application itself, and allow external, non-Hypercaine applications, into Hypercaine itself while still providing all the features that Hypercaine has. Being able to make Windows into panels where a preview of the application is provided on the panel itself, and then simply click to make it the foreground window is the idea. It's a VERY technical undertaking though and not something i'm confident i'll be able to do.

I'm always looking for ideas or feedback, so if there's something you want to see, leave a comment!

Add new comment

Share ALL the code!

Thursday, 12 April 2012 13:34 | Written by Scott Pritchard

Good afternoon all!

Just a few small updates for you with regards to the site and project status.
Site Additions
You may notice that in the menu bar, i've added a new option known as "Delphi XE2 Code Samples". Essentially, i've gotten code that i wish to share because it solves those "rare" challenges you might come across. However, i never really found any place to share these samples and as such, they just sat inside my projects without the rest of the world knowing. It wasn't until a few nights ago that i realised that here would be the perfect place to share them. As such, i've now added a page where you can view all of the samples. The code is designed with Delphi XE2 in mind, but may work in earlier versions. [FMX]/Firemonkey code samples will obviously only work in a Firemonkey project which is only available in XE2. As the page describes;

"Over the years, Delphi has seen many changes. With XE2, the Firemonkey framework was introduced limiting what code actually works. It is my intent to share some code samples that i've found very useful, and perhaps even show some code i use in my own applications. Please, feel free to look around at the samples available. All of them are free to use without limitation, although i'm not responsible for how they are used."

There's only a few code samples at the moment, but they all serve a purpose. My favourite is by far the latest one - [FMX] Colour Wave

It's an amazing display of what Firemonkey can do, and is only 14 lines of code (which counts the variables too!). Check the code samples out, and if you see something you like, it's yours to use as you see fit. Obviously, i'm not responsible for HOW they are used, but only responsible for the code that was created.

Project Updates
Let's start with Exosphere. Since the Alpha went up a few days ago, i've done no work on the project. Essentially, i wanted to work on Hypercaine and get that moving a little. As such, there's not much to talk about, other than "Visitors, y u no post feedback?!".

Hypercaine
As said, i've started making progress on Hypercaine now. It was originally intended to be a 3D desktop environment. I still want to stick with that. However, i'm going all out on this (just as with Exosphere) to make it stunning. As such, i'm looking at just how stunning i want it to be. As i've been building with it, it's given me a space with which i can experiment with Firemonkey, particularly in the animation and effects areas. Because of this, i've built something stunning, but based it upon an idea that already exists; Metro panels.

Please, before you go running to the hills screaming that i've murdered the future, hear me out. Any intermediate PC user who's tried Windows 8 on a non-touch system will agree it's awful for a few reasons;

 - They completely abandoned the start menu in favour of displaying large panels on the desktop

 - These panels often don't include access to the applications you use most UNTIL you set it up

Losing the start menu and making panels the primary method of usage wasn't a smart combo. A great many of us, myself included, use the start menu as a pivot in our daily lives. Combined with the icons layout design of the Desktop, it's a combo that's difficult to beat. Everything is within easy access, no hoops to jump through (at least in most cases).

Metro does have its' charms though, and by that, i don't mean the "Charms Bar" that appears on the right side. For example, having information right there in a sleek design is very attractive to application developers. Their "icon" now displays information. This is the good part of Metro, and the point that i think Microsoft is trying to address (along with it's current lack of a mobile platform that competes with iOS or Android). It's for this reason that Hypercaine's version of Metro will reinforce this idea without sacrificing on the things experienced users are used to. This means that while Metro is the default style, there is an easily accessible option to switch to icons. Due to the way i've designed it (another idea i got looking at Metro), information such as the Clock, RSS Feeds and such will all be built into the desktop area as modules. As it is, the clock is large format text in the bottom left corner of the desktop, rather than being placed on the taskbar. I'm really liking the look of it, and it provides some nice definition to the application.

In addition to this, i'll be building a start menu into Hypercaine. This is the big thing that made Metro a big no for me. Losing the start menu made me feel crippled. Making sure i don't make the same mistake is a priority.

"Metro Peek" is another feature i've added, where you'll be able to "peek behind" the panels or icons. It basically makes all the panels/icons almost completely transparent so you can see what's going on behind. This will allows me to hopefully build a smooth sleek interface where the panels/icons act as if they're a seperate window.

In keeping with the Metro theme, i'll be attempting to build some performance counters into the area above where the Metro panels/icons sit. In the event i decide against this, i'll instead build a task-manager module styled similar to that of Windows 8 Task Manager. As this is going to be a pretty large project anyway, i'll be trying to make it a module rather than a Window, in that it'll be built into the desktop itself. The information will be pasted on the desktop but i'll be sure to add in a way to hide it.

As i said at the start, i still want to keep 3D style where possible. For the moment, i'm focused on getting the basic layout sorted out in 2D before i start integrating everything into 3D containers.

One last thing is that as i mentioned earlier, i've opened a code samples page, and gave a link to a "Colour Wave" example. I've actually integrated this as a toggleable option for the Metro Panels (or icons if you switch to those). It essentially creates a wave of colour across all of the panels from left to right. I've improved upon it a little over the code on the page and added a wave of transparency too, but it's really just the same effect with more definition. However, the performance of the rest of the application seems to drop even after it's disabled, to i might simple leave it with just the colour wave.

That's all for now. This post is much longer than i intended it to be, but hey, it's no problem.

Add new comment

Exosphere Alpha Now available!

Sunday, 08 April 2012 18:00 | Written by Scott Pritchard

It's here! After not too much work (i've not done much work on it in the past week), I finally got Exosphere to alpha state and now feel i can allow people to testdrive it!

What is Exosphere?
Put simply, Exosphere is a "Realtime Animation Tool". This means, that using just your mouse (or fingers if on a touch screen system), you can create animations in realtime. No more keyframing, no more messing about perfectly positioning objects in a scene, and moreover, no more trying to make movement look natural. It's designed to give you an immediate connection between what's in your mind, and what's in your head.

Why is it only Alpha?
The reason it's alpha rather than release is that i want to get something out there to show. However, it does have some issues which will take time to correct. However, the general idea is there and i feel it's important to at least show the direction it's heading in. I will be working to get it to release quality as soon as possible, but i want people to test it out, try to break it, and let me know (hence why comments have been enabled for this post).

How do i provide feedback or report bugs?
If you find a bug or want to provide feedback, i ask that you do so as a comment in this post. There are some known issues with it, but the main one are as follows;
- It's not possible to select a prop from the scene and then adjust scaling or rotation. You must select the prop from the list on the left in order to adjust these settings!
- Controls don't reflect the value at that frame. This will be fixed in a future version.

There will of course be other bugs with it, but those 2 are the main ones. Please also make note that some parts of the application are NYI, but in the event you discover something you think i may have overlooked, please report it!

Pressing "CTRL + R" when the scene area is selected will start live recording! Alternatively, simply click the "Live Record" button on the left.

Hashes are as follows;
Exosphere.exe: 746BBF434B4A4BFAF031E762A969FCEE
Exosphere_x64.exe: 1867ED133BFF8B61A0A681A4B0C9B3DE
Current Version: 1.0.0 ALPHA

With that said, you can download the alpha by clicking the button below;

Download Exosphere ALPHA!

Add new comment
More Articles...
  • A few updates
  • Thoughtcloud; The Future
  • ThoughtCloud; MoPAndBugget
  • ThoughtCloud; Hypercaine

Page 1 of 3

<< Start < Prev 1 2 3 Next > End >>

Copyright © 2012. All Rights Reserved.