Categories
Article

Cool CSS3 Gradient Animation Effect

An interesting way to get background gradient animation with CSS3 – basically by using a larger background image and moving the position on hover.

Check out the original article .

Categories
Product Review

How to Be A Human Lie Detector – Course Review

How to Be A Human Lie Detector is a course about – you guessed it – how to detect lies. This is done by learning how to notice microexpressions, body language, voice changes and even differences in the language employed when answering a question.

The course consists of a few hours of videos, plus a few downloadable PDFs. The videos are light and pleasant to watch, and fairly concise.

Overall, it took me about 4 hours, although I really think I should go through some of the critical videos again to actually learn the stuff beyond a basic level. Recommended if you are interested in the topic, but I'd wait for one of Udemy's coupons instead of paying full price.

Categories
Product Review

Rails for Zombies Redux/Rails for Zombies 2 – Course Review

I recently took the Rails for Zombies Redux and Rails for Zombies 2 courses on CodeSchool. I had already learned some Rails on a Software Engineering Course , but I thought these would be helpful, specially since I didn't touch anything on Rails after I finished the course. I also intend to rewrite the user key generation/retrieval of my software to use either a Rails app or WordPress.

The courses are interesting and fairly light. They consist of short videos and usually very simple challenges, that mostly just require you to read the notes. There is a zombie theme on the code (which is mostly about a Twitter for Zombies), that lightens up the topic somehow. The challenges take place in an easy to use in browser coding system. You just type some code and click submit (keyboard shortcuts don't seem to work on Chrome), and get the results.

Challenges always worked fine, but I found that on some courses on CodeSchool video simply refuses to play. However, I just downloaded these, so problem solved  (except for not having closed captions).

On the subject of Ruby and Rails, every time I learn something new about it I am usually more impressed about how clever and easy things are.

Overall, the courses are quite useful, but they don't really compare to the Software Engineering Course – which covers much more material and had actually challenging course work. However, it took me about 30 hours, while both of these took around 8 hours, so it is not really a fair comparison.

And I also learned some stuff on the Zombie courses that were not on the Software Engineering Course (including some new bits introduced in the latest versions of Rails).

Rails for Zombies Redux is a free course, so if you are interested in the topic it is a good place to start.

Categories
Book Review

Design Patterns Explained – Book Review

I read Design Patterns Explained: A New Perspective on Object-Oriented Design – by Allan Shalloway, James R. Trott early this year.

Unfortunately, I forgot to review it till now, and I'd like to do so for the sake of completeness. Naturally, the book is no longer as fresh on my mind, so it will be a tad quicker than usual.

Overall, the book is good. I think I still prefer the original Design Patterns book, but it was much drier. This is on has slightly less information, but has some very good ideas on how to approach an analysis problem with design patterns in mind.

Recommended, specially if you couldn't get through the original Design Patterns. Otherwise it is a little redundant.

 

Categories
Software Release

New Watermark System for STG FolderPrint Plus

For the latest version (4.09) of STG FolderPrint Plus I am trying a new watermarking system.

The old system (in the left, below) used a large graphic with Unregistered when printing. This didn't look good and has problem in some printers.

The new system changes the name of every 15th file in the file list to **STG FolderPrint Plus Trial Version**. Opening the file and other operations still work, and if you save, it will load with the right name, too.

They are currently going through A/B Testing (so any given install may have either version).

New Watermark System
New Watermark System
Old Watermark System
Old Watermark System
Categories
Book Review

Microinteractions:Designing with Details – Book Review

MicroInteractionsMicrointeractions:Full Color Edition: Designing with Details, by Dan Saffer, talks about microinteractions – the small details of programs or sites.

These can be as small as a password verification widget that just tell you all the rules – instead of making you submit several times and mentioning one specific rule that you broke. Or Chrome's find tool showing every instance in the scrollbar. Every app is full of microinteractions.

The book goes through several interesting techniques on how to design these small details so that they are as useful as they can be. It also has plenty of great examples of smart microinteractions (some of which I have seen before, but never stopped to think about how clever they were before).

I really think reading this book will help my user interface design in the future. Very useful, short,  and recommended to app designers.

As a quick note – the ebook version (MOBI, from O'Reilly) looks great on Kindle on an iPad.

Categories
Product Review

Oxygene – Review

Recently, Embarcadero has released their new Delphi XE5, which has iOS support (and will have Android by the end of they year) as part of a Mobile Pack.

I have used Delphi since the first beta (and earlier, I used Turbo Pascal), and given how tablets and smartphones are more and more surpassing the numbers of PCs, I am naturally interested in my options.

But one other option for Object Pascal fans is Oxygene – a RemObjects product that was sold for a few years as Delphi Prism.

Language

So, what are Oxygene's advantages vs Delphi? To start up, the language has a bunch of really, really cool features – such as:

– Future Types – you assign a variable, and the value is calculated in a separate thread – it only blocks execution if you need it before the calculation is done.

– Parallel Loops – for parallel i:Integer :=0 to 10 do will complete the work of the loop in multiple threads, automatically.

– Asynchronous statements

– Class contracts – for those that are not familiar, contracts add pre and post conditions (as well as invariants) to a method, so that you can guarantee that all input and output went as predicted.

– Colon operator – calls member if not nil – object:a:b just returns nil if any of them are nil. This saves a lot of conditionals testing for nil at each step.

– declaring variables (and assigning!) as they are used – very useful for smaller variable scopes, which really help readability.

Oxygene also comes with a converter for Delphi, C# and Java code. It is not perfect, but it is quite helpful, and depending on the code it might work right away with no changes required.

Components and Platforms

Oxygene already has support for native compilation to .Net (Windows as well as Mac and Linux via mono), Java (including Android) and Cocoa (iOS and Mac OS X). Note that support is fully native, not through a library as Delphi uses Firemonkey. The advantage of that is that every control is fully native, and you can use any library or component.

However, that has the disadvantage that you will be doing a new UI for each platform you target. And you will need to learn how to program to each of those, as they are quite different.

Oxygene has a clear advantage as far as components go – most (if not all) .Net components will work seamlessly. If you use Delphi and Firemonkey, your choices are extremely limited (although TMS Software has released a few nice ones).

And I am afraid that Firemonkey components might never show up – specially for developers that went through Kylix (such as Developer Express, who took a huge loss developing for it and only getting tiny amount of sales as a result) and Delphi.net – products that only lasted a few years.

Speaking of TMS Software, they have released Firemonkey components that have native Mac and iOS control sets. Of course, at this point, you are back to developing several different UIs.

Price

As far as price goes, here in Brazil Oxygene has a clear advantage. The product with support to all platforms is available for US$700 (ask sales for your Delphi cross-grade price, specially if you have a Prism license!).

Embarcadero Brazil only provides prices through quotes (and I can't see the US prices through their sites).

The quotes I have received for the Pro version with the Mobile Pack comes to US$2380 (or US$1650 for the Pro upgrade plus Mobile Pack). Ouch!

IDE

Oxygene comes with Visual Studio Shell. I only used it briefly on my Oxygene trial, but I have always heard great things about it. In my minimal testing, it loads up pretty fast (around 15s). I have tried a few of the included samples, and they all compile in a few seconds. Intellisense is much, much faster than what I usually get on Delphi.

It takes quite a while to install, but probably less than Delphi XE3 did (I didn't measure it). Needed a few system restarts, so it couldn't just be left unattended.

Refactoring support on Oxygene currently has only a Rename refactoring. Delphi has plenty of refactorings available, plus extra from third-parties such as Castalia or ModelMaker Code Explorer. I have used both of these and they are pretty good – the built-in Delphi refactoring often fails for me.

Mobile – Android and iOS

After installing the Android SDK, it is very easy to compile Android apps in Oxygene. You just do a build normally and the APK and JAR files are created in a matter of seconds. You can copy the APK to your Android device and use it right way, or run it in the emulator – which works well but is really, really slow. It is usable for simple programs, though.

I didn't test the iOS part – it requires a Mac. I imagine a service like MacInCloud would work, too.

Documentation

Oxygene documentation is weak. They have a wiki, but it is clearly a work in progress. Of course, except for the specific language stuff you should be able to use .Net (or Android/Cocoa) books, of which there are plenty. I have only seen Bob Swart‘s books for the latest Delphi versions (they are good, though).

Conclusion?

Frankly, so far I have no idea which one to choose.

Oxygene already supports native Cocoa/Android, as well as Linux/Mac via mono. They have a clear advantage on components for Windows. Documentation seems weak. They are also bound to get new tech from Microsoft simply by being .Net – which also helps on framework documention (Microsoft Documentation, as well as .Net books).

BTW, Hydrogene is a related product to Oxygene. It isn't public yet (however, I asked sales, and they told me what it is) but the idea is very good and I imagine it will be big.

[box type=”info” style=”rounded”]Update (31/Mar/2014): It is now public, and Hydrogene has a new name: RemObjects C#. It is a C# compiler just like Oxygene that compiles natively to iOS/Mac/Android and .Net. And you can mix and match (for example, if you already have Pascal code in Oxygene, or if you have experienced C# programmers) modules in both C# and Oxygene.[/box]

Delphi's advantage for me (and I imagine, for many interested in Oxygene) is that I am already well familiar with it, having used it for many years. I have tons of components as well as several programs released using it. Not having to learn about Cocoa or Android to develop for them is also a major plus. No talk of Linux support so far, though.

I'll update this review as I learn more.

Update (07/Oct/2013): I have been reading on the wiki and there are a ton of other language features. Here are some I particularly liked:

-extended constructors: create new objects and assign to fields at once – with p := new Point(param1, param1, x := 10, y := 20) do.

– Case with strings and case with types

– if and case expressions – inline, like ternary syntax but with case support too:

MessageBox.Show( (if SingleUser then
‘Are you sure you want to remove this user?'
else
‘Are you sure you want to remove these users?'),
MessageBoxButtons.YesNo)

and

result := ‘text: ‘ + case aValue of
0: ‘none';
1: ‘one';
2: ‘two';
3..5 : ‘several';
else
‘many';
end;

– Duck Typing/Soft Interfaces – basically allow you to use any class that has the same methods as the interface as if it was the interface (without having it implement the interface formally). Can also work even if not all methods in the interface are implemented, but then it is not type-safe at compile type.

 

 

Categories
Book Review

Working Effectively with Legacy Code – Book Review

Working Effectively with Legacy Code – by Michael Feathers – covers how to refactor and add features to legacy code without breaking it. Legacy code, in the book, is just code without proper tests.

Of course, refactoring code without tests is always dangerous because it might be much harder to find any new bugs you have introduced.

The book covers many techniques with steps you can follow to make it easier and safer to apply these changes. The steps are well explained, with many good examples. There is also plenty of coverage on how to introduce tests on code that wasn't made with unit testing in mind.

Use of techniques in practical problems is also covered in the chapters before these sections, with titles such as I Can't get this Class into a Test Harness or This Class is too big and I don't want it to get any bigger.

There is some cross over with the Refactoring classic, but even in those cases the different context makes this worth your time.

Strongly recommended to anyone that needs to work on codes without tests.

Categories
Product Review

Udemy iPad App – Review

Udemy has plenty of cool video courses.  I have reviewed a few of them before on this blog, too.

They have been talking for a while about their iPad app, so I decided to try it out.

I am glad I did – it is very, very good. You can just get it for free at iTunes, and enter your Udemy login. Very quickly you will get a list of all your courses (presuming you have any, of course).

That was pretty much what anyone would expect. However, there were a few nice extras:

– It knew exactly where I had last stopped, in the middle of a video.

– It can quickly download all the video of the course so that you can watch off-line.

– My favorite – it can play videos at any speed from 0.5x to 2x (1.25x and 1.5x seems to be the sweet spot for me on the iPad – more than that distorts the audio too much). I used to do this by downloading the videos myself and playing on GOM Player, but most courses don't allow video downloads lately (seems silly to me, as they are not hard to download anyway – but it is much more time consuming).

Overall, a very good way to watch your courses, specially to make the best of time waiting on the bus, subway, doctor's office, etc.

Categories
Product Review

Pluralis Conversion Optimization – Review

Pluralis is a service that requires a more complex description than most, because as far as I know it is unique. The best way I can think to describe it is a cross from design contest sites with conversion optimization.

The basic idea looks like pure genius. Essentially, you pick up anything you want to optimize on your site, create a contest and allow conversion specialists to improve it however they want. At this point you choose what versions you want to test, and their A/B Testing system (presumably you have to add a javascript snippet on your page) shows who won. You can then award the prize or restart.

Looks great in theory – you don't have to find your own expert (and figure out if he is an expert in practice). And unlike general design contests, you can have hard data on which option is better.

(I apologize if I got anything wrong – their current pages are not clear at all and for reasons I will mention below, I just saw the basics)

If you subscribe, you can also use their A/B Testing system yourself, for US$19 per month.

I did start up the “Try out for free” part, but all you get is to enter minimal information about a contest, and on your first login they already ask for your credit card (without any mention of any free time period). That is not what I'd expect as “Try out for free”. This is effectively less informative than their video.

It is probably worth mentioning that I was invited to check the site out, based on my Optimizely review. I also got what seems to be a generic invite to try them on an e-mail that is only used on the Whois of my domain.

Overall, all I can say that Pluralis seems like a great idea.

I'll update this if I ever do get a full trial with them.

Update (18/Sep/2013): I got an e-mail from them asking the number of hits per month of my page (from the Try out for Free thing). The plan they suggested would be US$19 per month, plus US$387 for 3 expert revisions (this is the minimum). Obviously at these prices, if you have any sort of reasonable sales numbers, you'd get your money back very soon.

However, I'll probably not try them out myself, given how new the service is and the lack of reviews.