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.
On the 14th of July 2014 my degree was officially conferred to me at a graduation ceremony at Hull City Hall.
The day started off with a lunch inside the computer science department at the university, which was a nice opportunity for my parents and siblings to see the labs in which I’ve done a lot of my work over the past three years.
Whilst we were at the lunch I was called up in front of the other students, and their families, to receive the departmental award. The award means that my name will be shown on a golden plaque inside the social area of the department and I will receive £100 from the university. It will be quite cool to have a plaque inside the department, especially as I recognize a lot of the names on the board already as being our current lecturers — my name will be in good company. I received the award for having the highest overall grade of a graduating student — at 86.05%.
After lunch my family and I made made our way to the Guildhall in Hull City Centre where I picked up my cap and gown.
We then made our way to the City Hall where the actual graduation took place. Rob Miles, one of my lecturers from the first two years of my degree, explained how the process of graduating worked. We simply had to walk across a stage after our names had been called and nod at the Chancellor of the University. Behind us were some of the lecturers from Computer Science, Maths & Physics and The Hull York Medical School — all of the departments who had people graduating that day.
Once the graduation had taken place inside we went outside for the traditional slate throwing with the town crier. He was rather funny.
Once all of the pomp and ceremony was over my family and I went for dinner and then the drinks started flowing with my brother and university friends out in a few pubs in old town, and then the Piper Club on Newland Avenue.
The day after my graduation was my birthday, so its been a truly brilliant few days. Thanks to everyone involved, you know who you are!
Today I received my final set of grades for my BSc (Hons) in Computer Science from the University of Hull – This included my two second semester modules, Mobile Devices and Application and Distributed Systems Programming, as well as my Final Year Project.
I achieved a grade of 85% in Mobile Devices and Applications, and 89% in Distributed Systems Programming.
The final year project was worth twice as many credits as each second semester, and so had more of an effect on the final grade. Thankfully I did quite well in the final year project, achieving a grade of 86%.
My overall weighted average for this year, including my first semester modules grades, is 86.5%.
This grade, weighted with my second year grades, means that my final grade for my degree as a whole is 86% – a very high first! I am of course over the moon with this.
I’d like to again say thank you to everyone who has made my time at university not only great for learning, but truly the best three years of my life (so far! :P). Particularly, but not limited to:
- Rob Crocombe
- Simon Watkins
- Hayley Hatton
- Russell Billingsley
- Toby Russell
- Jon Rich
- Tom “Jeff” Procter
- Special mention to “our American foreign exchange students”
- Dr Martin Walker
- Eur Ing Brian Tompsett
- Rob Miles
- Dr David Parker
- Dr Peter Robinson
And of course anyone I spent time with in the labs or any of the many, many nights out in the first two years. Last but by no stretch of the imagination least thanks to my Mum, Dad, Brother and Sister for supporting me throughout the last 3 years.
I’m looking forward to trying to maintain this good score next year at York! Of course I will continue to do this blog throughout my time there too.
This week we got rather a lot more information about our upcoming graduation, mainly from the booklet you can see pictured above.
Should all things go well I will be graduating on July 14th, 2014 (one day before my 21st birthday) at 4:30pm.
Knowing this makes it all the more real, I’m really excited 🙂
In the past few weeks, since the semester 1 exams in January, we third years have been blessed with some calm time without any exams to revise for or coursework to work on, just two days a week of lectures. During this free time I have been working on my final year project.
User Interface, Icons and a Name
As recently as two weeks ago I had very little to show anyone who asked to see my project due to it all being technical back-end stuff without user interaction, which was a shame as I’ve actually done a reasonable amount of work on it, however now I have developed some of the UI and finally have something I can ‘show off’.
My previously unnamed PHP IDE is now known as Dollar IDE, so called because of how all variables in PHP are denoted by a $ sign. At the top of this blog post you can see a fantastic logo which my friend, Harry Galuszka, who studies Graphic Design at Lincoln University designed for me.
The colour scheme I have chosen for the user interface and logos consists of various shades of purple, an unusual choice for me because I don’t usually like the colour, however it is the ‘official’ colour of PHP, as you can see from the PHP.net website, and it also fits in quite well with the design language I am using, which is based on Microsoft’s Modern (formally metro) ideas.
The program doesn’t contain any bitmap images, instead I use XAML vectors, and is built using Windows Presentation Foundation meaning that the program works well on all screen resolutions and pixel densities, including Apples famous “retina displays”.
The main code editing screen isn’t ready to be shown off just yet, but below you can see some images of the “Start Screen”, which is the first window shown to the user when they launch the program. From here the user can opt to create a new Dollar IDE project, or open an existing Dollar IDE project or stand-alone PHP file. The 5 most recent projects and displayed in order to allow the user to rapidly get back to work on their website or web-app.
An important aspect of the start screen is its ability to inform the user of any issues in creating a new project before they continue, as you can see in the above screenshot issues are denoted by a red circle with a cross in, and fields which are OK are denoted by a green circle with a tick in.
This as-you-type validation means that mistakes can be spotted earlier, thus saving the user time and the exact cause of any issues can be determined and displayed. It’s always annoying when you enter some data into a program only to be told its wrong when you try to save… and then not be told what is wrong with it, being forced to make an educated guess. Dollar IDE gives you no such hassle.
One of the coolest aspect of my new IDE is its tight integration with the git revision control system. The program can interface with any git repository, hosted either locally or on a remote server, and has additional support for repositories hosted on the popular GitHub service.
In the main IDE window, which I will show off soon, the user will be able to
- See which files have uncommitted changes
- Commit files and projects
- Merge files with conflicts
- Pull changes from a remote server
Other Progress So Far
Other than what I’ve shown you in this very quick preview I have the following features working:
- Correct tokenization of the most common PHP tokens
- Complete coverage of the tokenizer with unit tests to ensure program correctness
- A source code editing window with colour highlighted text and line numbers
- Project loading and saving
- File associations (to allow project files and PHP files to be loaded from Windows Explorer)
What’s Left to Do
There’s still rather a lot left to do on this project, but fortunately there’s still around another 2 months to do it in. I’m now feeling rather confident that I will finish my product on time with all of my primary functionality and a lot of my secondary functionality implemented.
I will of course keep the blog up to date on my progress.