aetles + development   73

Argue with your customers - Rockstar Coders
I see this same method of debate in play in our customer conversations here at Rockstar. When we get on a phone call, and a potential customer asks for X, Y, and Z. There's a natural inclination to just say yes. Saying yes, means we can get to sign that contract sooner. Checks get cut sooner.

But we don't just say "yes."

Before anything gets signed, we actually participate in some good natured debate with our customers about what they want built. We'll interrogate why X and Y are important. What assumptions have been made? What assumptions haven't been tested yet? Can we do something other than X and Y that are easier, cheaper, and quicker to build before we get to X and Y? Can we skip doing Z altogether?

Asking all these questions results in risk for us. It gives our customers more time to chat with competitors. It elongates the time until checks are cut. And it often results in projects that are smaller and cheaper than a client had originally budgeted for. That's not how agencies typically like to make money :)

But from years of doing this, we know our best work comes from challenging our customers assumptions to better articulate what they need. And the result is better projects that meet and often exceed expectations because they have our customers' most creative thinking behind them.
development  business 
september 2018 by Aetles
Announcing Azure Pipelines with unlimited CI/CD minutes for open source | Blogg | Microsoft Azure
With the introduction of Azure DevOps today, we’re offering developers a new CI/CD service called Azure Pipelines that enables you to continuously build, test, and deploy to any platform or cloud. It has cloud-hosted agents for Linux, macOS, and Windows, powerful workflows with native container support, and flexible deployments to Kubernetes, VMs, and serverless environments.

Microsoft is committed to fueling open source software development. Our next step in this journey is to provide the best CI/CD experience for open source projects. Starting today, Azure Pipelines provides unlimited CI/CD minutes and 10 parallel jobs to every open source project for free. All open source projects run on the same infrastructure that our paying customers use. That means you’ll have the same fast performance and high quality of service. Many of the top open source projects are already using Azure Pipelines for CI/CD, such as Atom, CPython, Pipenv, Tox, Visual Studio Code, and TypeScript – and the list is growing every day.
programming  development  github  opensource  versioncontrol  testing  webdevelopment 
september 2018 by Aetles
18F: Digital service delivery | Shared infrastructure as code
If you follow DevOps trends, you have likely heard of infrastructure as code. Tangibly, infrastructure as code means having things like your network configuration, server attributes, access control, etc. in a machine-readable format. This code then:

Serves as the source of truth for what the infrastructure should look like
Can be used to recreate the infrastructure from scratch
Is under version control
Is modified by pull requests
DNS is a major piece of shared infrastructure at the Technology Transformation Services (TTS, which 18F is part of), which made it a prime candidate for infrastructure as code. Of the many benefits, doing DNS changes through pull requests rather than tickets brought turnaround time down from multiple days to under ten minutes.
dns  development  code  infrastructure 
august 2018 by Aetles
Hur använder jag Git för att skapa en staging-miljö? – Oderland Support
Git är till för att underlätta utveckling av kod, framförallt i grupp. Men det kan även användas för andra saker. Ett av dessa användningsområden är för att skapa en staging-miljö där du kan enkelt arbeta och testköra saker på en dev-site för att sedan lansera det live när du är redo.
git  oderland  webdevelopment  webhosting  development 
october 2017 by Aetles
Oh, shit, git!
Git is hard: screwing up is easy, and figuring out how to fix your mistakes is fucking impossible. Git documentation has this chicken and egg problem where you can't search for how to get yourself out of a mess, unless you already know the name of the thing you need to know about in order to fix your problem.

So here are some bad situations I've gotten myself into, and how I eventually got myself out of them in plain english.
git  development  programming 
september 2016 by Aetles
Why You Should Stop Installing Your WebDev Environment Locally – Smashing Magazine
Have you heard of Docker but thought that it’s only for system administrators and other Linux geeks? Or have you looked into it and felt a bit intimidated by the jargon? Or are you silently suffering with a messy development environment that seems to break all of the time in various mysterious ways? Then read on. By the end of this article, you should have a basic understanding of Docker and have it working on your computer!
development  webdevelopment  docker 
may 2016 by Aetles
How to maintain a git remote fork | Rhonabwy
In the world of open source software, you make a fork of software all the time. Github has made it super easy, and more importantly, it’s how they (and git) have arranged to collaborate on software. This “how to” is for when you decide that you want to maintain your own fork, with changes in addition, or just divergent, from the original project. For most cases, you are going to be much better off submitting back your changes. Be damned sure you need to keep your changes to yourself.

If you want to keep your changes locally and just for yourself, then immediately recognize that you have just taken on “technical debt”. The interest rate for this debt could be high or low. Following the “debt” metaphor, the cost is based on how much activity and change happens in the repository from which you forked and want to take future changes.

I’m writing this article presuming you want or need to keep a fork with “a few changes added”, and you want to keep it otherwise up to date with the changes happening by others in the open source community.
git  programming  webdevelopment  development  tutorials 
april 2016 by Aetles
Building for HTTP/2
Earlier this year, I got the chance to speak with Google's Ilya Grigorik about HTTP/2 for the 1.10 episode of the TTL Podcast. It was a great primer for me on how HTTP/2 works and what it means for how we build the web, but it wasn't until more recently that I started to think about what it means for how we build the web — that is, how we generate and deploy the HTML, CSS, and JS that power web applications.

If you're not familiar with HTTP/2, the basics are simultaneously simple and mind-boggling. Whereas its predecessors allowed each connection to a server to serve only one request at a time, HTTP/2 allows a connection to serve multiple requests simultaneously. A connection can also be used for a server to push a resource to a client — a protocol-level replacement for the technique we currently call “inlining.”

