Posts in category technology - page 2
Virtual machines are called Droplets at Digital Ocean so hit Create then:
1. Give it a name
Give your server a name. This has no bearing on the name your customers see and is only for initially connecting to it/in the Digital Ocean dashboard.
2. Select size
A popular blog should have no problem with the $10 a month 1GB/30GB/2TB option but I run a few sites so went for the next one up with more CPU and RAM.
You can scale up later although you won’t get the extra disk space as it can’t resize the disk. Given static storage like Amazon S3 is cheap and integrates with their CloudFront CDN this isn’t a problem.
3. Select region
Is your audience focused in a specific area?
- Yes (e.g. a real estate site) then choose the closest server to them
- No – choose the US East Coast like New York for good global coverage
4. Select Image
Here you select which distribution of Linux, which version and which CPU architecture you want to use.
For this guide I’m using Ubuntu 14.04 x64. In theory you could use alternative distributions or versions but you’re on your own.
Do not select x32 as HipHopVM is only supported on 64-bit architectures.
5. Add optional SSH keys
SSH keys let you automatically sign in without a password – the security being a key file on your computer instead. It’s worth learning how to use this but is outside the scope of this article so just use the normal password for now.
Leave the defaults on unless you want to pay extra for their backup service. Personally I like to use a WordPress plugin that backs up to S3 called UdraftPlus.
7. Hit Create Droplet
Within 60 seconds you should have a fresh virtual machine ready to go.
8. Connect to your Ubuntu virtual machine/droplet
You will need ssh (pre-installed on a Mac, Windows users should check out Putty) Check the IP address shown on your droplet’s page then:
You should confirm the fingerprint the first time by typing yes then be rewarded with a Welcome message and a cursor to type new commands into!
9. Update your Ubuntu virtual machine
Even though the version of Ubuntu you chose is quite up to date there will be a few updates to apply, thankfully this is very easy.
sudo apt-get update
Tells the package manager (known as “apt”) to go find out about all the updates. It doesn’t yet install them though, to do that we need to wait until it’s finished then type:
sudo apt-get upgrade
You’ll need to confirm this with Y and wait a little bit. This upgrades a lot of the packages and applications. Once complete then:
sudo apt-get dist-upgrade
This tells apt to upgrade the core operating system as well. Again confirm with Y and wait a little bit. Once this one is complete you’ll need to reboot your machine with:
sudo reboot now
You’re now ready to reconnect and starting installing packages to make your virtual machine do something useful!
Ahmet Alp Balkan on the Microsoft Azure team reflected on his experiences at Microsoft. His experiences do not exactly match mine (initially on LINQ to SQL, then Entity Framework and finally xbox.com) but I recognize some of his points.
Here is some further discussion along with some other thoughts that have come up over the years. A lot of these don’t apply just to Microsoft and some are useful for people new to the industry to think about.
People think of Microsoft as a single entity with a sole focus and one opinion.
That’s about the worst mistake you can make.
Microsoft is like hundreds of small companies that often work together but sometimes against each other. They have different processes, dynamics, attitudes and goals not only within the same division but also within the same building or floor.
Thinking your experience with one team is a reflection of the whole company is short sighted. Microsoft employs almost 100,000 people including over 40,000 in the Redmond area alone.
It’s like a small country.
“Expect no documentation”
Documentation can sometimes be found checked in with source code, in wikis, buried in Sharepoint sites or OneNote. Wherever it may exist it will be out of date by the time you find it.
Documentation can only be up to date if the code never changes or you have a team of incredibly rare developers who like to read and write documentation more than code. Don’t fret unless nobody has the source code.
It might appear that people are critical and dropping dead will kill the project because everything gets funneled through one or two people but that’s not the case. Many people know more than they let on but don’t want to be involved on a day-to-day basis because they have moved onto something better. When a dire situation arises these people step up.
“Not everyone is passionate for engineering”
It’s true not everyone you meet will be interested in quality software engineering. Some people just want to get the job done and go home. That happens across and all walks of life. It’s a personal choice.
Ask yourself how many engineers you meet are passionate about delivering great experiences to users. Do they prioritize their own wants and desires such as a high test coverage in a rarely-regressed area over a simple useful feature many users are asking for.
Software engineering is a means to an end.
Your customers aren’t interested in software engineering. They want a useful tool or something entertaining.
What you want is to be able to sustain happy paying customers.
“2-3 hours of coding a day is great”
When you’re coding for yourself you are the user. You can make the decisions quickly and know what you’re asking of yourself. There is no communication overhead.
When you work with customers that slows things down especially if they’re not easy to get hold of. Most of the time you work with a project or program manager (PM in Microsoft speak) who advocates for the user. This speeds up the simpler decisions but complex or difficult decisions will still require time.
With more developers, testers and partners the communication overhead increases. You make educated guesses and perform iterative steps and keep everyone involved. If those guesses are wrong they should show up quickly. You can address those wrong guesses before too many features, code or documentation rely upon them being implemented wrongly.
If a decision can’t be easily reversed in the short term the it needs discussion. That takes time.
Two hours of coding a day can be fine. If it takes the product in the right direction.
“Not giving back to the public domain is a norm”
Whether you contribute code back to the outside world is defined by your personal goals and the team around you.
Some teams like the ones on ASP.NET MVC and Entity Framework have completely opened their stacks. Other teams have contributed back to existing projects. Your might not be able to do either… yet. Things are changing at Microsoft as these projects show and it can take patience and perseverance to make it happen.
It can be painful for a developer to break through the resistance of his own team and legal. There are reasons not to:
- It takes time and effort to put something out for public consumption
- It can take ongoing time and effort to maintain that code publicly
- If your code is innovative to your business area you might be giving the competition a boost
- Legal may perceive code contributions as a patent minefield
If your code doesn’t give you an edge then why are you writing it? Intellectual challenge? Do that on your own time. If something open source already provides important functionality you need to get permission to use that instead. Don’t give your competitors your edge while it counts.
“It’s about getting it done”
Shipping good products leads to success. Waiting for perfection leads to failure.
Shipping is everything. True, it’s not always first-to-market that wins but being late won’t help unless you have something that’s radically different. A lower bug rate or a slightly more polished experience won’t be enough.
It’s incredibly easy to ship updates today. Concentrate on getting the features usable and ensure it doesn’t harm the user. That means no corrupting data or major security issues.
All we have to decide is what to do with the time that is given to us. – Gandalf ;-)
Your product will ship with bugs. If you have a good test team you’ll know what some of them are. Fix the critical, the blockers and the high-priority as best you can. Your competition isn’t going to wait, nor are your users.
The more easily discovered or hard to work around a bug is the quicker it will be found. A hard-to-reproduce bug that’s easy to work around isn’t worth the time you already spent thinking about.
“Copy-pasting code can be okay”
Starting a shared library between teams requires an intentional co-ordinated effort.
- When a team modifies a shared library do they know how it affects other teams? No.
- Will the other teams be carefully monitoring the shared library? No.
Copy and pasting is fine for odd classes. You get code re-use without having to set-up merging, policies and ownership.
Fixing a critical bug in shared code always requires co-ordination between teams whether they copy and pasted the code or whether they take a shared dependency.
Bugs can hide bugs. Fixes can reveal more bugs.
“Code reviews can be skipped”
There are a few things people want to get out of a code review and how well it goes depends on the people interested in reviewing the code.
How well did I implement this feature?
We’d all love to know this but it’s the hardest thing for somebody to critique in a code review. They probably don’t know the requirements well and unless they’ve been in that area of code lately they probably don’t know what the alternatives are and why you went with this approach. To know as much as you do about implementing this feature they would likely have needed to have spent as much time on it as you.
Code reviews rarely provide good feedback in this area unless you’re new to the team – in which case you should probably have pair-programmed instead and had a better experience.
Are there any glaring bugs?
If you’re a professional you should have read your code back and forth several times and probably refactored it until it looked good. If regular bugs or code reviews point out issues then you need reviews for this. Some people are much better than this than others – it’s one of personal discipline.
You should spend far more time reading your code than you did writing it.
Did I regress performance, security or reliability
This is about the best thing you can get out of a code review. People know arcane little bits about the system that are probably not well known and tricky to document. If you’re working in code that is called all over the place go for the code review especially.
“So… can code reviews be skipped?”
I’d be lying if I said I had a code review for everything I did. Sometimes you know the code base like the back of your hand and there are plenty of checkpoints further in the process as well as other eyes constantly on the code-base. A lot of open source projects work well this way.
Never skip a code review when:
- You’re in a rush. That’s exactly when you need it most. Send it to multiple people and wait for 1 or 2 responses – it parallizes well.
- The code is used everywhere. The more callers, the more places to fail.
- The code accesses sensitive data. Patching after a breach is too late.
At the end of the day ask yourself “Could this code damage the reputation of the company and therefore my career?”. If the answer is YES you need a review.
Competition and stagnation
When new markets and opportunities appear it often doesn’t belong to one team and many teams can find themselves in the same space as executives go for the land-grab. This behavior is actually encouraged at all levels in the annual reviews … “expand your influence”.
Unfortunately this often results in customer confusion, especially as products expand and subsequently overlap. LINQ to SQL and Entity Framework are my own personal experience this but I’m sure you think of plenty more.
Conversely once a market is owned by a team it can stagnate quite quickly. Microsoft Billing and the MVP/MCP portals spring to mind. The latter requires Internet Explorer only to function. In compatibility mode no less. There are more than a few Microsoft web sites looking very dated.
Be aware of what other teams are doing and how it impacts yours. Treat teams in similar spaces as potential competitors but remember that their public failures reflect on the whole company including you.
Bring solutions, not problems
The article reminded me of one from a year or two back where somebody left Microsoft after a promising start that turned into a series of bad reviews after he started trying to change things by pointing out to people what’s wrong.
People know what’s wrong.
Microsoft like other big tech companies has a lot of smart people working for it. Smart people are busy.
Going around telling people that they’re doing things wrong or that things need to change without a plan is never going to make you friends or cause change. Guess what. Career progression is part popularity contest.
Worried the new site has so many hands it’s going to be a mess?
Don’t complain, do something. Figure out a solution that also solves pain for others so they’ll buy in. Work with the designers on a grid based PSD template, codify it into CSS, check it in and get it included on every page. Sacrifice a few lunchtimes to train the team on it. Get it done.
Think the approach you’re taking for security isn’t enough?
Liaise with experts, find the issues, develop or adopt libraries, tools and techniques to make the problem go away.
Get to the root of a problem and make sure the solution fits both sides
If you interface with customers directly through one of the many partner or support programs or indirectly through forums and Twitter you’ll see upset customers. It’s hard, but it applies to all products. Upset people forget there are real people working hard on the product they use. That if they scream and shout they’ll get what they want. It doesn’t work that way.
You will come across good ideas, suggestions and feature requests internally and externally. Take the time to distill them down into small useful bite-sized pieces. Take from the critic’s what you can use for a better product and forget the rest.
People develop for themselves and what makes a great solution for them might not be for other people using your product.
Teams can be resistant to fully-baked solutions being handed to them. Come with bite-sized pieces and a few ideas on how they could interact. Let the solution flow out of discussion and debate. The result will be better than what you could come up with anyway.
This is even more important when dealing with other teams. They know their internals, other customers and future road-map better than you do.
Expert means something different on the inside
Whether you’re an MVP or wrote a best-selling book joining the team behind it means you’re about to become a different type of expert.
You’re an expert on using the product. On the features that shipped. On the way it’s used.
You are about to learn is why the product is shaped that way. The hard decisions, the cut features, the implementation and constraints.
Brace your ego for impact. It doesn’t matter that you can write any kind of LINQ query off the top of your head and have used it in several apps. When you join the team behind it you’re in for a crash course in expression trees, compilers and query reduction. How far down does the rabbit hole go?
All those great ideas and suggestions you had as a user? Be prepared to find out 99% of them aren’t original. There are reasons why they’re not there. Ideas are cheap.
It’s now your job to figure out how to make them happen. Execution matters.
Don’t get me wrong, I loved working at Microsoft. It’s an exciting place to be with so many cool things going on. Leaving was a hard decision motivated by factors not on this list.
Like any job there will be challenges. Some unique to Microsoft, some big-company specific and some near-universal that you may be experiencing for the first time if you’re new to the industry.
Learn, adapt, thrive.
There’s something entrancing about the pixel. Square and elegant and when pushed by the right people they can form beautiful art, stunning animations and gorgeously crisp text.
But as resolution and pixel density increase these building blocks of the screen become smaller and individually insignificant especially as the dpi of displays hits 220+ppi. What once was a building block of art and design becomes nothing more than a indistinct element in a photo-realistic image or a glint in a faux-texture supporting a skeuomorphism.
And so the art style of the visible pixel is doomed… or is it?
Minecraft brought 3D pixel art to the mainstream with its wild success across PCs, iOS and even the Xbox. Some people say it’s despite the graphics but I think they’re part of the charm.
Skrillex Quest is a 3D Flash game with textures made up of large pixels and all manner of 8 and 16-bit style graphic corruption that lends to the retro feel while music from the man himself ensures your ears stays as overwhelmed as your eyes.
Sword & Sorcery: EP is a recent discovery for me but its gorgeous 2D landscape, fun story and great sound make for awesome atmosphere. It’s currently available on Steam for the PC or Mac and available from the iOS store too.
LucasArts Adventure Pack on Steam gives you a bunch of point and click adventures including two installments of Indy, Loom and The Dig. They also have a Secret of Monkey Island 1 & 2 Bundle that has updated graphics but your can toggle back to the pixelated 256-color VGA version at any time.
Home from Benjamin Rivers is a creepy whodunit horror mystery where the story unfolds and changes based on your own actions. Who knew pixels could be so creepy.
eBoy is a three-man team that has been creating isometric pixel art for years sometimes for magazines and adverts but primarily available as posters and wallpapers and now puzzles too.
Color Cycling revisits the technique of animating hand-illustrated Amiga artwork that achieved the effect of animation simply by cycling parts of the color palette. This effective technique was incredibly space efficient and was something every Deluxe Paint user tried (and likely failed) at some point.
Iotacons by Andy Rash are very low-resolution icons of various celebrities and well known pop-culture figures lovingly adorned in digital format and, on occasion, as a real-world cross-stitch.
DeviantArt have an entire category dedicated to pixel art many of which are lovingly animated. If the cuteness of these pixels doesn’t make you miss them then nothing will.
F David Thorpe produced some great loading screens for computers in the 80s despite their crazy technical limitations. Binary Zone has a great page that highlights some of his best.
Animated backgrounds from various fighting games look beautiful.
Fonts & icons
FontStruct is an online tool that lets you build fonts from blocks and so lends itself well to people wanting to reproduce bitmap fonts. They have almost 500 fonts in their gallery already tagged with ‘pixel’
Semplice Pixelfonts has some beautiful proportional pixel fonts in TrueType format.
WeLoveFine also have a great selection of 8-bit wears just flowing over with pixels.
Red Bubble have a Mac Cursor Icons T-shirt that the original Apple fans can appreciate.
In the real word
Cube Craft Pixel Pages consists of a bunch of icons you can print out, cut and fold to create a pixel-deep real-world rendering when placed against a solid surface.
My Desk is 8-bit happened when Alex Varanese wondered what a video-game would look like rendered on his desk. It’s a labor of love 1:18 long video with great chip music too.
Swedish Subway shows that the small square tiles that adorn the walls of subways can be put to creative use when you think of them as pixels such as this homage to video-games.
Playing Cards featuring pixel art including some from video games such as space invaders.
8-bit pop-up cards are a fun way to make a gift card with more pixel goodness.
A love of pixels can however go too far.
Wikipedia has an excellent article on the screen resolutions and color capabilities of 8-bit and 16-bit computers. With such few colors available it was necessary to blend colors together to achieve the effect of more colors or shades. This tutorial at Deviantart is a good start although there are a few different algorithms available including the most famous Floyd-Steinberg and the ordered dithering of Windows older users may be familiar with.
Further exploration for those still with me…
Teletext (aka Videotex, Ceefax) was a low-resolution graphics system long before the Internet. It was available in some countries such as the UK via television and some early computer systems (Prestel, Micronet) used it over incredibly slow (1200/75bps) modems although it had a certain charm.
Creating graphics and pages in it was quite a challenge and I actually have a Cambridge University IT Certificate for doing so while at school where we also used a special adapter with our BBC Micro to let them download programs by holding a TV aerial up and waiting a lot. The French also had a system based on this called Minitel which was shut down earlier this year :(
It’s been a few weeks since I took up Microsoft’s employee offer of a free Windows Phone 7 (when you renew a 2 year contract) and combined it with AT&T’s offer of buy-one-get-one-free for my wife.
So how have things been going?
Compared to the iPhone 3G the Focus is much more comfortable.
The larger screen size means a wider and taller phone but with less surround it’s not unwieldy – far from it. In fact the phone sits far more comfortably in my hand than the iPhone did. This is partly because it’s a better match for the size of my hand, partly because it’s a little lighter but mostly I think because the bevel is a lot more subtle and less steep and awkward than the iPhone’s shiny-pebble inspired design.
On the flip side it does look and feel a little cheaper and less solid but a small part of that is because the back of the phone flips off like many other allowing you access to the battery, sim and memory expansion slot. The dedicated back and home buttons below the screen help keep the display clear of chrome and give the apps the space they need.
The major disappointment for me here is the screen. While it is very bright and has great contrast if, like me, you hold it rather close to your face you can see a dithering pattern caused by the unusual LED sub-pixel arrangement called PenTile on every color except green. I’ve learned to hold it a little father away as the text rendering is very nice otherwise but compared to a friends iPhone 4 the screen is a letdown.
Until you’ve used the Zune-inspired interface (part of an overall design strategy called Metro) it’s a little hard to put it into words. Static screenshots certainly don’t do it justice as it’s all about movement and flow in a way other devices aren’t.
Starting from a tiled home page that gives you a peek into your mail, messages, people and games through a gorgeous combination of animation, text and imagery that keeps the page feeling fresh and alive – a spirit that is carried through the rest of the device – not just with the built-in screens and features but also into many third-party apps (more on that soon).
In a way it feels like a window onto a bigger world behind it instead of a subset of that world crammed onto a small screen. It’s like the difference between a mobile web browser that scales in and out on a whole page versus a mobile-optimized page that lacks detail and finesse.
As many will know my wife and I are primarily based on Apple technology but even after a week with the Focus my wife announced (with a slightly sad face) that her iPhone 3GS felt old – even with iOS 4.1 on it. I have to admit the same feeling. Sure the iPhone is cure but the icon-and-list approach with the odd red circle to indicate some activity now lacks engagement.
Part of Microsoft’s advertising campaign has been the get-in-get-out approach and the home page and email works really well here. So much so that it’s broken my 3 year ritual almost instantly in that I now check my email on my phone each morning when I get up instead of using the laptop to do the same. If I can find a good Google Reader app then the laptop might not open until I get to work.
I had an initial worry when I first turned it on as there were a bunch of AT&T applications and tiles installed however it let me remove all the ones I don’t want or use (e.g. U-Verse) Score +1 for consumers over providers :)
I’m in a minority among friends as I actually like iTunes. It sorts, it plays, it lets me get audio-books, podcasts and legal music quick and fast. I’ve also used it to rip a fair number of my own tracks from CD and bolstered my collection with tracks from Amazon MP3 sometimes (like their $3.99 Tron: Legacy deal). Sure I wish it allowed plug-ins for different music formats – I have a soft spot for chip-music – but apart from that it’s been quite pain free.
iTunes however only likes to play with iPods, iPads and iPhones. Other companies have hooked their devices in unofficially in the past and Apple have been sure to quickly break it.
Thankfully Microsoft haven’t let the Mac fans out in the cold and provide the Windows Phone 7 Connector for Mac.
The software does an okay job at sending music and videos from your iTunes library over to your USB connected phone although obviously DRM-protected content isn’t going to work.
What was disappointing however is even “Purchased music” from iTunes won’t actually play on the Windows Phone even though it syncs. I’m assuming this is a bug as there isn’t any DRM here (that is marked “Protected music”) and the file format is Dolby’s own AAC not Apple’s so I don’t see why it shouldn’t work.
It also won’t sync your Mac’s Address Book and Calendar’s directly however there is a way to do this quite easily indirectly – see below.
Enter your Facebook name and password and it will fill your contacts from Facebook with each getting their own ‘what’s new’ etc. Like most people this isn’t exactly what I want but I took the opportunity to prune 100 people I never speak to – an option also exists to only supplement existing contacts on the phone with their Facebook pictures and feeds.
It also helpfully pulled in my Gmail contacts and in the cases where I have a contact card in Gmail for somebody on Facebook did a good job of joining them up. Some it seems were automatic possibly based on email addresses and full names. Others had recommendation when I went to join that were always correct and in a handful of cases I just had to tell it which ones to join up manually because they had changed their name on Facebook.
In some cases I merged three cards for a single person – their semi-public Facebook profile and photo, their private telephone numbers from Gmail and their semi-public Windows Live details for messenger and Xbox.
Finally I added my Outlook/Exchange account – all worked flawlessly and for each account you get to choose whether to bring in contacts and calendars and in most cases mail (but not for Facebook).
The result of all this is that my phone is now the best contact list I have on any device. It combines them beautifully in a way no other device I’ve owned has and not once in the three weeks since I set it up has it got confused, lost details or had sync problems.
Very sweet… unless of course your primary contact information is your Mac’s Address Book as any Mac-owning iPhone owners will be.
Getting Address Book contacts onto Windows Phone
Please forgive the SEO-tuned heading but I didn’t find any useful information online and want to share this simple technique with others :)
You’ll need a Gmail account to make this work (it also works with Google Apps for Domains too), simply:
- Copy important details from your Gmail contacts manually into Address Book as needed
- Wipe out your Gmail contacts (or backup with Export first if you want but don’t re-import)
- Open the Address Book application and head into Preferences
- Choose the option to sync “On My Mac” with Google and hit configure to enter your Gmail details
- Delete the Gmail profile from your Windows Phone 7 and then re-add it (otherwise it won’t sync phone numbers)
This means you’ll have your Mac contacts at your fingertip in Gmail so make sure your Gmail account has a secure password and follow their steps to ensure your account is well protected.
Reception & call quality
I was nervous about getting back into bed with AT&T for another two years. I need coverage at work and home as I don’t have a dedicated phone at either location and many times AT&T had left me with only a single bar to get by.
I am somewhat confused that I get 3-4 bars on the Samsung Focus in both locations and I’ve yet to have the chopping up or disconnecting of calls that I attributed to AT&T when using my iPhone 3G. Stranger still is that when I have had 1 bar (one place in my apartment) I am actually still able to make calls without it cutting out or dropping. My iPhone taught me never to try with 1 bar…
Visual voicemail is gone as I guess that was an Apple exclusive but I’ve only had a handful of voicemail messages over the last 2 years so I doubt i’ll miss it.
The camera seems pretty good and has some HDR and anti-shake options as standard as well as limited bunch of image effects. It also does video but I haven’t tried that yet.
You sign into this with your Xbox LIVE credentials and once you’re there it’s not a far off experience from the iTunes store except that it has a lot less apps. While it’s good you don’t have to wade through so much junk to find good stuff there are some omissions too like Hulu and for many people they’ll be missing Angry Birds and their favorite games and apps. I also haven’t found a good Windows Phone-like navigation app although the built-in Bing app is no worse than the Google Maps app on the iPhone that occasionally gave me nonsensical (drive into the ocean) or wrong directions (Seattle hotel being off by 2 blocks).
On the plus side some favorite sites have their own apps and they have fully embraced the metro user interface to provide a great experience – these include IMDB, eBay, Facebook, Twitter.
The bad side here is that the marketplace you’ll be presented with is the one your Xbox LIVE account is associated with and once you’ve set-up your phone YOU CAN’T CHANGE IT!
For me this means I can’t get Netflix on my device as my Xbox account is set to USA. Previously Xbox didn’t let you change your country but recently introduced a facility to let you migrate your account to one of several new countries they now support. I’m hopeful they’ll let more general country changes next year as I’m not giving up my 8800 gamer score and cool gamertag (damieng) without a fight.
There are a whole bunch of extra things I haven’t covered here including the Bing maps, Office docs, Xbox LIVE, Zune and the various apps. I’ll either update this article or post another :)
I haven’t switched my iPhone on in three weeks. There are a few apps I do miss but they’re also on my iPad.