Cuma, 06 Ekim 2017 / Published in Featured, Mobile, Networking, Technology, Uncategorized

But you’re also being evaluated as a person; your attitude, the words you choose, the way you dress, and yes – the way you look as well, are all constantly on display to everyone you meet and form relationships with.

This can be a make or break issue to a freelancer looking to grow their client base. We’re going to look at some of the ways that nurturing your freelance reputation can mean the growth of a highly successful career, and how to go about doing it.

Everyone’s a Critic

We all judge everything and everyone we encounter on a daily basis. When you meet with a potential client, you automatically judge whether or not they’re worth working with.

When you walk into a coffee shop, the barista is judging whether or not they should sell you a cup of coffee, or politely ask you to leave. They say that first impressions last a lifetime, so when you present yourself, or your work, to a potential client, take the time to put forth an image to be proud of.

One of the most vital ways you can show off your good side to potential clients is in your communication style. I once hired a designer on the spot based purely on how I overheard her speaking to others. She was authoritative, sincere, and polite, with exceptional social skills and a palpable confidence that permeated her posture and the way she spoke.

My first impression of her was that “here is a person who knows what she’s doing – if I hire her, I can relax knowing that she can do the job.” As a freelancer, you always want to strive to make this kind of impression on people. You never know who’s watching – it could be your next big client.

Ingredients for a Good Reputation

There are three things you should be striving for when building a reputation: being liked, being trusted, and being respected. These three things go hand-in-hand, and in no particular order. When people like you, they trust you. No one trusts someone they don’t like. And only once people trust you are you able to earn their respect.

As a designer, you must learn to cultivate a likeable, trustable demeanor, so that you can leap over your competition and get the clients you really want. This can be difficult, especially if you’re more comfortable in front of a computer than in the middle of a crowd, but you can get started by changing the way others perceive you.

You might not feel perfectly at ease, at first, but with a bit of observation and practice, you can be projecting an air of likeable, trustable confidence in no time.

Ask and Listen

You may be wondering “well, this is great and all, but how can I change the way I come across to others?” I’m not saying it’s going to be easy, but you can be strategic about developing better personality traits that will foster a good reputation.

Ask people you know for their honest opinion of how you come across, and – here’s the important part – listen to what they tell you with an open mind. Are you consistently hearing that you’re too pushy? That you interrupt others too often in conversation? That you come off as too arrogant, or too shy, or too eccentric?

We all have personality flaws, but only those willing to endure and listen to honest criticism can ever hope to overcome them. After all, you can’t improve on something you don’t even know is a problem.

Another great strategy, when developing things like posture and social skills, is to practice in front of a camera. Not just a mirror – it’s important to record yourself speaking, answering questions, etc. so that you can see what your weaknesses are in order to improve them.

It’s astounding what just a few hours of practicing can do to improve your communication skills. Playing back your recorded attempts may be painfully embarrassing, but you will rapidly improve.

Don’t Lose Sight of the Goal

It takes time and effort to change your reputation, so be sure to catch critical errors before they cause permanent, irreversible damage. Once your reputation drops below a certain threshold, it can be impossible to ever recover fully.

Celebrities are a great example. Famous people are often given a lot more chances to prove themselves than the rest of us are, but I’m sure you can all think of at least a few celebrities who have done something so heinous that even their well-oiled PR machines can’t fix the damage.

Oftentimes, these people don’t even realize that what they’ve done can forever alter people’s perception of them – and a celebrity’s entire career is at the mercy of public opinion. But when you’re rich and famous, it’s a lot easier to lose sight of reality and make fatal blunders that can spell the end of everything.


To conclude, maintaining your good name requires lifelong vigilance. Being a likeable person is the most important step in getting ahead, getting clients, and expanding your social network. If you consciously, consistently think about the way you’re perceived by others, you’ll always be prepared for anything that might make an impact on your reputation.

Be constantly setting goals and actively improving your personality traits. Get honest feedback and establish a systematic way to change your behavior so that you come across the way you want to.

Cuma, 06 Ekim 2017 / Published in Featured, Mobile, Networking, Technology, Uncategorized

We live and work in a field that is ever-changing and as hard as it is for us to keep up with technology, clients can’t possibly be expected to.

