I realised today that I never got round to posting any screenshots of Dollar IDE, the PHP Integrated Development Environment I made for my Final Year Project at The University of Hull, once I’d finished developing the feature complete version for submission. This meant I couldn’t show it to anyone when I was talking about it, so I’ve posted some below.
This is the first screen a user sees when opening the Application. They can create a new project or open one from a git repository or the local computer — a recent project list makes it easy to get back into a project you’ve been working on.
When making a new project inputs such as “Project Name” and “Save Location” are validated as-you-type so a user always knows how to resolve any problems (e.g. invalid characters or selected a directory that you don’t have write permissions for).
The “Project Type” drop down allows you to select templates for your project. E.g. A web template which has an index.html and ‘images’, ‘styles’ and ‘js’ folders included. The idea was to allow this to be extended so you that you could select, for example, a CakePHP project type and DollarIDE would download CakePHP and resolve all the dependencies, however this has not yet been implemented.
DollarIDE integrates with any git repository through LibGit2Sharp, but has enhanced integration with Github through their API. When you create a project you can have Dollar IDE automatically make and initialize a repository on Github for you and even set if you want it to be public or private. In the above screenshot you can see how Dollar IDE allows you to log in with you Github credentials (which are stored securely using Windows DPAPI) and then select from a dropdown which repository you wish to open and start editing.
Of course most of a developers time is spent in the code editing window itself. In the screenshot above you can see DollarIDE’s tabs, auto-completion and syntax highlighting.
Seen as developers spend a lot of time in their IDE I felt it was important to ensure that Dollar IDE could be customized to suit their needs. For example, in the Colour Scheme Settings window shown above the user can change both the accent colours and background colour of Dollar. This includes the obligatory dark theme.
You can also see the project pane on the right hand side of the background window in this screenshot. The project pane allows the developer to manage folders and files, and open them for editing — all from inside the same window as the code itself. Due to PHP often being deployed in a CGI setting, file locations are especially important.
Finally, this screenshot also shows that Dollar IDE currently makes no attempt to syntax highlight HTML, which is a great shame as PHP is often intermixed with HTML. This will be one of the first features I add when I eventually open source the project.
Last night my housemate Hayley and I were talking about the Data Mining and Decision Systems module we took last semester, during that discussion the concept of genetic algorithms came up.
In the computer science field of artificial intelligence, a genetic algorithm (GA) is a search heuristic that mimics the process of natural selection, except that GAs use a goal-oriented targeted search and natural selection isn’t a search at all
Hayley explained the concept to me using the idea of an animal that is more likely to survive in its environment by blending in with the colour of its surroundings. So tonight, as a nice change from revision and work on my Final Year Project, I had a go at developing such an algorithm — with a somewhat humorous undertone. The result of this undertaking is a little tech demo called “The Generation Game – A Simple Genetic Algorithm”.
In the demo it is advantageous for a sheep to be green, in order to fit in with its field. However at the beginning of the game the ten sheep in the initial flock are of completely random colours.
Turns are taken, in order by
- A Flock of Sheep, which breeds, producing 1 new sheep for every two sheep in the flock (if there is a left over sheep it doesn’t breed). Sheep produced by the mating process are the median colour of its two parents.
- A Wolfpack which depending on its hunting ability can eat 10% – 60% of the heard in any given turn
The closer a sheep is to the colour green, the less likely it is the be a casualty of a wolf attack (however there are other contributing factors, and a green sheep can still be killed).
As you can see from the gif image above if the initial flock has a green sheep amongst its ranks then evolution takes place (survival of the fittest, like how Darwin described it) and within just 20 generations the flock consists of only green sheep.
Another interesting situation is when there is no green sheep in the initial flock.
As you can see from the example above which starts with no green sheep the flock gradually becomes a light brown colour, this is the closest colour the flock could get to green with the genes avaliable in its gene pool.
This is just a simple tech demo (written in C# with XNA) to prove to myself I understood the concept, but it worked out quite well and I think its cool. I’ll be cleaning up the code and adding some comments, so be sure to check out the repository containing the program on GitHub.
Thats all for now,
On monday I took an exam for module 08227 – Advanced Programming.
Questions ranged from being about C++ Syntax, the different ways to traverse a binary search tree to the different uses of difference types of class inheritance.
I’d spent a long time revising before the exam and was confident I would do OK, however I was still pleasantly surprised when I found I achieved a grade of 90.85%. This is a stark improvement over the 75% I achieved in the last Advanced Programming exam, obviously my hard work is paying dividends!
I am still awaiting the mark for my Advanced Programming coursework, once I have that I will of course update the blog with both that mark and my mark for the module overall.
Last Wednesday I had an exam for the Advanced Programming module. The exam was about the syntax and use of the C++ Language and the ability to read Assembly Language. I was fairly confident, even though I have personally developed very few C++ applications. As more of an application developer than a real time system or game developer I prefer to ease, reliability and stability of C# or other managed languages such as Java over the pure speed of C++.
Having said that, C++ and Assembly are interesting languages and by studying them I feel I have learnt a lot about programming in general, particularly optimization and how things actually work on the hardware.
The exam wen’t well, and I received a mark of 75% — a first class — which I’m very happy with 🙂
In the upcoming semester there will be a coursework and one more exam for the module. Hopefully I do as well in them as I have in this exam 🙂
One of the many things I love about Modern Jago is its huge TV, which has an XBOX connected, with Kinect
My apologies for a total lack of posts since Christmas. I’ve been busy with all sorts, but mainly revision for my exams. Normal service will now be resumed 🙂
Near the end of November I read about ‘Appy Christmas — an event set up by Microsoft to encourage the development of Windows 8 applications over the festive period — on the Microsoft UK Students Blog.
I immediately thought it could be good fun and posted about it on the University of Hull Microsoft User Group hoping that some of my fellow Hullians would join me on the trip down to Modern Jago, Shoreditch , London. It turns out that in the end 25% of the attendees were from The University of Hull, a fantastic turn out.
The two day event started for me and the two Hullians I was travelling with, Rob and James, went to catch our train at half 10 on Monday from the Hull Paragon Interchange station, just 2 and a half hours later we were at Kings Cross and boarding our Circle Line tube train to Liverpool Street — 10 minutes after alighting at Liverpool Street we’d finished the final walking part of the journey and were at Modern Jago.
This was the second time I’ve been to Jago and I really like it there, its a blend of Modern and Old that works really well, much like Windows 8 I guess Microsoft would say ;).
Over the course of the Weekend I ported my Solar System Simulation coursework for 2D Graphics to WinJS, improved the UI and submitted it to the store — quick work! You can read all about that application here. Rob developed a C# and XAML Modern UI app port of his Cheap Ass Gamer Windows Phone 7 application, which is absolutely beautifully designed and you should definitely check out by clicking here!
Other than application development a lot of fun was had out on the town with Phil Cross, Ben Nunney and my fellow Microsoft fans and a heck of a lot of pizza was consumed. Overall we produced over 30 apps in two days, good going! No wonder the Windows Store is the fastest growing app store at the moment. Porting applications is almost effortless, bar changing the UI for the big screen.