This is everything-you-thought-you-knew-is-wrong kind of stuff. In an HTTP/2 world, there are few benefits to concatenating a bunch of JS files together, and in many cases the practice will be actively harmful. Domain sharding becomes an anti-pattern. Throwing a bunch of <script> tags in your HTML is suddenly not a laughably terrible idea. Inlining of resources is a thing of the past. Browser caching — and cache busting — can occur on a per-module basis.

What does this mean for how we build and deploy applications? Let's start by looking at the state of the art in client-side application deployment prior to HTTP/2.
development  http  javascript  performance  webdevelopment 
november 2015 by Aetles
The Cost of Frameworks -
I think the interesting discussion to be had from Tom’s post is: Are we trying to make lightweight sites that WORK FAST or maintainable sites WORK FOR YEARS?

Your answer is probably different and depends on your past experiences.

Users don’t want to wait, so the Quest for Speed is very important. It’s also very alluring! If I do things just right and score 100 on Page Speed Insights, I’m promised that unforetold riches will be deposited into my bank account. It will rain rupees. Google is all-in on this effort: Fast is best because it makes money.

As a community, we talk a lot about performance because it’s easy to measure and we can quickly see who is doing a good job and who is doing a bad job.

However, by measuring what can only be measured in terms of page speed means we have no insight to the reasons a framework was employed or how much money it saved the organization. How big is team that built the site? One? Ten? What were past organizational failures that led to adopting a large framework? Did using a framework win out in a lengthy internal Cost-Benefit analysis? Is CSAT up due to swanky animations and autocomplete features that took minutes to build? Was code shipped faster? Was it built by one person over a weekend? Did the abstraction allow the developers to actually have fun building, therefore increasing job satisfaction, therefore reducing organizational churn, therefore reducing cost of the end product for the user?

We don’t know.

There’s so much we don’t know, it’s hard for me to believe any metric describes the quality of a site. I can build a very fast website that is harder to maintain due to critical path hoops, supporting AMP-HTML, and providing a near perfect offline experience. Just add more code and grunt tasks and you will be rewarded in ValhallaGoogle search results! Longtail, however, the user experience also suffers because updates are slower to roll out due to feature burden.
framework  performance  webdevelopment  development 
november 2015 by Aetles
Five Things Old Programmers Should Remember — Medium
I had forgotten that being a software engineer was my first, best destiny, and that nothing I had ever done had made as significant contribution as my coding. My first successful company was built upon a piece of software I wrote, and much of it is still in use today.
So, after a year of kicking myself in the behind, I started throwing away my pre-conceived ideas of what the industry was all about. I started learning new languages, and taking risks. I got lucky, and by the time I was 57, I ended up designing and building one of the best pieces of software I had ever written for a small local startup. It was big, bold, visionary, and made a difference.
So, for those of you in the same boat, I’ve tried to distill some conclusions I’ve reached after finally digging myself back out and finding my true calling again.
Here are five things to think about, and remember.
development  management  programming  aging  webdevelopment 
november 2015 by Aetles
Introduction | Front-end Handbook
This is a guide that anyone could use to learn about the practice of front-end development. It broadly outlines and discusses the practice of front-end engineering: how to learn it and what tools are used when practicing it.

It is specifically written with the intention of being a professional resource for potential and currently practicing front-end developers to equip themselves with learning materials and development tools. Secondarily, it can be used by managers, CTO's, instructors, and head hunters to gain insights into the practice of front-end development.

The content of the handbook favors web technologies (HTML, CSS, DOM, and JavaScript) and those solutions that are directly built on top of these open technologies. The materials referenced and discussed in the book are either best in class or the current offering to a problem.

The book should not be considered a comprehensive outline of all resources available to a front-end developer. The value of the book is tied up in a terse, focused, and timely curation of just enough categorical information so as not to overwhelm anyone on any one particular subject matter.

The intention is to release an update to the content yearly.
development  education  webdevelopment  frontend 
october 2015 by Aetles
Five app prototyping tools compared:, Pixate, Origami, Framer & Form — Design + Sketch App — Medium
I recreated the IF by IFTTT user onboarding in five different high-fidelity prototyping tools to get an idea of the differences between them:, Pixate, Framer, Facebook’s Origami and RelativeWave’s Form.
design  development  tools  prototyping  webdevelopment 
august 2015 by Aetles
Getting started with front-end automation: An intro to npm | PreviousNext
For those new to package managers, a package manager is just a way to install software written in a particular language or operating system. For example, Ruby software is often installed with the Gem package manager, Mac OS X command line utilities with the HomeBrew package manager, and Node.js software with npm. Incidentally, npm stands for the Node Package Manager.

Installing all those front-end tools is easy with npm. Indeed, each of those tools has installation instructions that say “install with npm install -g grunt-cli”. However, it’s hard to find good information on using npm to effectively manage your project’s tools. Getting to know npm and its commands is essential to ensure your entire team is using the same versions of your tools. Even minor differences in tool versions can cause hard-to-fix bugs and frustration.

In fact, once you know how to use npm, you’ll realize that using npm install -g grunt-cli is generally a bad idea. (Hint: it’s the -g that will cause you problems.)
development  webdevelopment  npm  nodejs  osx 
june 2015 by Aetles
How to undo (almost) anything with Git
One of the most useful features of any version control system is the ability to "undo" your mistakes. In Git, "undo" can mean many slightly different things.

When you make a new commit, Git stores a snapshot of your repository at that specific moment in time; later, you can use Git to go back to an earlier version of your project.

In this post, I'm going to take a look at some common scenarios where you might want to "undo" a change you've made and the best way to do it using Git.
development  git  github  tips  webdevelopment 
june 2015 by Aetles
Create, review and deploy code together | Better than GitHub | GitLab
Batteries included: GitLab includes git repository management, code reviews, an issue tracking and wiki’s and much more. GitLab comes with GitLab CI, a easy to use continuous integration and deployment tool.

Do it together: Discuss issues and plan milestones. Do code reviews and make line comments. Mention your colleagues anywhere. View activity streams of projects or people.

Plays well with others: GitLab has integrations for tons of tools such as Slack, Hipchat, LDAP, JIRA, Jenkins, many types of hooks and a complete API.

Self-hosted, scalable and updated monthly
On Your Servers: Run it on your own infrastructure. Own everything. Or use our free SaaS

Scales Effortlessly: It runs smoothly a tiny server but can and scale to multiple active servers. A single server handles more than 25,000 users.

Updated Monthly: Every month on the 22nd a big upgrade is released and it’ll only take you only 2 minutes to update.

Community-loved, enterprise ready
GitLab Community Edition is completely free to download and it is open source. It is built by a community of more than 700 people.

GitLab Enterprise Edition comes with a subscription and offers deeper LDAP / AD integration, Jira and Jenkins integration and much more.

Subscriptions allow you to use the Enterprise Edition and includes 24/7 emergency support, more information can be found on our pricing page.
code  development  git  opensource  webdevelopment 
april 2015 by Aetles
make is a widely used and valuable development tool. It's a "build" tool: it builds programs and documentation according to a "recipe". It could really be used for anything where someone edits some files, and then runs a series of processing steps to generate some other form from the edited files. For the most part, however, it's just used to build and install software. make has its origins in Unix somewhere, and these days each BSD project and the GNU project have their own version.

I often get the impression that many otherwise knowledgeable and skilled developers don't have more than rudimentary knowledge of make, and could benefit from a more solid understanding. I don't particularly blame them: make is certainly ancient and has odd syntax and quirks. So many developers do the minimum necessary to add their new sources to the build, and then go back to working on the actual code. Having a good build system and understanding how it works can make development and deployment of software much more pleasant, so I humbly suggest taking the time to really learn one.

This blog post is about using a subset of the features of GNU Make to write "good" build systems.
programming  make  gnu  linux  development  webdevelopment 
april 2015 by Aetles - match command-line arguments to their help text
write down a command-line to see the help text that matches each argument
bash  commandline  terminal  osx  development 
january 2015 by Aetles
DevTools Tips
A curated list of Chrome DevTools tips and tricks
css  development  chrome  debugging  inspector 
october 2014 by Aetles
Docker is the Heroku Killer | DevOps | Brightball, Inc
After getting an intense look at Docker last night, I firmly believe that it is going to be the most disruptive server technology that we've seen in the last few years. It fills a much needed hole that's currently managed by very expensive solutions and it's being actively funded by some of the biggest players in the market.

Last night I went to the Docker Meetup in Greenville for an in depth look at what it is capable of doing. After taking a peek under the hood, I came away with some strong impressions.

First, let's look at what Docker is though. Docker is classified as "an easy, lightweight virtualized environment for portable applications." what exactly does that mean.

Basically it means that Docker is actively working to replace the need for hypervisors, virtual machines (VMs) and configuration management tools like Puppet / Chef / CFEngine in MOST cases. It does that by isolating application requirements within a Linux installation so that it's as if the Docker application is running within a VM without any of the actual overhead of a VM. Docker is coded without an abstraction layer and interacts directly with the Linux kernel. Additionally, when different containers need modified parts they reuse whatever existing libaries they can and only create independent copies for things they need to modify.
development  webdevelopment 
september 2014 by Aetles
Status Magic and iPhone 6/6 Plus screen sizes - iPhone Developer Blog
Perfect Status Bars in iOS 8 and Mac OS X Yosemite
Back at WWDC, when Apple announced App Preview videos were going to be added to App Store listings they also mentioned that videos could now be recorded with a lightning cable and QuickTime. What they didn't mention however was that as these video recordings are being created, Mac OS X Yosemite automatically puts a perfect status bar on your device!

Over the last couple of days we have been testing this out and we can confidently say that this is absolutely the best way to take still screenshots as well as videos of your app. How? It's easy:

Make sure you're running the latest versions of Mac OS X Yosemite and iOS 8.
Connect an iPhone or iPad with a lightning cable.
Open QuickTime on the Mac.
Select "New Movie Recording" from the File menu.
Click the drop down arrow next to the record button and select your device from the list of cameras.
Voila! your real, actual, iPhone or iPad will now be showing 9:41 AM and have a full battery, full bars of signal and the Wi Fi icon. You do not need to actually record a movie, just have it connected as a camera with QuickTime.
ios  development  iphone  screenshot  screencast 
september 2014 by Aetles
Dead Man's Snitch — A dead simple cron job monitoring tool.
Get More Out of
Your Cron Jobs
Daily backups, monthly emails, or hourly cron jobs you need to monitor? Meet Dead Man's Snitch—monitoring for cron, Heroku Scheduler or any scheduled task.

If your tasks don't execute when they should, DMS alerts you.
cron  development  monitoring 
august 2014 by Aetles
The Mac App for Homebrew
brew  homebrew  development  osx  mac  webdevelopment 
may 2014 by Aetles
Learn Git - Introduction
A step-by-step course for the complete beginner
development  git  webdevelopment 
april 2014 by Aetles
Easily add in a "sticky footer" to your site, works great with Foundation or just as is.
foundation  webdesign  web  development  css  javascript 
february 2014 by Aetles
You Might Not Need jQuery
jQuery and its cousins are great, and by all means use them if it makes it easier to develop your application.

If you're developing a library on the other hand, please take a moment to consider if you actually need jQuery as a dependency. Maybe you can include a few lines of utility code, and forgo the requirement. If you're only targeting more modern browsers, you might not need anything more than what the browser ships with.

At the very least, make sure you know what jQuery is doing for you, and what it's not. Some developers believe that jQuery is protecting us from a great demon of browser incompatibility when, in truth, post-IE8, browsers are pretty easy to deal with on their own.
development  javascript  jquery  js 
january 2014 by Aetles
A Simple Tweak for Making 'git rebase' Safe on OS X
Since OS X 10.7 Lion and the introduction of the Auto-Save and Versions features (which automatically records the history of files), some Git commands like “rebase” might fail on Mac OS systems.

When performing a large rebase with several commits and many changed files, the rebase process can randomly abort, stating that there are uncommitted changes and rebase cannot continue. However, a “git status” does not report any changes.
When aborting the rebase process and re-running it, it will again randomly abort at any commit until (after several retries) it may or may not finally succeed.

This can lead to a scenario where a commit is accidentally skipped by the developer if he’s not aware of the issue and continues the rebase. The problem has been tracked down to the revisiond daemon of the OS X Versions feature, which detects file changes and seems to somehow alter the file system info of the file, causing a rebase step to fail as it then detects changes.
git  macosx  osx  development 
november 2013 by Aetles
Setting Up My Mac Without MAMP | Lullabot
I recently got a new Mac and needed to configure it as a local web server for the many Drupal sites I work on. I used to use MAMP for this, but lately have been using the built-in functionality that comes on a Mac instead. MAMP is easy to install, but it creates a duplicate version of PHP and a duplicate version of Apache. That takes up space on my machine and occasionally causes trouble when some operation uses the wrong version of PHP because of confusion about which installation should take precedence. Setting up a Mac without MAMP used to be sort of complicated, but it's been getting easier and easier with every version of Mac OS, and it's not that hard any more. I thought I'd share the process I'm using now.
development  drupal  mac  mamp  osx 
september 2013 by Aetles
An App Store Experiment
I've tried to write this blog post a few times. The essence of the post was always going to be:

How important it is to create a story around your product.
How the actual coding takes a back seat.
How hard it is to market your app.
app  appstore  development  ios  marketing 
august 2013 by Aetles
Errata Security: The Rob Test: 12 Steps to Safer Code
Joel Spolsky has a famous list of "12 Steps to Better Code". I thought I'd create a similar list for safer, more secure code that's resilient against hackers.

The Rob Test
1. Do you use source control, bug tracking, and planning (i.e. GitHub basics)?
2. Do you have automated (one step, daily) builds?
3. Do you have automated regression/unit testing? Can you fix/release in 24 hours?
4. Do you reward testers for breaking things? (like fuzz testing)
5. Do your coders know basic vulns? (buffer-overflows, OWASP Top 10) Do you train them? Do you test new hires?
6. Do you know your attack surface? threat model?
7. Do you sniff the wire to see what's going on? (including sslstrip)
8. Do you have detailed security specifications as part of requirements/design?
9. Do you ban unsafe practices? (strcpy, SQL pasting, clear-text)
10. Do you perform regular static/dynamic analysis on code?
11. Do you have, and practice, an incident response plan? (secure@, bounties, advisories, notification)
12. Are your processes lightweight and used, or heavyweight and ignored?
security  development  programming 
august 2013 by Aetles
On Being a Designer and a Developer: Not Quite Unicorn Rare by Diogenes Brito
As Austin Bales says in a great talk, good designers and good developers actually have a lot in common. The crossover really even shows itself in our language when we use (appropriate) terms like "social engineering" for techniques designers use to illicit certain behaviors, or "software design" for the planning and creation of programming code. Both designers and developers put a premium on simplicity and clarity. Both are trying to make their creations as easy to intuit and work with as possible. Developers refactor their code as requirements change and complexity increases the same way designers redesign interfaces to make room for new or changing functionality. They have similar traits, skills, and motivations, they just work in different mediums and have different specialties. Designers tend to specialize and focus on the beginning of the creation process, whereas engineers specialize on the end or latter half of the process. I say a more accurate representation of a single person's skills might look something like this:

Each person has a certain level of skill in the designer and/or developer subject areas, where many of the skills and habits that would make you excel in either area would help in both. People may have a tendency to lean towards one area over the other, but no one has a "type" that would prevent them from learning and improving as a designer or a developer. What matters is the time and effort put into learning. World class designers and developers have put in lots and lots of dedicated practice: their (proverbial) 10,000 hours.
design  developer  development  designers  developers 
may 2013 by Aetles
PhpStorm for Drupal | Lullabot
Debugging Drupal modules and themes (or Drupal core itself) can be challenging without a good IDE. After using numerous IDE and text editors, PhpStorm has earned its place as my primary IDE for almost anything Drupal-related. By default, PhpStorm is as Drupal friendly as most other IDEs. However, some of its default syntax and formatting settings conflict with the Drupal Coding Standards. Here are a few tips to make PhpStorm play even better with Drupal.
development  drupal  php  ide 
april 2013 by Aetles
The Story of Christoph Niemann’s Petting Zoo App : The New Yorker
Recently, I created an app called Petting Zoo. It is an interactive app for iPhones and iPads, and creating it was a difficult but interesting process.
apps  appstore  development  design  games 
march 2013 by Aetles
MAMP Stack Cloud Hosting, Installers and Virtual Machines.
BitNami MAMP Stack provides a complete PHP, MySQL and Apache development environment for Mac OS X that can be launched in one click. It also bundles PostgreSQL, phpMyAdmin, phpPgAdmin, SQLite, Varnish, ImageMagick, ModSecurity, XDebug, Xcache, OAuth, Memcache, FastCGI, APC, GD, OpenSSL, CURL, openLDAP, PEAR, PECL and other components and the following frameworks: Zend Framework, Symfony, , CodeIgniter, CakePHP, Smarty, Laravel.
apache  development  mamp  mysql  php  lamp 
march 2013 by Aetles
Understanding Git Conceptually
This is a tutorial on the Git version control system.

Git is quickly becoming one of the most popular version control systems in use. There are plenty of tutorials on Git already. How is this one different?

A Story

When I first started using Git, I read plenty of tutorials, as well as the user manual. Though I picked up the basic usage patterns and commands, I never felt like I grasped what was going on “under the hood,” so to speak. Frequently this resulted in cryptic error messages, caused by my random guessing at the right command to use at a given time. These difficulties worsened as I began to need more advanced (and less well documented) features.

After a few months, I started to understand those under-the-hood concepts. Once I did, suddenly everything made sense. I could understand the manual pages and perform all sorts of source control tasks. Everything that seemed so cryptic and obscure now was perfectly clear.

Understanding Git

The conclusion I draw from this is that you can only really use Git if you understand how Git works. Merely memorizing which commands you should run at what times will work in the short run, but it’s only a matter of time before you get stuck or, worse, break something.
development  git  programming  tutorial 
january 2013 by Aetles
Keeping Safari a secret
For much of the time we spent developing Safari — long before it was called by that name — it pretended to be Microsoft Internet Explorer. Specifically, Internet Explorer for Mac, which Apple had provided with the OS since 1998. Less than six months before Safari debuted, it started pretending to be a Mozilla browser.

Why did we do this? And how did we make Safari pretend to be these browsers when its code and behavior were so different?
apple  safari  development  webbrowsers 
january 2013 by Aetles
The Blind Shooting The Blind ∵ Stephen van Egmond's weblog
Apple gets a lot of ignorant hate, and a lot of ignorant reverence. Let me give some informed reverence for one area where they kick so much ass: accessibility.

We trekked out to the wilds north of Eglinton to the CNIB, dropping in on the iDevice User Group. This is a group where blind people teach each other how to get around in the world, using iOS applications as their helpers. We were the only sighted people present, there to talk to this particular subset of Pocket Rocket‘s users.

We I simply gawped when one blind woman pulled out an iPhone then snapped a perfect shot, guided by the built-in Camera app.
accessibility  apple  development  ios  iphone 
september 2012 by Aetles
Implementing Smart App Banners - David Smith
iOS 6 introduces a new feature to Safari that should help app developers clean up their websites and convert more visitors into customers. Apple calls it Smart App Banners. The goal of this feature is to provide app developers with an easy way to direct visitors of their website to their app without having to resort to awful and clumsy pop-ups.
apple  development  ios  webapps  web 
september 2012 by Aetles
Merge or Rebase? – SourceTree by Atlassian
As you’re no doubt aware, Git and Mercurial are great at re-integrating divergent lines of development through merging. They have to be, since their design strongly encourages developers to commit changes in parallel in their own distributed environments. Eventually some or all of these commits have to be brought together into a shared graph, and merging and rebasing are two primary ways that let us do that. So which one do you use?
git  versioncontrol  mercurial  development  programming 
august 2012 by Aetles
Edward Marks: Improve Usability With A Black Status Bar and Rounded Corners
The use of a black status bar and rounded corners can increase the usability of your iPhone application by bounding your content and thus separating it from the viewport.
apple  ios  design  usability  development  iphone 
august 2012 by Aetles
The Problem With iCloud | TightWind
iCloud’s promise is a dream: your contacts, calendar, backups, songs, documents and application data are on all of your devices, whenever and wherever you need them. No need to worry about moving files from device to device on a flash drive or emailing them or any of the other crazy stuff we used to do. All of your stuff, always there when you need it. If that were completely the case, it would be a no-brainer for me. I’d implement iCloud syncing immediately, because that idea—never having to worry about where my stuff is again—is one of those ideas that makes my heart flutter with excitement.

Unfortunately, that’s not the case.
icloud  apple  ios  osx  sync  development  developers 
august 2012 by Aetles
Developers dish on iCloud's challenges | Macworld
With services like Dropbox, Google Docs, and even IMAP email, users today expect their data to remain up-to-date and available on every device. iOS users want conflict-free access to their data—whether it's documents, in-game progress, or other details—on their iPads, iPhones, and Macs. Apple aims to satisfy that user need with iCloud.

With iCloud, Apple promises developers that they can keep their users’ data in sync. But while a steadily increasing number of developers are implementing iCloud support within their apps, its adoption rate still seems surprisingly low overall.

Are developers hesitant to embrace iCloud? And if so, why?
apple  cloud  icloud  ios  osx  development  developers  sync  from instapaper
july 2012 by Aetles
Software Inventory - Joel on Software
The “cost” of code inventory is huge. It might add up to six or twelve months of work that is stuck in the assembly line and not yet in customers’ hands. This could be the difference between having a cutting-edge product (iPhone) or constantly playing catchup (Windows Phone). It’s nearly impossible to get people to buy Windows Phones, even if the iPhone is only six months better. A lot of markets have network effects, and being first has winner-take-all implications. So getting rid of inventory in the development process can make or break a product.

Let’s go over the three places most inventory accumulates.
programming  development 
july 2012 by Aetles
agile approach | Sublime Text 2 for Drupal Development
As a recent refugee from Aptana Studio, I’ve spent some time working with Sublime Text for the past couple of weeks and so far I'm loving it (thanks, Yosh!) I won't get too involved with the reasons I chose to turn my back on Aptana, but let's just say that the last few updates made the already monolithic IDE an even less responsive experience on my more-than-adequate Core i7 laptop.

With yesterday's official release of Sublime Text 2 I thought that it would be a good time to share some things that I've grown to love about working with it.
editor  development  drupal  osx 
june 2012 by Aetles
Why Upgrade Pricing Isn’t Coming To The App Store
Developers and longtime computer users may be used to the shareware, time trial, pay-full-price-once-upgrade-cheaply-forever model of buying and selling software, but regular people, the mass market that Apple continues to court first and foremost, aren’t. Adding demos (“I thought this app was free, but now it’s telling me I have to pay to keep using it? What a ripoff!”) and paid upgrades (“Wait, I bought this app last year and now I have to pay again to keep using it? Screw that!”) would introduce a layer of confusion and make buying an app a more arduous process, which would result in people buying fewer apps.

At least, that’s the rationale behind Apple’s decision not to implement them. To be clear: what I just wrote is not my opinion of how things should be. This is only my guess at Apple’s reasoning.
apple  appstore  macappstore  development  apps 
june 2012 by Aetles
Red Sweater Blog – The Sandbox’s Big Red Button
In short: the Big Red Button gives Apple an out.

Whatever mistakes they make in the devising of high-level entitlements can be theoretically undone after-the-fact by supplying developers with special Big Red Button entitlements that pass along specific permissions to the lower-level sandbox, liberating the application to do whatever important task it needs to do.
app  apple  development  mac  sandboxing  macappstore 
june 2012 by Aetles
Home // Think Like (a) Git

When you're just getting started, something as straightforward as a merge can be terrifying. It can take a long time to really become comfortable using some of Git's more advanced features. (It took me a year or two.)

Once people achieve some level of Git enlightenment, they tend to make statements of the form 'Git gets a lot easier once you realize X' -- but that doesn't do much for people staring up Git's steep learning curve.

My goal with this site is to help you, Dear Reader, understand what those smug bastards are talking about.
development  git  programming  versioncontrol 
may 2012 by Aetles
Drupal core javascript not being loaded for anonymous users | IT Consultant and Contractor - London
Drupal will NOT load any javascript (including jQuery and drupal.js) if it “thinks” that they are not required. It will only load the scripts if any other module or script requires them. For example, if you add scripts in your .info file or using the drupal_add_js() function in the hook_init(), Drupal will detect it and load its scripts.

Now, let's assume that you developed a module that adds its own scripts in hook_footer() using the drupal_add_js() function. At the time when hook_footer is executed, it is too late for Drupal to add scripts to the header and hence jQuery and drupal.js will not be added. If your javascript depends on them you will see error messages in your console such as:

Drupal is not defined
jQuery is not defined
The solution is to include at least one script earlier – for example in hook_init() so that Drupal loads its scripts.
drupal  javascript  modules  development 
may 2012 by Aetles
Meteor is a set of new technologies for building top-quality web apps in a fraction of the time, whether you're an expert developer or just getting started.

Pure JavaScript.
Write your entire app in pure JavaScript. All the same APIs are available on the client and the server — including database APIs! — so the same code can easily run in either environment.
development  framework  javascript  tools 
april 2012 by Aetles
JSHint, A JavaScript Code Quality Tool
JSHint is a tool to detect errors and potential problems in JavaScript code.
development  javascript  tools  validation 
april 2012 by Aetles
Dropbox tech blog » Blog Archive » zxcvbn: realistic password strength estimation
Over the last few months, I’ve seen a password strength meter on almost every signup form I’ve encountered. Password strength meters are on fire.

Here’s a question: does a meter actually help people secure their accounts? It’s less important than other areas of web security, a short sample of which include:

Preventing online cracking with throttling or CAPTCHAs.
Preventing offline cracking by selecting a suitably slow hash function with user-unique salts.
Securing said password hashes.
With that disclaimer — yes. I’m convinced these meters have the potential to help. According to Mark Burnett’s 2006 book, Perfect Passwords: Selection, Protection, Authentication, which counted frequencies from a few million passwords over a variety of leaks, one in nine people had a password in this top 500 list. These passwords include some real stumpers: password1, compaq, 7777777, merlin, rosebud. Burnett ran a more recent study last year, looking at 6 million passwords, and found an insane 99.8% occur in the top 10,000 list, with 91% in the top 1,000. The methodology and bias is an important qualifier — for example, since these passwords mostly come from cracked hashes, the list is biased towards crackable passwords to begin with.

These are only the really easy-to-guess passwords. For the rest, I’d wager a large percentage are still predictable enough to be susceptible to a modest online attack. So I do think these meters could help, by encouraging stronger password decisions through direct feedback. But right now, with a few closed-source exceptions, I believe they mostly hurt. Here’s why.
development  javascript  password  security  dropbox 
april 2012 by Aetles
Drush Rebuild: A utility for rebuilding Drupal development environments | DesignHammer Website Design and Development in North Carolina
Drush Rebuild
I wrote a simple utility, Drush Rebuild, to help me manage the process of rebuilding a local development environment. Drush Rebuild doesn’t make assumptions about your repository structure (Drush Make, entire codebase in repo, etc), nor does it care about extra steps you need to take when configuring a development environment, like disabling caching, adjusting connections with 3rd party services, and so on.
Instead, the utility provides a framework for executing rebuild scripts for a given site, using the power of Drush aliases and the drush php-script command.
drupal  drush  development 
april 2012 by Aetles
Michael Wolfe's answer to Engineering Management: Why are software development task estimations regularly off by a factor of 2-3? - Quora
Let's take a hike on the coast from San Francisco to Los Angeles to visit our friends in Newport Beach. I'll whip out my map and draw our route down the coast:

The line is about 400 miles long, we can walk 4 miles per hour for 10 hours per day, so we'll be there in 10 days. We call our friends and book dinner for next Sunday night, when we roll in triumphantly at 6pm. They can't wait!

We get up early the next day giddy with the excitement of fresh adventure. We strap on our backpacks, whip out our map, and plan day one. We take a look at the map. Uh oh:
development  management 
january 2012 by Aetles · Sandboxing
Speaking of Radar, we encountered a fairly nasty problem after launching xScope. Many of our customers are designers and developers who love SSDs. It’s common to use a symlink in your Home folder to put big datasets like Pictures, Music and Movies on a separate hard drive. When you do this, folder access in the application sandbox container breaks. A small number of users who use symlinks are also getting crashes after launching the app that was downloaded from the Mac App Store:

xpchelper reply message validation: sandbox creation failed: 1002
Container object initialization failed: The file couldn’t be opened.
apple  development  mac  osx  sandboxing 
january 2012 by Aetles
The Pros and Cons of Cloud Hosting
I started my startup journey about 4 years back, right around the time Amazon introduced AWS. We started with a VPS and eventually moved to dedicated servers for Muziboo, completely skipping the cloud wave. We are doing the same for SupportBee. We do use S3 but we never used EC2 for hosting. However, I have worked as a consultant a couple of times in the last few years and I have worked with EC2 on client projects. I understand the benefits of cloud hosting but I don’t think that cloud is the right solution for every company. Traditional dedicated server hosting still makes a lot sense for majority of companies out there. However, before I get to that, let’s first quickly go over the benefits of cloud hosting
cloud  development  hosting  amazon  aws 
december 2011 by Aetles
Writing forward-compatible websites - MDN
This is a list of best practices for creating websites that do not break when browsers are updated. It's not always possible to follow all of these, but following as many of them as possible will help future-proof your website. This is especially important for intranet applications and other non-public websites where problems are likely to not be noticed during testing by browser vendors.
css  development  html  javascript 
november 2011 by Aetles
Kelly Sutton's Tumblr, 12 Steps to Writing Better Web Code
It’s been over a decade since Joel Spolsky wrote the Joel Test: 12 Steps to Better Code. The man was ahead of his time. Sure, things like version control are a no-brainer for any competent shop out there. With the ease of tools out there, most teams have a bug database and have reasonably up-to-date schedules. Heck, most software companies out there do pretty well on Joel’s 12 steps. But those 12 steps are no longer enough.

I’ve become somewhat of a process nut, which is weird. Usually I’ve got my finger over the big red deploy button before anyone else. But that’s not process, that’s deploying. I like to hear how other companies work. I see the most trivial roadblocks frustrate some developers. Many companies, both big and small, pay too little attention to process. It hurts morale, it contributes to unnecessary work and it will eventually lead to a product falling apart.

This is my attempt to codify what I think are 12 great supplemental steps to Joel’s first 12. Like Joel’s, you should give a binary answer to each question: “yes” or “no.”
code  development  programming  tips 
november 2011 by Aetles
Rethrick Construction
Critical, drop-everything bugs become daily affairs, and the sense of confidence in the engineering strength of the structure begins to erode. This leads to low morale, burnout, and less internal cooperation for fear of taking on too many bugs.

Of course I enjoyed my time on Wave like no other time in my career. It was equal parts frustration, joy, defeat and passion. I don't regret a single moment of being associated with it. It remains a wonderful attempt at creating something unique, exciting and incomparably bold. Nor do I want to ascribe blame to anyone on the team or Google at large. I just want to point that even the smartest, most motivated and talented people in the world--with a track record of delivering success--are alone not sufficient to overcome complexity that creeps up on you. Maybe we should have known better, but we didn't.

In the end, the man-month as a scalable unit of work is hubris worthy of a Greek tragedy.
development  google 
october 2011 by Aetles
Up and Down the Ladder of Abstraction
"In science, if you know what you are doing, you should not be doing it. In engineering, if you do not know what you are doing, you should not be doing it. Of course, you seldom, if ever, see either pure state."

—Richard Hamming, The Art of Doing Science and Engineering
How can we design systems when we don't know what we're doing?

The most exciting engineering challenges lie on the boundary of theory and the unknown. Not so unknown that they're hopeless, but not enough theory to predict the results of our decisions. Systems at this boundary often rely on emergent behavior — high-level effects that arise indirectly from low-level interactions.

When designing at this boundary, the challenge lies not in constructing the system, but in understanding it. In the absence of theory, we must develop an intuition to guide our decisions. The design process is thus one of exploration and discovery.

How do we explore? If you move to a new city, you might learn the territory by walking around. Or you might peruse a map. But far more effective than either is both together — a street-level experience with higher-level guidance.

Likewise, the most powerful way to gain insight into a system is by moving between levels of abstraction. Many designers do this instinctively. But it's easy to get stuck on the ground, experiencing concrete systems with no higher-level view. It's also easy to get stuck in the clouds, working entirely with abstract equations or aggregate statistics.

This interactive essay presents the ladder of abstraction, a technique for thinking explicitly about these levels, so a designer can move among them consciously and confidently.

I believe that an essential skill of the modern system designer will be using the interactive medium to move fluidly around the ladder of abstraction.
design  development 
october 2011 by Aetles
Software’s Receding Hairline - raganwald's posterous
This is interesting, because the mechanism of growing a comb-over applies to software development. A comb-over is the accumulation of years of deciding that today is not the day to change things. A comb-over is the result of years of procrastination, years of decisions that seem right when you're in a hurry to get ready for work but in retrospect one of those days should have included a trip to the barber and a bold decision to accept your baldness or take some other action as you saw fit.
Software is like this. Bad software doesn't really start with bad developers. It starts with good, decent people who make decisions that seem right on the day but in aggregate, considered over longer timeframes, are indefensible. This is a great paradox.
development  software 
september 2011 by Aetles
The death march: the problem of crunch time in game development
ou work hard at your job, and you don't always get to go home right when the clock strikes five, either. So why should you take time out of your day to sympathize with game developers? After all, they're adults. If they don't like their situation they can move on, right?

