It’s been a bit quiet for both Angular and ng-sydney lately, although as a consultant I’ve been seeing a lot more projects using Angular in the wild than I thought I would, and as an ng-sydney organiser, I’m working on the group bit. But this post is about Angular.
The biggest thing that happened to Angular recently was having Minko Gechev join the Angular team, working on the Angular CLI.
Minko is the creator of the Angular tslint rules that ship with the CLI (called codelyzer).
He also created many other open source tools, like ngx-quicklink which downloads lazy-loaded Angular routes in the background if they have visible links, for super fast browsing.
He has been helping the CLI quietly ship awesome features in 7.x minor versions, like conditional pollyfills.
But this is not the only quiet official release happening in Angular universe. Angular 8 first beta also came out last week.
It seems to be just the right time for betas to start rolling, so that the final release can be on time for the usual March / April timeframe.
The first beta focuses mainly on Bazel, Google’s build system that talks to Webpack and others to make the build faster. It’s also highly expected that Ivy, the new Angular templates compiler that promises smaller size, better performance, and enable new features like component lifecycle hooks (unrelated to React Hooks).
That’s it for now, till we continue the conversation in the next Open Talk session…
This time I have played a bit with the schedule and the order of sections. The idea is to experience different ways and hear your feedback on what works better. either on twitter or by email (simply replying to this message).
bind once for Angular.JS < 1.3
A set of directives that allow you to bind values to the UI only once instead of watching for model changes to update the UI. This is particularly useful when you have a long readonly list inside ng-repeat where most properties are unlikely to change until the entire list changes (and then the whole template will be re-rendered).
The concept is now native in Angular.JS 1.3, and there are other libraries that try to enhance it, like angular-watch-require and angular-watch-when.
If you use require.js and want to have lazy-loaded modules with it, there are several tries out there that get that sort of thing done. If all you want though is just lazy loaded modules that are loaded and bootstrapped on the fly when a certain route tree is matched (like areas in ASP.NET MVC Areas or Rails Namespaces). Might be good for large Angular.JS apps. It also has been mentioned on the Adventures in Angular podcast.
A very nice article about how we don’t exactly implement MVC as 3 parts, Model, View, and Controller. We usually had other parts too. I think the closest way to how I implement MVC is the last picture in the article.
I have a few links for Ember.JS this time that it will feel like I’m moving to it, although I’m not, I still find its innovation very inspiring as you’ll see below.
Mistakes I Made in My First Ember Project
If you have been following the newsletter for a bit, you know I value knowing how other SPA/MVC/MV* frameworks solve the same problems that Angular.JS solves. I think this knowledge is beneficial regardless of the framework because many of the issues have equivalent in every framework, and thinking about different approaches can really help you get the most out of whatever framework you use.
Building rich single-page application with Ember.js
Historically, one of the things that stopped many people from learning Ember.JS was how hard it was to get to understand its pieces. This is now changing a lot (or may I say changed?) with better documentation and more great guides, like this one, which was very simple and lovely to browse.
Traceur is Awesome! … but still a little Painful
Don’t be turned off by the title. Traceur is a nice tool from Google to compile ES6 code to ES5 code that can run in any ES5 browser (most browsers, and even older ones can be polyfilled). This post describes what the experience is like when using it (.NET people might find using TypeScript a better option for its VS integration though, although it’s not not exactly ES6, you can sometimes go even crazier with some F# mix).
Video: Advanced Debugging Techniques with Chrome
A must see video of what goodies exist in Google Chrome dev tools (including some of the relatively new features like new enhancements to emulation), this is probably a must-watch video for you. I have been using the tools for years and found quite a few things I didn’t know before.
JS Parse and Execution Time
When you use a framework (quite often you should), there’s only so much you can control in terms of performance. This article examines the time it takes to parse and execute jQuery on so many browsers and devices. It has some interesting observations, like how the total times vary like crazy between different devices, and how device hardware is still the major determinator is hardware rather than software (OS or browser).
Security – HTTPS
I think we are in the (very?) early days that will lead to all websites running HTTPS by default. Apart from privacy concerns, SCARY attacks, there’s also industry leaders push and relative ease of implementation. But it’s not something that everyone needs to worry about just yet.
SSL and SEO: Don’t Panic
There are a few messages that I want to send from sharing this:
1. Google announced they will consider SSL as one of its many ranking factors
2. This doesn’t mean you should freak out if you are not using SSL (the point of the link above)
3. But SSL is worth it anyway, as in most recent hardware and software (including IIS 8 and maybe 7.5) it’s already fast (the traditional old concern about SSL, apart from cost for tiny websites).
Slides: Is TLS fast yet?
If you are thinking about implementing HTTPS and worried about CPU performance, your server documentation documentation should tell you whether there are significant performance overhead (I checked some common ones and they were all saying nothing to worry about). This presentation helps assure the same idea.
Cloudflare – Introducing Universal SSL
The well known CDN provider Cloudflare announces availability of SSL services for all their plans, including their free plan. They serve files in HTTPS, and can be configured to pull assets (as source files to publish on the CDN) from HTTPS URLs as well. Here’s a basic write up of how to use it.
Security — General
Waxing Poetic with SwiftOnSecurity
I didn’t plan to make this newsletter mostly about security as it ended up being, but this story that reminds us of how some users can be so vulnerable in a way we can’t blame them for, is quite a good read.
Microsoft — Windows 10
Video: Windows 10: Enterprise Features & Core Experience for Businesses
You must have seen a ton of Windows 10 videos already, for me, this was pretty much the deepest one of them that related to me as a developer and showed the philosophy of the product.
One fun moment in the beginning of the video was giving a reason for the name, Windows 10 (instead of Windows 9), apart from considering Windows 8.1 as 9 (if you want) which the video didn’t suggest, it said that the main idea was calling it Windows One, similar to Xbox One and One Drive, etc. Windows One was taken as Windows 1, so they went for Windows 10! (if this is silly still – I think it was meant to be more funny than true-, I promise the rest of the video isn’t).
Video: Scott Hanselman Detailed Windows 10 Tour in just 8 Minutes
Scott is very well known in the ASP.NET developer community as his work at Microsoft is mainly around that community and ASP.NET MVPs, etc. He is a great person and speaker. His Windows videos are not something that he does for work, which makes them even greater and more realistic.
Windows 10 Insider Program / Preview
Just in case you missed the URL to get the technical preview! I have heard a few positive comments from some of those who played with it, especially on a Surface laptop (of course).
I was checking the last version of AngularJS now and noticed a new version, 1.3 beta 1 is now available. The last 1.2.x release is 1.2.14.
Interestingly, beta 1 doesn’t seem to have any big fixes or features. The changes presented only include a fix for using <tfoot> tag as a top-level parent of Angular template, and being able to use <style> tags in your Angular templates.
The features only include supporting new <input> types, in particular date, time, datetime-local, month, and week.
A Quiet Release
One interesting thing about this release is that there is no official blog post about it. Actually all the other minor versions (1.2.x) didn’t have special blog announcements, and the team said they’ll only do it for big releases. I’d still have thought the first Angular.JS 1.3 public release to be considered big though!
The only mention in the release notes goes to an old post dated in December last year, that informs about the removal of version 8 of Internet Explorer.
The Big Change: Bye bye IE 8
The obvious and only breaking change in the first beta of AngularJS 1.3 is removing support of Internet Explorer 8. The so-called-breaking change doesn’t remove IE8 specific behaviors or workarounds. It only removes IE8 from test configurations, but you probably expect more breaking changes to follow.
Is removing IE8 support a real problem?
I think it is. Well, removing it is not news, but it still is a tough step at least on the short term.
According to the new stats published by TheNextWeb (originally from NetMarketShare), Internet Explorer 8 is the world’s most popular browser version at the moment, and it’s increasing in popularity (even if only by a fraction percent):
IE8 unfortunately regained 0.48 percentage points, and it’s still the world’s most popular browser at 21.73 percent
Compared to Chrome:
At 16.84 percent, Chrome continues to slowly recover its losses in 2013, and is getting close to finally passing Firefox. Chrome 33 only managed to grab 3.70 percentage points, which would have been higher if it was available for a full month. Chrome 32 grew to 3.07 percentage points to 9.86 percent, while all other versions were down: Chrome 31, Chrome 30, and Chrome 39 fell a combined 5.91 points.
Yes, things are better if you ignore browser versions:
Nevertheless, for February 2014, StatCounter listed Chrome as first with 43.89 percent market share, IE in second with 22.49 percent, Firefox in third with 19.21 percent, Safari with 9.74 percent, and Opera with 1.34 percent. The only part everyone agrees on is that Safari and Opera are not in the top three.
But still, obviously browser versions are still a thing even for ever-green (automatically updating) browsers` stats, so, it’s even more important for non-automatically updating browsers.
Bonus Note: Following Up With Angular.JS Releases
The best way to know whether there is a new version of Angular.JS, and get a detailed list of all changes that can help you decide whether to upgrade to it is the official ChangeLog file on Github:
My new video featuring @TathamOddie on maintaining your personal brand both online and offline is now up…
Tatham Oddie is a well known public figure in Microsoft world as he speaks in so many .NET conferences around the world and is an active contributor to several high profile open source projects like WebFormsMVP.
In this video Mohamed Meligy interviews Tatham on online personal branding and ow you can makes the best out of people you meet in social media and offline groups. Tatham shares his experience on how to make it easy for people to recognize you and communicate with you for both social and business benefits.
In case you didn’t know, NodeJS v0.10.0 has been recently released, a number of interesting changes were mentioned in the blog post, mainly around making some core APIs easier to use, which required several in changes in the codebase to support, and caused some interesting performance characteristics changes .
I couldn’t wait, so, I looked for the Windows x64 installer, downloaded and ran that, the usual Next .. Next .. installer, well, until I saw this installer step:
Although I can’t think of a scenario where I’d deselect any of these, just the fact that I could clearly see and choose what Node installer will do was great. I have an interest in the NPM part installation behaviour you know, this screen gets me pretty close to more understanding and utilization of this understanding, which I may blog about later.
This is an open letter I wanted to share with you…
Anyone doing software development on Microsoft platform? (or knows someone who does)
I think I may have a challenging opportunity for you.
I work as a Senior Consultant for Readify Pty Ltd. Readify is an Australia-wide software consulting company specialised in Microsoft technologies. We have a lot of MVPs and ALT.NET developers (for example, we have the writers of Castle and Autofac IoCs, and Linfu dynamic proxy used in NHibernate, among many others including several worldwide technical speakers and book writers).
The company is also specialised in hiring the top 10% developers all over the world (so, if you have friends from Egypt or any other country, they are also welcome to apply).
Some of the company’s recent awards:
– Microsoft [[ Worldwide ]] Software Development Partner of the Year 2012 – Microsoft Australian ISV Software Development Partner of the Year 2012 – Microsoft Australian Software App Partner of the Year 2012 – BRW Best Places to Work Listing for [[ 2010, 2011 & 2012 ]].
If you would like to learn more, and then maybe consider applying, I wrote more about what it’s like to work for Readify from my own personal perspective (including notes about the recruitment process and answers to common questions): http://bit.ly/readify-openings-2012
Readify is always hunting for the best talent all over the world, so, this is open call that you can use any time, although cool stuff better not wait
Please note that due to the very nature of Readify as a software development "consulting" company not just a normal software shop, we do not usually offer overseas vacancies for junior developers (we offer "local" internship program). This is for senior developers and beyond. Also, we do not usually offer vacancies for designers, testers, dedicated project managers, or administrators, as these roles are often handled by our clients already.
Soon after Windows Server 2012 has been released, I was wondering when hosting providers will start providing it, talking to the hosting provider that hosts this very blog, SoftSys Hosting, they told me that they already have Windows Server 2012 hosting plans, bother for Virtual Server (VPS) or dedicated servers.
I’ve been their happy customer since 2009 or before, so, I can confidently recommend them for anyone willing to have a Windows 2012 server soon.
They’re generally in the economical category (so, great cost), but I have tried others in this category before and the others all were useless for anything serious, with SoftSys Hosting on the other hand, their VPS performance, general network speed, and support responsiveness all are of a premium class.
It’s this time of the year, and DDD Sydney is taking place again by end of June 2012 :-)
Yes, it’s “the other” DDD … Developer Developer Developer!
If you don’t remember the way sessions get chosen in DDD is that call for submissions is first open for everybody for a couple of weeks, then the submitted sessions are listed for public voting for similar time (or so). Anyone can choose up to 10 (TEN) sessions that they want to have available if they decide to register for attending the event. Later, most voted sessions are what gets into the event agenda.
The registration is usually open by voting time (now!), although more actively publicized after the vote is closed.
My Session Proposals
Like last year, I have submitted some session proposals for DDD in the hope to get one of them voted most to deliver within the day.
You can see all submissions and vote for the ones that interest you most from here. I have included a copy of my submissions here in case you find the page hard to read (or just zoom-in a bit).
Introducing ASP.NET Web API (Level: 100)
ASP.NET Web API streamlines the development of HTTP services especially for developers with even little ASP.NET MVC knowledge. Being separate from WCF removes a lot of the effort and provides really simple configuration.
This session introduces ASP.NET Web API, and some of the obvious questions about it, starting with what it’s like to develop services with it, what power the service controllers share with and how they differ from any standard ASP.NET MVC controller for routing, filters, model binding, and managing common HTTP request/response aspects.
Then it gets into handling common scenarios like authorization, validation, content negotiation, custom JSON formatting (e.g. for dates), and OData capabilities, as well as showing the differences between hosting your services with ASP.NET hosting vs. self-hosting.
Back to Basics: Understanding Twitter OAuthentication (Level: 300)
Most people who provider Twitter Authentication use managed wrapper libraries around Twitter REST API. Some libraries are better than other libraries in certain areas, where they are more feature complete, faster, or easier to use for specific tasks. If you put some understanding of how the process of communicating with Twitter OAuth (and other APIs) works, and use the libraries with awareness instead of just letting them do their “magic”, this not only allows you to mix and match libraries and usages (like storing the user login in DB for background operations if your app requires this).
This presentation introduces how Twitter OAuth works from a client application perspective, and shows how different popular libraries encapsulate this and you have extra control on the process and storage of your users login tokens and how they can mapped to ASP.NET forms Authentication, and how you can reuse those tokens later with different library or different executable/service having the same application identity.
If you ever got confused trying to understand how Twitter OAuth process is like, or how to troubleshoot common issues with it, or even achieve a related advanced task, this session is for you.
As a sort of bonus, the presentation also shows quickly how to use FormsAuthenticationExtensions NuGet package to store extra information in ASP.NET forms Authentication ticket, as well as an introduction to Twitter XAuth, usually used for mobile (and desktop) apps.
LESS CSS for .NET Develoers (Level: 200)
LESS provides a number of handy extensions to CSS that developers especially love most. In this session, we go through those features and where they fit for modern web development. We also go through the .NET developer experience working with LESS, from IDE integration (using Visual Studio) to build integration and minification, and some bonus tips for large projects.
Introducing jQuery Plugin Development With jQuery UI (Level: 200)
This session shows how to simple jQuery plugins to use jQuery UI plugin widgets, as well as providing some tips for large applications implementing their components as jQuery widgets, and some bonus tricks around optimizing your jQuery code for better overall page performance.
Call To Action
Now it’s your turn, I again highly suggest you vote for the sessions you like here.
Also, once the announcements are made more widely about the already open registeration, tickets usually fly very quickly, so, to guarantee a ticket to DDD Sydney, you better register early from here (costs A$25).
Readify, the great consulting company where I work now, is hiring for Senior Developer (Consultant) and Senior Consultant positions all across Australia, and sponsors work visa for accepted international applications. You can apply here: http://bit.ly/readify-openings.
You can also just sit down and write an introductory letter about yourself why you think you may be a good fit for Readify, attach your resume, and send it TO email@example.com CC firstname.lastname@example.org (and I’ll ensure it’s processed, even though this normally not much needed).
And it’s all still current!
If you come here thinking “This must be outdated”. Don’t worry, Readify is always expanding and hence is always hiring too.
Except after this post was originally written, Readify was honoured several other awards as well:
Through blog, twitter stream, and more, you probably saw me talk about how awesome it is to work here at Readify. Being in the same company with Tatham Oddie (the creator of WebformsMVC and tons of other things, and frequent speaker in MIX and other events), Richard Banks (the father of ALT.NET Sydney, and great Agile master), Krzysztof Kozmic (the Castle Windsor guy), Philip Laureano (the creator of LinFu dynamic proxy, used by default in NHibernate),, and .. the list is so long actually, and I have missed most of them…
Not just that, through my work at Readify, I have had the chance to play with a lot of technologies and frameworks. Windows Azure, OData, WebformsMVP, Windsor, Autofac, SQL Server 2008 R2, ASP.NET MVC, jQuery, jQuery UI, knockoutJS, HTML 5, CSS3, and have all sorts of geeky conversations about the newest hypes like Windows 8 and VS 11.
Note that some other technologies people use here include WCF, WPF, Windows Phone, and more…)
Readify is a consulting company. Working as a consultant is nice in that you always go to new customers and work with different projects all the time. It’s very unlikely that you stay at the same customer for more than 6-12 months, and it’s not so rare to have 4-12 weeks customer engagements.
If you like what you see, and want to be part of it, then I have some good news for you.
One of the nice things about Readify is rapid growth. Since Readify started, it has always been hiring and expanding in size (more than double sometimes) every year. This is a scary thing if it happens once or twice, but if happens every year, this is sure a great indicator.
All across Australia, accepting overseas candidates
So, it’s 2012, and Readify is hiring for the (still?) new year. in brief, we need Senior Developers (consultants), and Senior Consultants (like team leaders), to work for Readify in our various branches in different states across Australia.
You don’t have to be located in in Australia already to join Readify though (but happy to be). We actually are 4 Egyptians here distributed across Sydney, Melbourne, and Perth and expecting more to join soon.
First thing you’ll want to check what it means to be a Senior Developer or Senior Consultant at Readify, what the responsibilities are like, and what Readify expects from the candidates applying for each of these positions to decide which is best fit for you, and maybe navigate a bit across the website as a whole (http://readify.net) to learn more about the company as a whole.
Once you do that and feel comfortable, send an email to the recruitment address (email@example.com) or use the online application in the selected position page.
Feel more than free to quote this post in your application, CC me and/or mention this post as your reference (such a pleasure, thanks!), or just send it normally (it’s the same from the process point of view).
I also highly recommend you check the recruitment process page, to know what expect after you apply:
As you probably guessed, you don’t have to mention this post in your application, but I’ll sure be more than happy fi you do!
Update 1: Can you CC me?
As some people asked, yes, it’s OK to CC in your application email to Readify. I will “not” make any difference to your application as Readify recruitment process is already optimized and begins pretty quick, but I wouldn’t at all mind if you CC me.
Update 2: What about the visa for international candidates?
Another FAQ I have been getting is “what about the visa?”. Readify sponsors a 4 years temporary business visa for accepted overseas candidates and their family (partner, kinds), and provides lawyers to assist you in lodging and following up the visa application.
The final offer is obviously conditional based on the government approval of the visa.
Update 3: What if I fail? Or Can you review my resume first? etc.…
OK, first, Readify is trying to maintain a standard of hiring only top 5% of the world developers. You need to decide first whether this is a challenge you want to take.
Your CV won’t make a big difference as long as it doesn’t look horrible or unrelated to position. In most cases you’ll get back a coding puzzle to solve (and return Visual Studio solution), After that there is an HR interview (very friendly one), and then a technical interview and debugging test (given a problem in Visual Studio while the interviewer watches your screen online to see how you approach the problem s/he gives you, which is more important than the solution itself). The rest is more of an administration stuff really and people are unlikely to fail at.
But most importantly, if you fail at any step, you get back a nice feedback about which areas you need to improve to meet Readify’s (high) standards. It’s also all OK to work on those areas and re-apply after a year or even few months (going through all process again).
Update 4: What’s the difference between cities / states to live in?
The most common cities are Sydney, Melbourne (has the Readify head office), Perth, and Brisbane. Each of them has some benefit. Most Egyptians only heard of Sydney, Melbourne has a nice cultural nature (including Muslim university, various cultural places & events), Perth is “very” fast growing business city, moving quickly from a small city style to a mix of the good in both, and Brisbane is known to be a very beautiful city in general. I only live in Sydney, which is getting crowded now to be honest. I think for Egyptians maybe Perth and Melbourne are the best choices, while I pretty like Sydney and hope to visit Brisbane still,
You don’t have to decide now though. If you get accepted in first or second step, google those cities, see pictures and comparisons and decide which is best for you.
الحلقة 21: محمد مليجي يتكلم عن برامج التحكم بالمصدر الموزعة Distributed Source Control
يتكلم محمد مليجي عن حلول البرمجيات المستخدمة للتحكم بالشيفرة، و بالأخص منها الحلول الموزعة مثل جيت Git، و ميركيوريال Mercurial، ذكر محاسنها و عيوبها، و متى تستخدم. ،كما ذكر بعض النصائح المتعلقة بها و كيفية التعامل معها بالشكل الأنجح
So, for my Arab friends, the last episode of DotNetArabi (which -as the name suggests- is a .NET focused podcast, a bit close in style to HanselMinutes and DotNetRocks, but in Arabic) has been released, and it’s featuring me, talking about Version Control Systems.
I have been on DotNetArabi back in 2009 talking about ORMs. In the new episode (recorded June 11, 2011), I discuss the current options of Source/Versioning Control Systems (VCS). Starting with classic ones like TFS/SVN to the Distributed Version Control (DVCS) ones like Git/Hg. Sharing some stories of myself and others working with various options, and giving some tips and tricks around not only choosing a VCS but facing some tough situations in branching and even work-politics (yeah) when it comes to using those.
نادرا ما أكتب في مدونتي بالعربية، و إن كنت أستخدمها كثيرا على تويترو فيسبوك. وبطبيعة الحال أكثر أصدقائي من مصر و دول عربية مختلفة، لذا سعدت لاستضافتي في دوت نت عربي منذ حوالي شهرين. وهي المرة الثانية بالنسبة لي إذ كانت الأولى في 2009 وتحدثت عن الـ Object Relational Mappers و نقل المعلومات بين قواعد البيانات و بين الكود.
الحلقة الثانية نشرت هذا الأسبوع، و فيها أتحدث مع عماد العشي عن الـ Source/Version Control Systems أو برامج الحفظ على الملفات و ترتيب النسخ و تبادلها (نعم، أتفهم أنكم تعرفون المصطلح الانجليزي أكثر)، أتكلم عن الخيارات المتاحة التي نعرفها جميعا ثم ننتقل في الحديث للنظم الموزعة Distributed Version Control و الفرق بينها و بين النظم المركزية التي نستخدمها جميعا، و ألقي بدلوي و ما فيه من قصص مع أنزمة مختلفة (لي و لغيري)، و بعض وجهات النظر في استخدام كل نوع.
أرجو أن لا تكون الحلقة مملة بالنسبة لكم، و أن تكون دردشة مناسبة لرحلة بالباص أو السيارة أو القطار مثلا لئلا أضيع لكم وقتكم.. رابط الحلقة: