GUI development: should you design it or code it - Dissecting SemanticMerge, Part 3

Sunday, March 23, 2014 92 Comments

Our question here was: "should we use the designer or code an imperative UI?

As you have just seen using the Interface Builder is really simple, just drag and drop, getting used to the new controls and the UI of the designer and so on.

Xamarin Studio doesn't provide its own designer it simply relies on invoking Interface Builder, which is not bad since they’re not reinventing the wheel.

But, there are some concerns in my opinion:

Each time the Interface Builder modifies one of the .xib files (files containing XML defining the interfaces) Xamarin Studio gets notified and rebuilds whatever linked code it needs. It always worked for us with pet projects but I wouldn’t really like to be in the situation, 6 months after starting the project, with tons of code written, to find some sort of ‘conversion error’ when linking the .h files populated by Interface Builder with the Xamarin code. I hope I’m wrong here, but simply I don’t want to be in that situation.

Now, more about UI designer vs plain code: recently I read this blog post about creating “imperative UIs” with C# in the Xamarin blog. When I found this post we already had finished the SemanticMerge UI programming in “imperative mode”.

There were various reasons why we went the ‘imperative way’ and we coded our entire interface completely avoiding the Interface Builder:

  • First we wanted to avoid any potential issue with the ‘automatic conversion’ as I mentioned.
  • Prior to starting with Mac we developed a GTK# UI for SemanticMerge, to give it native look and feel on Linux. We used MonoDevelop 4 there, which is great, but its interface designer is… well, far from looking solid. So we went the ‘hardcore’ way and created the entire UI with code. It can sound like an overkill (it *did* sound crazy to me years ago) but read the next bullet point first.
  • We’ve been developing Plastic SCM ( with a WinForms UI for almost 9 years now. We always used the Visual Studio designer and… you know what? I hate it. It looks great for a toy application, you just go and drag and drop your controls and everything looks fine. But use it for a decade and you’ll find out:
    • That the infamous .resx will break or simply won’t get correctly updated and you will lose alignments or some event handlers from time to time. Time wasted.
    • At least the WinForms designer doesn’t enforce good practices: I hate when I find auto-generated names in controls such as Form1 or Label1 and so on. Of course you can ask your team to… not do it this way, but the tool *helps* doing it wrong.
    • Suppose you redesign a Form and then you need to move part of the UI inside a new panel and then add more things to the form… well, you’ll need to play with the “anchors”, cut and paste… and pray. BTW the entirely regenerated automatic code will be a nice thing to merge...
    • Since it is very easy to just “throw controls on the window” then probably many unneeded ones will hang around, like panels inside panels and other beauties.
    • Keep the right margin for buttons and controls in all forms… looks easy, but someone will have to hand write the margin space again and again… wouldn't a constant help?

As counter-intuitive as it might sound (tell it to my younger self coding a MFC UI and missing Delphi), for long running projects I truly believe it is better to go and code the UI: you can refactor code to make it more readable, you’ll think twice before adding a control, you’ll name everything correctly, you’ll just have to slightly modify the code to change the hierarchy of objects inside a window… and you won’t have to depend on error prone UI designers.

We develop Plastic SCM, a version control that excels in branching and merging, can deal with huge projects and big binary assets natively, and it comes with GUIs and tools to make everything simpler.

If you want to give it a try, download it from here.

We are also the developers of SemanticMerge, and the gmaster Git client.


Unknown said...

Excellent post. This is very useful. Thanks for sharing.

UI/UX Designing Course in Chennai

Riya Raj said...
Robbie Royce said...

Good information and, keep sharing like this.

Crm Software Development Company in Chennai

swathima said...
Savanah Eden said...

thanks for ur valuable information,keep going touch with us

Scaffolding dealers in chennai

shanthumA said...
adhi said...

thanks for your information really good and very nice web design company in velachery

Nandhakumar said...
divi said...

thanks for your information really good and very nice web design company in velachery

RoyceRobbie said...
zuan said...
zuan said...

Thanks for sharing an informative blog keep rocking bring more details.I like the helpful info you provide in your articles. I’ll bookmark your weblog and check again here regularly. I am quite sure I will learn much new stuff right here! Good luck for the next!
web designing classes in chennai | web designing training institute in chennai
web designing and development course in chennai | web designing courses in Chennai
best institute for web designing in chennai | web designing course with placement in chennai

zuan said...
sasi said...
Reshma said...
Daniel Bryan said...

I am really impressed with your blog article, such great & useful knowledge you mentioned here. Keep sharing more articles like this.

ecommerce development sydney
ecommerce design company
website development services
best web design company australia

If you own a website SEO is the best way to grow your business in this modern era. We are a Digital marketing agency providing SEO Services in Chennai. Hiring an SEO expert will increase your chances of growing your business better and faster than your competitor. So, if you are looking for Best SEO Services in Chennai feel free to contact us.

Are you looking for the dental clinic near you? Visit Dr Smilez. They provide high-quality dental treatment. Check our website and read our testimonials, what our patients say about us.

Check these links also
Full Mouth Implants
Dental Implants cost in Chennai
Zirconia Crown

Unknown said...
Unknown said...
Indhu said...

Thanks for sharing this wonderful informations.
android training institutes in coimbatore

amazon web services training in coimbatore

big data training in coimbatore

C and C++ training in coimbatore

Blue prism training in coimbatore

artificial intelligence training in coimbatore

RPA Course in coimbatore

Sandra Jessy said...

Thank you for sharing excellent information. Your web-site is very cool. I’m impressed by the details that you be on this web site. It reveals how nicely you understand this subject. Bookmarked this web page, will come back for extra articles. website design and development

sdexter said...

useful information on topics that plenty are interested on for this wonderful post.Admiring the time and effort you put into your b!.. logo design companies

Experties said...

excellent blog. I loved reading your articles. this is in reality a tremendous read for me. i have bookmarked it and i'm looking forward to studying new articles. hold up the coolest paintings! best logo design company

You must indulge in a contest for one of the greatest blogs over the internet. Ill suggest this web site! logo designers

Abdul wasay said...

Nice read, I just passed this onto a colleague who was doing a little research on that. And he just bought me lunch since I found it for him smile So let me rephrase that: Thank you for lunch! best branding agencies san francisco

Daniel Bryan said...

This is excellent information. It is amazing and wonderful to visit your site.Thanks for sharing this information,this is useful to me...
website design long island

TechMatrite said...

As an end-to-end solution, ERP software eliminates any patch-work software as well as data imports or exports outside of the unifying ERP solution. download google input tool offline

This is a great post; it was very edifying. I look ahead in reading more of your work.
best digital agency websites

I have learnt various good stuff right here, and I’m sure everyone will get advantage of it.
best ui ux design companies

Thanks for sharing this information article to us and keep sharing this info, One of the best Chatbot development services, which is the best AI based industry leading chatbot maker for your business to offer 24/7 help with live chatbot on website. Reach us or just give a call to us for chatbot development.
Chatbot app development company
Chatbot development company
Chatbot development service
Chatbot Development
Chatbot developer
Bot developer

Dextemade said...

useful information on topics that plenty are interested on for this wonderful post.Admiring the time and effort you put into your b!.. corporate identity design

A Chatbot Development is a product program for reproducing wise discussions with human utilizing rules or man-made brainpower. Clients connect with the Chatbot development service by means of conversational interface through composed or spoken content. Chatbots can live in informing stages like Slack, Facebook Messenger bot developer and Telegram and fill some needs – requesting items, thinking about climate and dealing with your fund in addition to other things. As a Chatbot development company advancement organization our competency let you find happiness in the hereafter by taking care of clients all the more intelligently to accomplish wanted outcome. As a Chatbot companies we can streamline a large portion of your dreary undertakings, for example, voice bot advancement and client service, online business advices and so on

Dextemade said...

excellent blog. I loved reading your articles. this is in reality a tremendous read for me. i have bookmarked it and i'm looking forward to studying new articles. hold up the coolest paintings! branding package pricing

Cloudi5 said...

Thanks for providing great informatic and looking beautiful blog, really nice required information & the things I never imagined, and I would request, wright more blog and blog post like that for us. Thank you once again
by Cognex
AWS Training in Chennai

Red Hat Certified Engineer is a professional who has expertise in handling the Red Hat Enterprise Linux System. The Certified Engineer takes care of various tasks such as setting kernel runtime parameters, handling various types of system logging and providing certain kinds of network operability. The professionals must have the ability to install networking services and security on servers running Red Hat Enterprise Linux.

Red Hat Certified Engineer

SEO Calgary said...

I really loved reading your blog. SEO Calgary

Unknown said...

thanks for sharing.Security License Course

Very interesting blog. Many blogs I see these days do not really provide anything that attracts others, but believe me the way you interact is literally awesome.You can also check my articles as well.

Security Guard License
Ontario Security License
Security License Ontario
Security License

Thank you..

Well, it’s a nice one, I have been looking for. Thanks for sharing such informative stuff.
UI design company

Thank you for share us. For more information visit our Best App Development Company in Hyderabad

This post is really meaningful for those looking for innovative ideas , website development and boosting up your business can be brought up to speed with selecting better options for your business solutions, magento website development services
give it a go , Cheers!

krnphrneseng said...

Thanks to this news blog. You write so much, it's very good. I like your news blog

Priya said...

Great Post,Very well written post
Data Science Course Hyderabad

Great article with valuable information found very resourceful and enjoyed reading it waiting for next blog updated thanks for sharing.
typeerror nonetype object is not subscriptable

Sam Daniel said...
This comment has been removed by the author.
Shaani said...

It's always equally an exceptional write-up it's my job to undeniably appreciated checking out. It is far from conclusively day-to-day it's my job to improve the way to determine just about anything. Tech

ichuuuu said...

The overall look and feel of your website is awesome. Thank you for giving me good information

I was browsing the internet for information and found your blog. I am impressed with the information you have on this blog.

Business Analytics Course in Bangalore

Hi, I looked at most of your posts. This article is probably where I got the most useful information for my research. Thanks for posting, we can find out more about this. Do you know of any other websites on this topic?

Data Analytics Course in Bangalore

123456789 said...

BPS IT Services in India is one such SEO organization who is right now focussing on expanding the positions of sites without any preparation since we pay attention to SEO benefits because of its five critical points of interest. SEO Services

Wow, your article is very helpful and supportive.

Facebook Marketing Agency
Marketing Solution
Web Developer
SEO Service

EXCELR said...

Thank you for your post, I look for such article along time, today i find it finally. this post give me lots of advise it is very useful for me !data science training in Hyderabad

Mike Johnson said...

Of course you should design it and make video for youtube how you design it. On this site you can get youtube views for your video

dk said...

This is why it is better that you should linked review before developing. It is possible to post superior send that way. Technology

siva said...
Excelr Tuhin said...

keep up the good work. this is an Ossam post. This is to helpful, i have read here all post. i am impressed. thank you. this is our site please visit to know more information
data science courses

Web development is related to creating a website and web-based application. Mobile development refers to mobile app development like iPhone app development and android app development.
For more info: lapisstag

This is additionally a generally excellent post which I truly delighted in perusing. It isn't each day that I have the likelihood to see something like this..
data science course in delhi

Unknown said...

Best hosting is iPage, I have used many hosting services for my blogs and website.
I feel comfortable with ipage why because ipage provides 24/7 customer services.
For a small businesses, ipage is more comfortable.
By real hosting reviews ipage hosting review

Looking for Responsive websites affordable web design, web development, responsive web design services in UAE, India or worldwide?
Find out more:

I am overwhelmed by your article with an excellent topic and valuable information thanks for sharing.
Data Science Course in Bangalore

Devi said...
Unknown said...

Good information you shared. keep posting.
data scientist training in aurangabad

360DigiTMG said...

This Blog is very useful and informative.
data science course

Priyanka said...

Attend The Data Analyst Course From ExcelR. Practical Data Analyst Course Sessions With Assured Placement Support From Experienced Faculty. ExcelR Offers The Data Analyst Course.
Data Analyst Course

jhansi said...

SAP stands for Systems Applications and Products in Data Processing. SAP, by definition, is also the name of the ERP (Enterprise Resource Planning) software as well as the name of the company.
tally training in chennai

hadoop training in chennai

sap training in chennai

oracle training in chennai

angular js training in chennai

Huongkv said...
stevencombs said...


tike mik said...

They need to be cultivated; you will need a good lead management system to keep track of these leads. I have found personally that my leads are usually 6-10 months out when they first contact me. I have obviously also received the I need a home NOW leads as well but they are very few and far between. Webdesign Limburg

Protechnoid said...
This comment has been removed by the author.
Protechnoid said...

In this advanced world everyone is running behind something. Just relax and take sometime to check out the amazon quiz contest which goes live daily 8 am to 12 Pm try your luck and find if you can win amazing prizes daily. You can find the amazon quiz today answers at our website protechnoid.

tike mik said...

Greenhouse Design, build, host and grow successful business websites for all types and sizes of business and organisation. Whether you need to inform, drive-up sales, build your brand, or grow relationships with existing customers, a Greenhouse Design website will deliver measurable results. Webdesign

best design firms
We offered him simple concept and then he made a work of art!

tike mik said...

It calls for countless hours in front of a computer, learning, reading tutorials, and trial and error until you get it down. But learning is only the beginning now you have to make a portfolio, and look for work. The competition on free lance job boards is fierce. Webdesign

arshiya said...
Maneesha said...

This post is extremely easy to peruse and acknowledge without forgetting about any subtleties. Incredible work!
data scientist training

Ahsan12 said...

Great. Thanks for sharing.
best seo services company

Wir bieten Informationen und Empfehlungen rund um Software, Digitalisierung und Digitale Transformation in Banken.
crm in banken

As always your articles do inspire me. Every single detail you have posted was great.
data science course in delhi

360DigiTMG said...

Thanks for the information about Blogspot very informative for everyone
data science course

Maneesha said...

It's late discovering this demonstration. At any rate, it's a thing to be acquainted with that there are such functions exist. I concur with your Blog and I will have returned to assess it more later on so please keep up your demonstration.
data scientist course

Nice and very informative blog, glad to learn something through you.
data science course in delhi

Welch said...

thanks for sharing with us this visa