God I wish I had my copy of Homeworld: Cataclysm with me out of storage right now. So nostalgic for that game.
I’ve been messing around with fractal generation in code tonight. The first two are ones I’ve created myself, the rest are some amazing ones I’ve found from the internet.
Maths is pretty incredible.
Because nothing says “I’m a developer” like pizza and late night coding on a Friday night in the office!
This is just a quick article to hopefully dispel some common misunderstandings of the ASP.NET MVC Post/Redirect/Get Pattern. First up, a quick explanation of what the Post/Redirect/Get (or PRG) Pattern is for those who don’t know.
Reading about this pattern via another article (to follow) on how to cut down the model validation code in MVC, and I’m happy to see that most of what I’ve been coding has followed it fairly closely. Need to make a couple of changes but it should be fairly simple to do.
I was up til 2am last night working on one of our lead projects for work. There’s no particular rush to get things done for it within a certain time frame, but it’s been bugging me and more often than not I just get an urge to binge program some stuff and get some new creativity flowing. Between the late hours is when I find myself most productive, and it’s nice to be able to work through the evening if I feel like it and then just come in to work a little later the next day.
So this particular project has been released for about 9 months now, and since then I’ve developed the way I do my data access layers a bit. I’ve been working on other stuff (mostly a style revamp and a couple of new features, so I thought I’d take the time to revisit some of the core framework and try and structure it a bit better. This has resulted in significantly less configuration files being needed - there used to be two per data model but now both of those are gone for each of about 35 different classes. It’s also allowed me to make the whole thing unit testable, which makes me very happy going forward. One of my next tasks is going to be to write all of those tests so that in future if we change anything (and I will be changing things!) I can have the confidence of knowing I’ve not broken something somewhere.
Other things I’ve been working on are upgrading everything to the latest version (Entity Framework and the Amazon file store service in particular), and renaming things where they didn’t make sense (a “CustomerActionItem” is now more appropriately called an “Alert”!).
Day-time work has mostly been preparing new report pages for our main customer project, and making bug fixes and general changes where the customer has spotted something they expected to see a little differently. Got a meeting with them tomorrow to show off what we’ve done over the last two weeks. Fingers crossed!
Well-designed code is much easier to maintain, optimize, and extend, making for more efficient developers. Three high-level, language-agnostic aspects of code design are key to achieving this nirvana: system architecture, maintainability, and reusability. All three may be attained via the module pattern, whose extensible structure lends itself to a solid system architecture and a maintainable codebase. Anthony Colangelo shows how to craft our code into well-organized components that can be reused in projects to come.
The “Module” design pattern discussed in the article above seems to be a nice way of handling this, so I’m going to try and implement this across the page and see how it works out.
I was sorting through some old school papers to throw away before I move house, and I found these little gems in there!
I don’t think I ever posted this here, but this is the remote controlled Lego crane I mentioned. There’s a Mindstorms brick inside all of that yellow Technic, which is running the Java LeJOS software to control the motors for the caterpillar tracks (independently) and the crane arm motor. You have to manually switch between the crane functions which is what you see me doing when the camera moves around a bit.
The whole thing is controlled by a wireless Xbox 360 controller which connects to a C# application on my laptop, and the control signals then get sent via Bluetooth to the crane.
It was a hella fun experiment to do!
During the short period that I have been coding, I had the privilege of working with some of the best developers, using some of the most advanced tooling available, both of which has thought me many lessons, most the hard way.
Because I’m giving a session on some of these ‘practices’, I thought I’d summarize them in a short blog post.
One of those “Eureka” moments I talked about. There’s some advanced concepts in this post, but nevertheless important ones to know and think about early on.
If you’ve not heard of SQL injection before, take the time to read this link. If you work in a language other than PHP and want to learn more in a more familiar context, running a quick Google for “SQL injection” plus your preferred language will bring back a host of results.
This problem is one I’ve seen time and again across applications - both in websites and on desktop programs. It happens to large companies as well as small ones, and yet it’s easily avoided by taking a few simple steps. PHP has built-in methods to do so, ASP.Net MVC handles a lot of it for you too. But essentially it comes down to sanity checking any information a user passes to you application.
I was once performing some testing in a previous job where I discovered a developer (let us call him Developer X) had forgotten to account for this in a search box on one screen. It let you type in text to alter the database query that was running to bring back a list of company information. I explained to the developer the problem and left him to fix it. When I got the program back, his solution was hard-coded to prevent users from entering single-quotes in the search box.
This is one of many worrying tales I could tell about that person, but I’ll save the rest for another time.