You Get the Contact

I’m going to assume you already made contact with a potential client, and that’s where this article will step in to help you out. And now that you have that contact, you’ll inevitably have to setup a meeting with them to discuss what they are looking for and what you can provide.

There are some things to note here and keep in mind when meeting with the client that I believe are contrary to much of the “traditional” information out there.

  1. You’ve heard it said, “Say yes and figure out how to do it later.” That’s probably not the best idea in our industry as doing something like that will most likely either make the project not worthwhile monetarily or cause you loss of money you most likely don’t have. There are instances where this will work, maybe something in HTML or CSS you don’t know how to do but have seen it done, but don’t jump into languages you don’t know and assume you can “get it done” or “figure it out.”
  2. Take the job no matter the budget. If you’re starting out as a freelancer, you’ll most likely have to do some of these, but don’t make it a habit. Clients with no budget are usually one of two things. (a) They don’t want to pay a professional but expect professional work or (b) they “just want it done” no matter how it looks or functions. Either of these is just plain bad news. You will either have a client from (you know where) or it won’t even be portfolio worthy making it worthless to you in all senses.
  3. Your initial feeling of the client goes a long ways. It doesn’t take much time to get a vibe from someone and clients are no different. Don’t get swooned into doing work if you think the outcome of the project is going to be poor. Easier said than done, I know, especially when you need the money. But trust in your gut and pass on it if you have an uneasy feeling.
  4. You’re interviewing the client as well. Many people think that meeting with a client is so that you can impress them and they’ll pick you as a choice over other freelancers or agencies. Remember that you’re interviewing to work with them as well. Take particular note of the item above and don’t work with them if you don’t like their style.

The initial meeting, as I said above, is an interview from the client to you and from you to the client. Don’t let them take the upper-hand here as it will only set you up for failure further down the road.

What to Take with You

If you’re meeting with the client on the phone or Skype, just make sure you’ve examined their site thoroughly and done some research on their industry and competitors. But if you’re meeting in person, there’s a very simple list of things I recommend you take for the meeting.

  • Sketchbook. I’ll go into this in more detail later on.
  • Marker. For sketching should you have an idea. Use a marker so that you don’t delve in too much detail.
  • Pen. For taking notes…do not use it for sketching an idea.
  • Business Cards.

And that really should be it. I never take a computer unless the client tells me to specifically. This helps to establish that you are a creative and not just someone that knows how to work a computer design program. The sketchbook and marker are your best friends at this point of the process.

Get Acquainted

This is important, probably more so than even discovering the needs for the project. You’ve got to have some sort of connection with the client and if you don’t, the project will feel stiff and you’ll have little passion for it.

Now I realize there are people out there that will disagree with me when I say that we need to connect with our work and get passionate about it. But I’d venture a guess that many people in the creative field, professionals that is, will agree with me here. If you don’t have fire about what you’re working on, you’re creativity will be stifled.

You’ll have no desire, no passion, no connection. The creative field breaks all the traditional ties that many other fields have. We don’t wear suits, dress in Armani shoes, or carry a briefcase everywhere we go.

I’ve found that I get more attention from clients when I walk in wearing street clothes (but be presentable) and have my sketchbook and marker in hand. They’re hiring you to be creative and I don’t wear a suit at my desk so I don’t wear one to meetings either.

I won’t say this will work for all clients, but small to medium sized businesses typically don’t care how you look as much as they care about how you work and and the results of your work.

And to be honest, if they’re going to judge me on my looks and not my character or skillet, I don’t want to work with them anyway. So with that said, be presentable, but be yourself and you’ll get more attention and they’re much more likely to remember you.

However you look and dress is becoming less important these days. Clients look for someone they can trust. Someone that will be honest with them and will deliver when and what is promised. Ultimately, you have to convey that you are, in fact, the most capable and trustworthy person they’ve met with for the job.

This is what getting acquainted is all about. It’s about connecting and seeing if you’re right for the client and if they’re right for you.

Figuring Out The Client Needs

Not all sites will require a link to every social media site available. Not all sites will require social media at all. This is where you’re professionalism is to shine through. If you’re straightforward with the client, tell them your position on what you think would be best for them and what would work best for their users, you’ll get picked almost every time.

