Ben Heymink

Software Developer - Javascript/Angular/node/C++/C#/MAPI/Outlook

Page 2 of 3

Telerik Just Code – First impressions

I’m a long time avid user of Whole Tomato’s Visual Assist software at work, and can’t imagine life without it. Saying that, I’m probably not using it to it’s full potential, as the only features I seem to use from it are the ‘Open corresponding file’ button (jumps to the header file for a class or vis versa) and the automatic spell checking (it underlines comments and text I have mis-spelt).

I love the way it modifies the default text colouring that Visual Studio provides to make it easier to spot members, methods and the like, and I even occasionally make use of its ‘Refactor’ menu; it provides a quickly accessible (on the right-click menu) way to generate a method stub for anything you’ve just written, or to extract a block of code into a method. This week I’m going to try out a (competing?) product from Telerik, their Just Code add-in for Visual Studio.

A quick glance at the feature sheet on Telerik’s website shows a lot of features familiar to a user of any Visual Studio productivity add-in; Code navigation, symbol highlighting, refactoring options,  automatic formatting and method stub generation. Look further however, and you’ll start to see  some more advanced features not normally found in lesser add-ins; code-analysis, on-the-fly error checking, code-cleaning and….cloud sync?! Awesome!

Just Code's 'Cloud SYnc' feature lets you maintain your settings across any number of Visual Studio installations

Installation

After downloading the Just Code free trial from the Telerik Website, I closed my Visual Studio window and started the installation. Installation took about 2 mins to download and install and I was ready to go. As a side note, I was even impressed by thier installer; it gives you a number of options to additionally install some other Telerik products:

After installing and launching Visual Studio again, you are presented with a well designed welcome screen that gives you a brief overview of the features now at your disposal. Again, everything seems to have an amazing level of polish and professionalism from what i’ve seen, and if the spashscreen alone is anything to go on, we’re in for some quality stuff here. I may even have to look into the WPF controls Telerik offers based just on this screen and the installer!

Usage

Anyway, enough boring stuff, how is it in use? The answer – awesome. Firstly, Just Code is FAST. I can’t impress enough how annoying it is to wait for Visual Studio to load slow add-ins, or to wait after navigating files while an add-in catches up. Just Code appears snappy and responive in use. The next thing I did was display the Just Code ‘Errors’ window. This window is designed to show real-time errors/warnings in your code, so lets see what it says about my little dummy program I wrote for the purposes of this review:

Oh. Well here’s the first negative thing I have to say about Just Code; it shows you just how bad you are at coding! Just to give you a comparison to the above screen, here’s what the built in Visual Studio ‘warnings’ window currently looks like alongside the Just Code one above:

No contest really! As an aside, I couldn’t find an equivilent feature (real-time errors/warnings) in Visual Assist, although it does provide the same underlining in the code editor window for warnings and errors. I find the Just Code window much more useful though, it’s nice to see all your warnings/errors in one place, rather than searching through the code for them.

One other cool thing I discoved whilst playing around thismorning was the ‘Format Code’ feature hidden away in the Just Code menu. It allows you to highlight a chunk of code and hit Ctrl+Alt+F, at which point Just Code will ‘Format’ the selected code (read: make my sloppy code look pretty). For example, look at his horrible snippit of code; inconsistant spacing, inconsistant indentation, un-matching bracket spacing, just a mess:

After Just Code ‘Formats’ the code:

I agree, it won’t be a often-used feature if you write clean code to begin with, but it’s little features like this I love!

Options

When it comes to customization options, I was plesently surprised at what Just Code had to offer. The add-in offers a single pane for configuration with an expandable tree list in the left hand side for navigating the various components available (should be familiar to those of you used to Visual Assist!). One of the more important ones for me is the ability to control exactly what the Code Analysis reports:

For example,  I think I may choose to display unused variables as an error instead of a warning; no reason something like that should ever be checked into a production source control environment.

The Just Code user options also provides a wealth of control over the individual colour highlighting, code snippits and navigation options.

C++ Support

Unfortunatly, it doesn’t look like Just Code offers any support for C++ developers. Understandably they would not be able to offer the full suite of features that they can provide for C# projects, but it would have been nice to see at least minimal support for C++. Hopefully it’s something they’re working on!

Not tested:

I should point out that I did not get round to testing the built-in unit test runner feature of Just Code, but is something I will look to do in the future.

Conclusion

Just Code offers a much larger and polished feature set than Visual Assist, whilst being sold for the same price point ($249 for the individual product at time of writing) The Cloud Sync option will be indispensable to developers working on Visual Studio installations both at home and at work, and the built in feature-set should satisfy most developers, although the lack of C++ support is sorely missed.

The Good:

  • Highly polished
  • Huge Array of features
  • Competative pricing
  • Coding assistance on typing!
  • Cloud sync!

The Bad:

  • No C++ support 🙁
  • Will take some time to unlearn key-bindings/shortcuts from other add-ins!

John Hopkins – ‘Vessel’

Just stumbled across this guy, mind=blown. He’s an electronic producer who just makes the most lush arrangements I have ever heard. Give the track a chance; it blows up about halfway into something beautiful!

DJ-Kicks Mixed

Found this dark and moody track on Spotify, what better track to try out the new Embed feature they’ve just published!

By the way, out of the box, WordPress doesn’t seem to support iframe tags, so I downloaded a little plugin to allow me to insert the Spotify embedded code.

Music Time!

Time for some more music introductions. This track is from Belgian producer Benoit Franquet under his project name ‘Pole Folder’. It’s an amazing downtempo electronica song with some lush vocals. Enjoy!

Objective-C: Properties!

If you follow good OOP principles in your day-to-day coding you would normally encapsulate an object’s properties and provide access through a pair of accessor (getter/setter) methods. Objective-C simplifies this somewhat by providing the @property keyword. Using this keywords helps avoid having to write the tedious getter/setter methods for each of your instance variables, while maintaining the ability to specify the behaviour of the getter/setter pair. The two parts to a declared property then, is its declaration and its implementation.

Declaration

The declaration of a property takes the following format:

@property (attributes) type name

Where attributes lists one or more additional details about the storage behaviour and other behaviours of the property. I won’t discuss details of all the possible values in this article! The other two pieces are simply the type of the instance and its name. Lets quickly look at how an example property would look as defined in a simple class. Below I have a class Car that derives from a superclass Vehicle, and I have defined a single simple property to store the age of the car:

@interface Car : Vehicle
@property int CarAge
@end

The above property declaration line is equivalent to having declared the two individual accessor methods like so:

@interface Car : Vehicle
- (int)CarAge;
- (void)setCarAge:(int)newValue;
@end

But like I mentioned, using the @property syntax allows us to specify how the methods themselves are implemented. You can read more about those property declaration attributes here.

Now, so far so good, but all we have done is to define our property accessor methods; we still have to implement them! Luckily, Objective-C provides another keyword, @synthesize that tells the compiler to ‘synthesize’ the setter and/or getter methods for a property (provided you haven’t already supplied them within the @implementation block).

Now, depending on what ‘Teach yourself Objective-C’ book you read, you will see this @synthesize declaration implemented in one of two ways – let’s reuse the ‘CarAge’ example above and see how two different books might show it implemented:

Example 1
@implementation Car
@synthesize CarAge
@end

Example 2
@implementation Car
@synthesize CarAge = _CarAge
@end

When I first saw this I was confused…why did some books include this bizzare ‘ = _(Variable)’ syntax?

