Showing posts from 2014

New website branding - 2nd attempt

About one month ago I posted an initial design for the new responsive website page header. Here's how the mobile version looked: At the time I said I would like change this to place the "branding" and the "Menu" button on the same line but I hadn't worked out how to do it. I've pretty much sorted it now, so here's the revised version: I'm happier with this version since it takes up a lot less vetical space. I'd also decided against using the "hamburger" icon on its own to represent the menu - in the first version I simply used "MENU" instead as being understandable by everyone. In the later version I've appended the hamburger icon to the text. The appearance of the header on larger tablets and laptops / desktops has been altered very little. There's just a change to the "home" and "search" icons (I'm now using Font Awesome instead of GlyphIcons) and the serif font used for the strapline ha

New Website - App pages mock up

After having mocked up the branding (i.e. page header) for the new website I've now turned my attention to content. After looking at some designs I like around the web I've come up with the following look and feel for the site's software pages. The mock-up is for one of my applications , but I'm considering using the same style for Delphi library projects. Here's the 1st draft of the design as it displays on larger tablets and desktops: And here's how it appears on mobiles or small tablets: Finally, to anable comparison, here's the current site showing similar content for the same application: What do you think? Any comments are welcome.

New website branding - 1st attempt

I think I've got the website header sorted sufficiently well to give it a public airing. The idea is to keep the original colour sheme and to show the site name in roughly the same style as used on the current site. But now the font's changed and it's rendering text and CSS instead of using an image. It's coded using Bootstrap . Here's the new header as it will display on larger tablets and desktops: There's a change in the site navigation: the old site places it down the left hand side of the page while the new site uses a horizontal bar under the branding. I'm using the Bootstrap navbar but I've tried to change the appearance by moving the branding out of the navbar. I've also changed the navbar colour scheme to match the branding. The biggest change is the inclusion of a search box in the navbar. Here is how the header appears on phones and small tablets: The navigation moves into the drop down menu on the mobile version and the "strap-line&

Long overdue re-design of

The current version of has been around for years. It looked quite modern when it was released, but not now. Far from it. So, the time I'm been putting off for so long has arrived: a re-design is in the works. Not a simple refresh, but a root and branch re-design and re-build. I've got four design goals: The new site must be responsive - the current one looks aweful on phones and small tablets. A want a fresh, clean and uncluttered look and feel - it's currently dated and cluttered. The content needs to be leaner - there's just too much stuff on the current site so a lot of it's got to go. Also, this is the only way to make the job manageable. The underlying code needs an overhaul too - the site's JavaScript is pre-historic and the PHP just grew over 12 years from procedural via PHP 4 style classes with a smattering of much nicer PHP 5 style OOP. Big job for one man then. Especially one who has not kept up to date with modern web programmin

New Major Release of CompFileDate (File Date Comparison Utility)

Pulling together the loose ends to release the BDiff / BPatch Utilities yesterday must have triggered a tidying loose ends gene. Because now I've been motivated to put the finishing touches to some code I wrote a few months ago that significantly extends the capabilities of my CompFileDate File Date Comparison Utility. As a result CompFileDate v2.0.0 was released today. This Windows command line app now lets you specify what operation is used in the comparison of file dates: ">" (i.e. file 1 is later than file 2), "<" (i.e. file 1 is earlier than file 2), "<=", ">=", "=" or "<>". You can also compare files' last modification dates or creation dates. Finally, when comparing the dates of shortcuts there is the option to compare the dates of the shortcuts or the dates of the shortcuts' target files. Download the executable code from either SourceForge or GitHub . The source is maintained in the d

New release of the BDiff / BPatch utilities

After a mere five year wait I've finally pulled together the hacking that's been going on sporadically over the intervening period and released an update to the BDiff / BPatch utilities. It's only a minor update that fixes a couple of minor bugs, but underneath there's been a major refactoring from largely procedural to mainly OOP code: it's all been modernised and Pascal-ified, making it harder to see the code's C origins. What's more the project has been moved from Subversion to Git, hosted on GitHub as delphidabbler/bdiff , making it easier for anyone who may want to fork it or contribute. Pull requests are welcome. For me it represents a return to coding after about 3 months lay off. I just got bored and disillusioned with it all! Possibly more on this later.

Been casting value types to stuff into TStrings.Objects[]?

On numerous occasions I've had the need to store simple, record and interface types in variable or fields of type TObject and had to use some horrible casting to do it. For example, you may resorted to doing stuff like this: var SL : TStringList ; Value : Integer ; begin SL := TStringList . Create ; Value := 42 ; SL . AddObject ( 'some text' , TObject ( 5 ) ) ; .. . end ; Not nice! Things get worse when the size of the data type is greater than SizeOf(TObject) and this kind of horror is needed: var SL : TStringList ; R1 , R2 : TRect ; PR : PRect ; Idx : Integer ; MyRect : TRect ; begin .. . // add some strings and objects SL := TStringList . Create ; R1 := Rect ( 0 , 0 , 42 , 56 ) ; GetMem ( PR , SizeOf ( TRect ) ) ; PR ^ := R1 ; SL . AddObject ( 'some text' , TObject ( PR ) ) ; R2 := Rect ( 1 , 2 , 3 , 4 ) ; GetMem ( PR , SizeOf ( TRect ) ) ; PR ^ := R2 ; SL . AddObject ( 'some more t

When Did The Delphi Language First Support ...?

If you're like me and try to write library code that's compatible with several different versions of Delphi you have probably had cause to ask "When did Delphi first support XXX feature?" I have. A lot. And then I forget and have to research it all over again. So, I've created a small table of various language and other features of Delphi along with the version where they were introduced. I've had the page for a while now for my own use, but it occurs to me that others may find it useful. If you're interested, view it here . Now, I'm not guaranteeing it's 100% accurate, and it's far from complete. And now the ask. If you know of any other features and the version when the were first introduced please leave a comment and I'll add it to the list. Also, if I've made a mistake, leave a comment about that too so I can fix it.

New blog for CodeSnip stuff

Up to now lots of news about my CodeSnip program has been posted on this blog. That's really been off-topic in that I first conceived this blog to be a place to post some occasional musing on programming. So, Ive now set up the new CodeSnip blog that I'll use for CodeSnip announcements and the like. I'm intending for this blog to become the central hub of all CodeSnip news in future. Therefore if you've subscribed here mainly for the CodeSnip stuff, it would be best to subscribe to the new blog instead or as well.Sorry if that inconveniences you.

Workaround for a bug in SourceForge's Blog RSS feed

I've just been setting up a new blog for CodeSnip on SourceForge (of which more later). On setting up a FeedBurner feed for the blog I've come across a bug in the SourceForge news RSS feed that breaks FeedBurner. The problem is that FeedBurner (correctly) treats the value of the SF feed's &ltguid> tags as valid URLs and uses them as destination URLs of some links. Unfortunately the &ltguid> tags in the SF feed are not valid URLs and this causes FeedBurner to generate bad links. The RSS specification states that &ltguid> tags should signal whether or not they contain valid URLs by means of an isPermaLink attribute. The tag's value must be a valid URL if isPermaLink is true but must not to be treated as a URL if the value is false . The attribute's default value, when not present, is true . An here's the problem: SF doesn't provide an isPermaLink attribute and so FeedBurner assumes the value of the &ltguid> tag is a va

Considering changing license of Code Snippets Database snippets

I'm considering changing, or more accurately clarifying, the license that applies to the snippets in the Code Snippets database . At present the code is covered by this rather vague statement that is written to the top of any unit generated by CodeSnip or the online database reader app : { * This unit may be freely distributed and used on the condition that this * comment is not removed from the unit. * * ... * * The source code contained in this unit is made available on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. The code is used * entirely at your own risk. * * ... } While a slightly different statement appears in any exported snippet: here's an example: { * This code snippet was generated by DelphiDabbler CodeSnip Release 4.8.5 on * Sat, 01 Feb 2014 14:02:09 GMT. It is made available on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. The code is used * entirely at your own risk