And if you don’t, they are probably one of the clients we described above and you don’t want to work with them anyway.

The initial meeting is imperative to be able to establish the needs (and some wants) of the client. I’m not saying you can’t give them anything they want, but be reasonable…no dancing frogs on the homepage…unless they breed frogs or something strange like that.

Talk with them about what they are trying to accomplish with their site. Below are some questions to keep in mind as you talk with them about their project.

  • Who do you think would be using this site the most and what information would they be after on it? The reason we ask who is simply because many clients use their sites more for internal use than giving to clients.
  • Do you know if your users are tech-savvy or more traditional? You can most likely tell this from the type of business they have, but it’s good to ask.
  • What is the main information you’d like to get across to the users on your site?
  • What are some sites you like within your industry and why?
  • What are some sites you like outside of your industry and why?
  • What’s your budget for the site? I’ll go into more detail on this below.

There’s plenty more questions that can be asked and can come up in discussion…these are just a few. You’ll learn over time that every client is different and you’ll have different questions for each one.

I used to have a small packet of about 20 questions I asked all my clients. It helped to find out information from them that I would need. But as time went on, I realized that many of the questions wouldn’t apply to all clients and that the ones that applied to one client had no application to another.

So needless to say, I scrapped it.

So take this time to really dig into the project with the client. Figure out their needs, write them down, and make notes of everything they say. They’ll remember what they like and want and you’ll be expected to as well.

Talk About the Dreaded “B” Word

Yes we all know that no one wants to talk about how much a site will cost. You’ll ask them for a budget and they’ll tell you they don’t have one or want you to give them a quote first.

You can explain to them that in order for you to be able to tell them right now if you can do the job or not, you’ll need to know what they are expecting to spend. They have an idea somewhere in their head. If they still won’t tell you, drop it and do your quote as if they had an unlimited budget.

At this point you’ve done all you can and if they come back on you saying it’s too much, then they already started out your relationship with a lie because they had an idea of the cost. Keep in mind that most companies work off budgets and if they don’t spend the entire budget allocated for something, they lose it at the end of the year.

I used to believe that you never gave a price up front for how much something will cost because it will lock you into that rate. But I’ve found that not to be true over time.

For one, people will often pick you because you were the only one they talked to that had an idea of the cost. That shows you’ve got enough experience to tell them a ballpark figure. It also shows you’ve researched their industry a little bit (which you should do before the meeting) and understand a bit more than even what you’ve talked about in the meeting.

With that said, it takes time to get your pricing down. So if you’re starting off as a freelancer, you may keep the price to yourself until the you’ve worked it out on paper and done the proposal.

And You’re Off!

Now that you’ve had the initial meeting, gotten the vibe you want to work with the person, and (hopefully) established a budget, it’s time to move onto the next phase. It’s best to give them a timeframe of a few days for the proposal and then make sure you get it to them within that time.

If you’re late, they may take it as a key factor for what will happen during the project.

Cuma, 06 Ekim 2017 / Published in Featured, Mobile, Networking, Technology, Uncategorized

User onboarding is important to growth because it helps convert new users into active and engaged regular users of your product.

The unique thing about user onboarding is that it’s a one-time act. The process is performed only once, right after the user signs up, so it’s challenging to design a flow that is based on a user that knows nothing about your product or service and may or may not be easily distracted or bored.

What are the Goals of the Onboarding Process?

According to Ed Hallen, Co-Founder of Klaviyo, there are three primary goals to a great onboarding process:

  1. Take care of the one-time setup: For example, on Twitter, this is uploading a profile picture, entering a description, etc. This process should be painless – and better yet, fun or engaging.
  2. Generates excitement about using the product in the future. Even if people get fully setup, you have to leave them wanting to come back. This is where Instagram excels – it immediately shows the user a selection of beautiful pictures that encourages them to upload their own.
  3. Teaches the user how to use the product – by doing, not by words. Google’s introduction to MapsGL is a great example. Switch into MapsGL, and you will find a tutorial walkthrough that guides you through some of the most popular historical landmarks from all over the world.

According to Whitney Hess, the term onboarding comes from the field of human resources and the practice of introducing new employees to a business or company.

The steps in the process are often referred to as accommodate, assimilate, and accelerate — all of which apply to new users to bring them successfully and comfortably into the fold.

  • Accommodating your users means giving them the tools they need to use your product to their benefit.
  • Assimilating means helping the user to absorb the culture of the site and, in a sense, come to resemble the existing users.
  • Accelerating generally applies to delivering the value proposition better and faster.

The Top Onboarding Tools and Apps

The primary objectives of the following tools and technologies are designed to measure your customer sign-up success and empower users with useful self-service tools and content.

An effective onboarding flow essentially allows users to have a pleasurable first-time experience, lower support costs, and increase revenue for your company.


Intercom is an ultimate all-in-one customer relationship management (CRM) tool that allows you to get to know your users and their browsing habits. It enables you to communicate in real-time with your users.

The onboarding process becomes much easier with Intercom, and converting new users to become active customers is simple. It also allows you to manage all queries in a team inbox with personalized replies and timely support options.


How does your first-time user get everything at once? All your fancy features and endless use scenarios might overwhelm them and leave them frustrated with your product. WalkMe lets you add a step-by-step walk-through to your website or app. All you have to do is write your instructions for each step, and you’ve just set up a new onboarding process.

Heap Analytics

To create a pleasurable onboarding experience you first need to know who you are serving. You also need to be aware of the level of understanding of your product. Heap Analytics automatically captures every user action in your web or iOS app and lets you measure it. Once you have data, you can start testing iterations and work towards customer happiness and higher retention rate.


Onboarded claims to be user onboarding as a service, it allows you to easily add a user onboarding flow to your site, with analytics to improve engagement. Onboarded makes it easy to build interactive product tours, guides, and user onboarding flows. Great tool to get started with user onboarding.


No one can replace human interaction. The power of talking to a real person is still one of the most effective relationship building resources, and you should think of making your customers happy with a possibility to speak to a representative who’s there when your customers need it.

With Olark, when the automated onboarding scenario fails, users can turn to real people to talk about their struggles. Powerful.


Zopim is another live chat software that lets you start and respond to conversations with your users. You can answer questions or even guide them through the onboarding process step-by-step ensuring the best experience possible.


Tutorialize powers website tutorials that guide visitors around your site. It is literally ready in minutes, totally customizable and can significantly increase customer engagement. You can use it to onboard new customers or new staff members, and your developers will love the flexibility when it comes to customization.

CM OnBoarding WordPress Plugin Description

This onboarding plugin will come in handy for WordPress lovers. It’s a fully-featured guidance and engagement plugin that allows you to improve user experience by providing easy to use, accessible and intuitive help widgets which can include audio, video and text.

This is a great tool to assist your site users and answer their questions, walk them through the site, improve user experience, user satisfaction, and conversion.


Numbers don’t lie. KISSmetrics is a smart tool for tracking, analysing and optimising your digital marketing performance. Find out how your users behave, where they abandon your website and start improving your product with an onboarding flow. This tool will show you what’s working and what’s not across all of your campaigns, on both mobile and the web.

Successful Onboarding Examples

The onboarding flow is an ever changing mechanism that depends on the product, target audience and many other different factors that may influence the process.

That is why many top sites focus on the steps they know are Key Performance Indicators (KPIs) for user retention. By focusing on KPIs, onboarding experiences are designed to set the user up to experience value from the product quickly. This will help to increase the probability of users remaining engaged.

Below are some successful onboarding flow examples, that proved to make hundreds of millions of users happy.

  • How Twitter Onboards New Users – Twitter has over 270 million active users, and their previous onboarding flow brought in more than two thirds of that over the span of three years.
  • How Evernote Onboards New Users – Evernote provides a suite of products and merchandise aimed to help you better “collect and find everything that matters.” Their multi-faceted product offering led to some unique onboarding challenges – there are lots to learn from with this one!
  • How Pinterest Onboards New Users – With its 70 million users, Pinterest would be one of the 20 biggest countries in the world – bigger than France or Italy, even! Learn how they managed to get so many people up and running.


User onboarding is in no way a rocket science, but it takes time and practice to perfect. When dealing with people and the ever changing online culture, you can’t predict how your users will react to your products or services, but by gradually working on it, and by iterating your onboarding flow, you will get better at attracting and, most importantly, keeping more users.

Consider using some of the tools in this article to track, analyze, measure and improve your onboarding experience to save on costs, increase customer retention and achieve better monetary results.

Cuma, 06 Ekim 2017 / Published in Featured, Mobile, Networking, Technology, Uncategorized

When Material Design debuted back in June 2014, the face of the design industry changed considerably as designers fell in love with the language developed by Google. The system, which focuses on grid-based layouts, transition effects, and depth, soon made its way into Android apps and brought the system up to the design standard of iOS.

In the past two and a half years, the way in which the Material guidelines have been implemented has developed continuously as designers seek to push the boundaries of what is possible. It has also seen the influence of Material on web design, with multiple aspects being pulled from the guidelines including subtle interactions and card-based elements.


This beautiful example by Housing takes the basis of Material – in particular the card-based layout and depth – and implements it in a way which is both user-friendly and visually attractive.


The above example by Afrian takes what would typically be a generic-looking Material app, and expands on that with the introduction of some truly amazing features.

One of which is how the header has been extended in size and is used to house both a date picker, and a graphical representation of a check-in. The use of contrasting blue and yellow works perfectly and results in an excellent example of Material Design in action.

Facebook Live

Facebook Live’s Android application is a very minimal, yet effective example of Material Design. It uses shadowing in a way that is not typically seen; by using light shadows instead of dark to provide depth.

It makes interesting use of iconography, animation, and interaction design – key aspects of Material.


The redesign of GrabOn’s Android app implements many features of Material and even takes them a step further.

There is an abundance of depth and beautiful iconography, as well as an effective use of imagery. Card-based elements are used throughout with subtlety, and Material buttons and active elements are also implemented throughout.


Monzo’s visual design language is implemented with purpose and precision.

It incorporates key aspects of the Material language such as depth, padding, typography, and layout, while incorporating the company’s branding and visuals in the form of icons, colors and display of data. It forms a minimal, yet seemingly perfect example of Material Design.


It will be exciting to see how designers continue to approach Material Design in 2017, both on mobile and on desktop, as Android and Google itself become more and more renowned for their beautiful design philosophy and language.

If you’re looking for more inspirational mobile app designs, take a look at this post.

Cuma, 06 Ekim 2017 / Published in Featured, Mobile, Networking, Technology, Uncategorized


Bu içeriğimizde C#’ta Lambda ifadeleri ile çalışmamızı icra ederken karşılaşma ihtimalimiz olan “A Lambda Expression With A Statement Body Cannot Be Converted To An Expression Tree” hatası üzerine konuşuyor olacağız. Hiç vakit kaybetmeden bu hata neden alınmakta? alındıysa nasıl çaresine bakılmakta? sorularını cevaplamaya başlayalım.

Öncelike ortaya bu hatayı verecek örnek bir olay koyalım.

class MyClass
    Lisanca.Models.LisancaEntities VeriTabani = new Lisanca.Models.LisancaEntities();
    public void EnDogruLink<T>(string Link) where T : class, new()
        T instance = VeriTabani.Set<T>().FirstOrDefault(k =>

            return true;

(İlgili hatayı yukarıdaki örnek olay dışındaki herhangi bir senaryo(lar)dan da alabilirsiniz.) Dikkat ederseniz yukarıda Lambda ifadeleriyle işlem gerçekleştiren bir kod bloğumuz var. İşte bu tarz bir çalışmada konumuz olan hatayla karşılaşmaktayız.

Öncelikle bu hatayı neden aldığımızdan bahsedelim. Lambda ifadeleri IEnumerable tipinden koleksiyon yapılarında kullanılabilmek için oluşturulmuş bir expressiondır. O yüzden kullanılmaya çalışılan koleksiyon yapısının tipi çok önemlidir. Eğer ki bu tip direkt bir IEnumerable yahut 1. dereceden türevi değilse bu hatayla karşılaşılmaktadır.

Örneğimizde ilgili koleksiyonumuz DbSet tipindedir. Bu tip IEnumerable tipinden türemekte ama lokalde yapısal olarak farklılık göstermektedir. Haliyle bu koleksiyonu direkt olarak IEnumerable tipine aşağıdaki gibi çevirmemiz sorunu ortadan kaldıracaktır.

class MyClass
    Lisanca.Models.LisancaEntities VeriTabani = new Lisanca.Models.LisancaEntities();
    public void EnDogruLink<T>(string Link) where T : class, new()
        T instance = VeriTabani.Set<T>().AsEnumerable().FirstOrDefault(k =>

            return true;

Dikkat ederseniz AsEnumerable metodu bu işlem için yeterlidir.

Benzer şekilde ToList metodunuda kullanabilirdik.

class MyClass
    Lisanca.Models.LisancaEntities VeriTabani = new Lisanca.Models.LisancaEntities();
    public void EnDogruLink<T>(string Link) where T : class, new()
        T instance = VeriTabani.Set<T>().ToList().FirstOrDefault(k =>

            return true;

Nihayetinde Lambda ifadesinin kullanıldığı koleksiyon direkt olarak bir IEnumerable tipinde seyretmektedir.

İşte bu sorunun üstesinden de bu şekilde gelinebilmektedir.

Şimdilik esen kalın…

Sonraki yazılarımda görüşmek üzere… İyi çalışmalar dilerim…

Cuma, 06 Ekim 2017 / Published in Featured, Mobile, Networking, Technology, Uncategorized

This article was sponsored by Atlassian. Thank you for supporting the sponsors who make SitePoint possible.


Learn the basics of Git with this space themed tutorial.

Mission Brief

Your mission is to learn the ropes of Git by completing the tutorial and tracking down all your team’s space stations. Commands covered in this tutorial:

  • git clone, git config, git add, git status, git commit, git push, git pull, git branch, git checkout, and git merge

Create a Git Repository

As our new Bitbucket space station administrator, you need to be organized. When you make files for your space station, you’ll want to keep them in one place and shareable with teammates, no matter where they are in the universe. With Bitbucket, that means adding everything to a repository. Let’s create one!

  • Some fun facts about repositories
    • You have access to all files in your local repository, whether you are working on one file or multiple files.
    • You can view public repositories without a Bitbucket account if you have the URL for that repository.
    • Each repository belongs to a user account or a team. In the case of a user account, that user owns the repository. + In the case of a team, that team owns it.
    • The repository owner is the only person who can delete the repository. If the repository belongs to a team, an admin can delete the repository.
    • A code project can consist of multiple repositories across multiple accounts but can also be a single repository from a single account.
    • Each repository has a 2 GB size limit, but we recommend keeping your repository no larger than 1 GB.

Step 1. Create the repository

Initially, the repository you create in Bitbucket is going to be empty without any code in it. That’s okay because you will start adding some files to it soon. This Bitbucket repository will be the central repository for your files, which means that others can access that repository if you give them permission. After creating a repository, you’ll copy a version to your local system—that way you can update it from one repo, then transfer those changes to the other.

Git repo

Do the following to create your repository:

  1. From Bitbucket, click Repositories > Create repository button at the top of the page.

    The system displays the Create a new repository page. Take some time to review the dialog’s contents. With the exception of the Repository type, everything you enter on this page you can later change.

  2. Enter BitbucketStationLocations for the Name field. Bitbucket uses this Name in the URL of the repository. For example, if the user the_best has a repository called awesome_repo, the URL for that repository would be
  3. For Access level, leave the This is a private repository box checked. A private repository is only visible to you and those you give access to. If this box is unchecked, everyone can see your repository.
  4. Pick Git for the Repository type. Keep in mind that you can’t change the repository type after you click Create repository.
  5. Click Create repository. Bitbucket creates your repository and displays its Overview page.

Step 2. Explore your new repository

Take some time to explore the repository you have just created. You should be on the repository’s Overview page:

Click items on the Navigation menu to see what is behind each one. To view the shortcuts available to navigate these items, press the ? key on your keyboard.

When you click the Commits option on the menu bar, you find that you have no commits because you have not created any content for your repository. Your repository is private and you have not invited anyone to the repository, so the only person who can create or edit the repository’s content right now is you, the repository owner.

Copy Your Git Repository and Add Files

Now that you have a place to add and share your space station files, you need a way to get to it from your local system. To set that up, you want to copy the Bitbucket repository to your system. Git refers to copying a repository as "cloning" it. When you clone a repository, you create a connection between the Bitbucket server (which Git knows as origin) and your local system.

Continue reading %Learn Git with Bitbucket Cloud%

Cuma, 06 Ekim 2017 / Published in Featured, Mobile, Networking, Technology, Uncategorized

The following is an extract from our book, HTML5 & CSS3 for the Real World, 2nd Edition, written by Alexis Goldstein, Louis Lazaris, and Estelle Weyl. Copies are sold in stores worldwide, or you can buy it in ebook form here.

The required Attribute

The Boolean required attribute tells the browser to only submit the form if the field in question is filled out. Obviously, this means that the field can’t be left empty, but it also means that, depending on other attributes or the field’s type, only certain types of values will be accepted. Later in the chapter, we’ll be covering different ways of letting browsers know what kind of data is expected in a form.

Continue reading %HTML5 Form Attributes (Part 1)%

Cuma, 06 Ekim 2017 / Published in Featured, Mobile, Networking, Technology, Uncategorized

cat-667909Now that the ASP.NET Core tooling changes are finally here, I decided to update my blog to the new bits. Goodbye project.json and hello .csproj.

Finding the project after upgrading it, I had to look for those points of contact I had gotten comfortable using. The upgrade wasn’t painful (look back at those Beta 7-Beta 8 upgrades for that story), but knowing where they moved your cheese is important. Hopefully this post helps you with the same issues.

Moving to Visual Studio 2017

I’ve been watching the changes from using the project.json file to MSBuild (e.g. .csproj) for a while. Instead of manually updating it (which you can do with the SDK alone), I decided to just open the project in Visual Studio 2017 and let it update it for me. What I ended up with was a backup directory with my old project.json file and a couple of new files:


The .csproj file is the new way to handle the compiler settings and references for the project. While the new file, runtimeconfig.template.json file is where the GC settings were moved to:

  "gcServer": true

The project pretty much worked once we made the change with no real changes.

Workflow Changes

In the old tooling, I really fell in love with the project.json because of the way that it handled nuget package references. I loved the idea of just typing into the json and see the intellisense help me find the right package. So how does this change with the new MSBuild-based changes?

Since this is Visual Studio, your tried and true Manage Nuget packages UI continues to work (as does the Powershell window):


But I kinda hate the UI for managing NuGet packages, so I wanted other options. In Visual Studio 2017, you can edit the .csproj without unloading the project. But the only easy way to do it is with the context menu option (the csproj doesn’t show up in Solution Explorer):


You can edit the PackageReference by hand, but the intellisense is missing so it becomes a lot less interesting:

  <PackageReference Include="Microsoft.AspNetCore.Diagnostics" Version="1.1.0" />
  <PackageReference Include="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" Version="1.1.0" />
  <PackageReference Include="Microsoft.AspNetCore.Identity" Version="1.1.0" />
  <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="1.1.0" />
  <PackageReference Include="Microsoft.AspNetCore.Mvc.TagHelpers" Version="1.1.0" />
  <!-- ... -->

So I’ve dropped down to the new CLI support you have for managing references. I’m using two tools in a console window to help me with this. The dotnet.exe console

D:\working\Fun>dotnet add package Microsoft.AspNetCore.Routing -v 1.1.0

If you omit the –v, it will load the latest version. But since it won’t help you find packages, you can use the nuget.exe CLI. Using “nuget list” will let you search the nuget package repository easier than the website (in my opinion):

D:\working\Fun>nuget list Microsoft.AspNetCore.Mvc
Cuemon.AspNetCore.Mvc.Formatters.Json 4.1.2017.350
Cuemon.AspNetCore.Mvc.Formatters.Xml 4.1.2017.350
Microsoft.AspNetCore.Mvc.Versioning 1.0.3
Microsoft.AspNetCore.Mvc 1.1.1
Microsoft.AspNetCore.Mvc.Abstractions 1.1.1
Microsoft.AspNetCore.Mvc.ApiExplorer 1.1.1
Microsoft.AspNetCore.Mvc.Core 1.1.1
Microsoft.AspNetCore.Mvc.Cors 1.1.1
Microsoft.AspNetCore.Mvc.DataAnnotations 1.1.1
Microsoft.AspNetCore.Mvc.Formatters.Json 1.1.1
Microsoft.AspNetCore.Mvc.Formatters.Xml 1.1.1
Microsoft.AspNetCore.Mvc.Localization 1.1.1
Microsoft.AspNetCore.Mvc.Razor 1.1.1
Microsoft.AspNetCore.Mvc.Razor.Host 1.1.1
Microsoft.AspNetCore.Mvc.TagHelpers 1.1.1
Microsoft.AspNetCore.Mvc.ViewFeatures 1.1.1
Microsoft.AspNetCore.Mvc.WebApiCompatShim 1.1.1

In this way, you have lots of options for managing your packages, pick the one that makes you most comfortable. I like the CLI because it’s the same one I use when I’m doing VSCore work too.

Defining Build Scripts

Also in the csproj file are the scripts that you want to run during build events (e.g. before builds, after builds, before publish, etc.) For example, my scripts for getting the bower packages and running gulp before publish was migrated into the csproj file:

  <Target Name="PrepublishScript" BeforeTargets="PrepareForPublish">
    <Exec Command="npm install" />
    <Exec Command="bower install" />
    <Exec Command="node node_modules\\gulp\\bin\\gulp.js" />

What about Tools?

Finally, for the tools that were in the project.json, those are also migrated into the csproj files. They’ve been simplified to just be the name of the package. You do not need to include the package reference too, it’ll do both. For example:

    <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="1.1.0-preview4-final" />

With that, I was able to build the project and deploy it live.

What has your experience been?

Creative Commons License

This work by
Shawn Wildermuth is licensed under a
Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License.
Based on a work at

If you liked this article, see Shawn’s courses on

Cuma, 06 Ekim 2017 / Published in Featured, Mobile, Networking, Technology, Uncategorized

I know I’m going to upset some people, but hang in and read the whole article…really. In updating my blog recently, one of the changes I wanted to make was to update my use of the JavaScript framework I used for the contact page.

When I built this blog, I wanted to get comfortable with Angular 2. I shoehorned Angular 2 into the contact page as an excuse to use it. Never a good decision.

My goal with replacing Angular 2 was to remove a lot of the complexity. Getting Angular 2 up and running requires a lot of moving parts. By removing Angular 2 I was able to eliminate a lot of pieces of the build. These pieces were making my builds on Azure App Services brittle so it had to go.

As far as I am concerned, Angular 2 is meant for what the community insists on calling Single Page Applications. Basically, Angular 2 is great when you are working with large, monolithic, client-side applications. But that’s not what a contact page is.

I’ve been looking for a smaller framework for when I want have ‘islands of functionality’ in typical Internet facing web sites. I’d played with a number of them, but finally found Vue.js and my small tests of it seemed promising. So I decided to take the plunge.

By combining Vue.js and a couple of other Vue-based packages I was able to implement the contact page pretty simply. You can see what I did by checking it out in GitHub if you’re interested:

This isn’t a condemnation of Angular 2 as a SPA framework, but simply a better match for interactive individual pages in a web project.

I’ve girded myself for the reaction, feel free to respond…

Creative Commons License

This work by
Shawn Wildermuth is licensed under a
Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License.
Based on a work at

If you liked this article, see Shawn’s courses on

Cuma, 06 Ekim 2017 / Published in Featured, Mobile, Networking, Technology, Uncategorized

codesoupAre you new to ASP.NET Core? Maybe you’re building an API for your SPA, mobile app, or just your web app. I recently released a new Pluralsight course that can help you.

This new, six-hour, course covers the basics of building REST APIs with ASP.NET Core. Whether you’re just exposing your data via REST, or building microservices, this new course should have you covered.

Here is a preview of what the course contains:

The new course covers:

Reading and Modifying Data with an API

Using Entities and Models in an API

Creating Associations in APIs

Functional APIs

Securing APIs

Understanding JSON Web Tokens

Versioning Your API

Adding REST Constraints

Implementing ETags

You can view the course by visiting:

Creative Commons License

This work by
Shawn Wildermuth is licensed under a
Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License.
Based on a work at

If you liked this article, see Shawn’s courses on