Well it turns out that use can use this form propertyName = someOtherName to indicate that the compiler should use a particular instance variable should be used for the property. In the above second example, this would mean that an accessor method for CarAge should be synthesized and that the property ‘CarAge’ is represented by the instance variable ‘_CarAge’. TThis becomes immportant when dealing with legacy runtime versions; the modern Obj-C runtime supports automatic instance variable synthesis, whereas the legacy runtime does not- i.e. for legacy runtime support you must either provide an instance variable with the same name (CarAge, in our example)  and same type (int) as the property or specify another existing instance variable in the @synthesize statement (using the PropertyName = ivar syntax).

However, in the modern runtime, if you do not provide an instance variable (as in my Car example), the compiler simply adds one for you. A legacy compiler would generate an error, since there is no explicit instance variable defined for CarAge.

Hope this explains a bit about the odd syntax – it caught me out at first!

Skyrim is beautiful

I managed to snap a great screenshot from some in-game action while playing Skyrim. This picture is completely unaltered and shows just how much work Bethesda put in to the landscapes of the game – in fact, everything/everywhere you can see in this screenshot is fully explorable, even those mountains in the distance! If you haven’t tried Skyrim yet, do it; it’s an amazing game.

 

Bluetooth notebook mouse keeps disconecting

I’ve been in an onsite training course all week with my laptop and my trusty Microsoft Bluetooth notebook mouse 5000, but found that after a while, the mouse was becoming unresponsive – if I left the laptop for a couple of minutes and came back to it, the mouse, whilst still on, just didn’t seem to be working! I eventually tracked the problem down to the following culprit:

 

Un-checking the box specifying that we want the computer to be able to power off the device fixed the issue. – I should mention, this dialogue is accessible through the ‘Device Manager’ -> ‘Bluetooth Radios’ -> ‘Properties’.

Initialising instance fields in structs

HACK ALERT! I’d be interested in hearing what people think about this little trick I’ve found – it uses the C# coalescing operator to allow me to declare instance field initialisers within a struct, something you usually can’t do! Consider:

struct AStruct
{
public int foo;
}

Pretty normal. What you can’t do however, is this:

struct AStruct
{
public int foo = 1;
}

However, we can ‘abuse'(?) the coalescing operator to give us the equivalent functionality:

struct AStruct
{
int foo;
public int FOO { get { return foo ?? 1; } }
}

Like I said. Bit of a hack, but cool anyway.

f.lux review

I stumbled across a little piece of free utility software (Windows & Mac) a couple of weeks ago called f.lux, and its premise is simple; it sits quietly in the background on your system and dynamically adjusts the colour temperature of your computer monitor to best match the time of day you’re currently in. Whats this means is that you tell it where you are in the world, and leave it to do its thing:

f.lux user preferences

F.lux only includes a handful of options, but once you've set it up, you'll rarely need to touch it.

 

I’ve been using it for a couple of weeks now, and it really does do what it says on the tin. Gone are the harsh, glaring computer monitors at night, instead you’re left with a soothing, warmer colour; much easier on the eyes. Ok, ok – so I might have bought into their marketing a bit too much, but I don’t think Id like to use a computer without it after using it! There is a somewhat loose claim on their website that using f.lux could attribute to a better nights sleep, and I don’t think I could either support or argue against that, but I will say this- when you are sat are your desk and the monitor suddenly fades to a warmer temperature, you suddenly become thankful for it, especially if you are sat in darkness. My eyes seem to…’relax’ a bit whenever this happens, so it must be doing something right.

The app is free and very unobtrusive – no pop-ups, nagging reminders, registration screens etc. And uses just 4MB of memory whilst running on my windows box (and apparently about 28MB on my iMac)

 

It’s available for Windows, Mac & Linux from stereopsis.com

Miami Horror – Holidays (Sposhrock Remix)

Music time again! This one is from Canadian producer ‘Sposhrock’ and his remix of Miami Horror’s ‘Holiday’. Awesome stuff.

« Older posts Newer posts »

© 2017 Ben Heymink

Theme by Anders NorenUp ↑