Well, the problem is that it's just not a very effective way to manage a project, and often it's the quality of the games that suffer. This is not a new revelation; as far back as 1909 studies have shown that the 40-hour work week actually provides more output over a long period of time than when employees work longer hours.
development  hr  work 
may 2011 by Aetles
cloudControl » Cloud hosting platform
PHP Cloud Hosting Platform As A Service
cloud  development  hosting  php 
may 2011 by Aetles
Handling the new .gitignore file in D7 and D8 |
Drupal 7 and Drupal 8 recently added a default (and sensible) .gitignore file to the standard repository, and while this solves some problems, it has also caused some confusion. (issue)

Here's a link to the actual new .gitignore. Essentially, it excludes the sites/default/files and sites/default/settings.php files from git source control.
development  drupal  git 
may 2011 by Aetles
A successful Git branching model »
In this post I present the development model that I’ve introduced for all of my projects (both at work and private) about a year ago, and which has turned out to be very successful. I’ve been meaning to write about it for a while now, but I’ve never really found the time to do so thoroughly, until now. I won’t talk about any of the projects’ details, merely about the branching strategy and release management.
git  programming  development 
april 2011 by Aetles
Hot PHP UTF-8 tips » PHP » SitePoint Blogs
As a result of all the noise about UTF-8, got an email from Marek Gayer with some very smart tips on handling UTF-8. What follows is a discussion illustrating what happens when you get obsessed with performance and optimizations (be warned – may be boring, depending on your perspective).

Outrunning mbstring case functions with native PHP implementations
The native PHP strtolower / strtoupper functions don’t understand UTF-8 – they can only handle characters in the ASCII range plus (may) examine your servers locale setting for further character information. The latter behaviour actually makes them “dangerous” to use on a UTF-8 string, because there’s a chance that strtolower could mistake bytes in a UTF-8 multi-byte sequences as being something it should convert to lowercase, breaking the encoding. That shouldn’t be a problem if you’re writing code for a server you control but it is if you’re writing software for other people to use.
php  utf8  development 
february 2011 by Aetles
SwitchToHTML5 - The HTML5 Framework Generator
HTML5 is the new kid on the block, sure, and with reports that an official specification wont be fully completed and officially supported until 2022, you may be wondering why you should use it in your new site.

Well, there's one main reason (for me at least), and that is: The Future. The simple fact is that HTML4/XHTML1.0/CSS2 are outdated, and the new XHTML 2 standard has been scrapped in favor of HTML5. CSS3 is gaining more and more momentum every single day, the future of the web is HTML5.
development  framework  html  html5 
february 2011 by Aetles
Script Junkie | How to Debug Your jQuery Code
In this article, I’ll describe some techniques to assist you in the debugging process when you are using jQuery in client-side Web development. Thankfully, we have much better tools and technologies than developers had even five years ago.
jquery  development  debug  javascript 
january 2011 by Aetles
Crotchety Old Power Users - Release Candidate One
Reply-all gaffes, top-posting etiquette, plaintext versus HTML, attachment limits, inbox limits… everybody hits them. By comparison the simplicity and clarity of Facebook mail is impressive. A Facebook message requires (privacy controls pending) a symmetrically-acknowledged relationship between parties, and on top of that spam-murdering convenience it’s self-threading, low friction, and lightweight.

In a nutshell, Facebook is better than email unless you’re some kind of email expert. And for email’s successor to support all the expert features of email, none of its myriad problems would be solved.

It’s been a recurring theme this week, but the Pro users of yesteryear’s products, the people with the biggest investment in old technologies, are not the people who should be calling the shots in the design of their successors. These are the people who complain that an iPad can’t have third party software installed from anywhere but the App Store, ignoring the massive convenience and security gains the policy affords average users. These are the people who are still using slotted screwdrivers and Edison light fixtures and manual transmission cars.
email  facebook  development 
december 2010 by Aetles
Accessibility for iPhone and iPad apps » Matt Legend Gemmell
Ensuring that your iPhone or iPad app is accessible (in this case, to visually impaired users) is the right thing to do, and thankfully it’s very easy – in many cases, there’s no work to do at all. This article for iOS developers describes how to implement accessibility support.
accessibility  development  ios  ipad  iphone 
december 2010 by Aetles
Microsoft spenderar enorma summor på forskning och utveckling men vad ger det egentligen?
Brad  DeLong  Microsoft  investeringar  research  development  R&D  FoU  forskning  utveckling  Aetles  Företagande 
march 2005 by Aetles

related tags

accessibility  Aetles  aging  amazon  apache  app  apple  apps  appstore  aws  bash  Brad  brew  business  chrome  cloud  code  commandline  cron  css  debug  debugging  DeLong  design  designers  developer  developers  development  dns  docker  dropbox  drupal  drush  editor  education  email  facebook  forskning  FoU  foundation  framework  frontend  Företagande  games  git  github  gnu  google  homebrew  hosting  hr  html  html5  http  icloud  ide  infrastructure  inspector  investeringar  ios  ipad  iphone  javascript  jquery  js  lamp  linux  mac  macappstore  macosx  make  mamp  management  marketing  mercurial  Microsoft  modules  monitoring  mysql  nodejs  npm  oderland  opensource  osx  password  performance  php  plugins  programming  prototyping  R&D  research  safari  sandboxing  screencast  screenshot  security  server  software  subversion  sync  terminal  testing  tips  tools  tutorial  tutorials  ui  usability  utf8  utveckling  ux  vagrant  validation  vcs  versioncontrol  virtualbox  web  webapps  webbrowsers  webdesign  webdevelopment  webhosting  webserver  wordpress  work 

Copy this bookmark: