HNHacker News
TopNewBestAskShowJobs

kellros

159 karma · joined December 7, 2011

I am a software developer and consultant focusing on small to enterprise size systems and business growth.
submissionscomments
kellros··on 10 tips about responsive website design
Great article :)
kellros··on Ask HN: Are you a generalist or specialist?
I'd argue that before one can become a 'specialist' that you should first become a 'generalist'. I would consider myself a generalist - I'm primarily a C# - ASP.NET MVC developer.

But that doesn't stop me from writing WCF services, web services, using message queuing (MSMQ but I prefer RabbitMQ with MassTransit nowadays) or writing T4 templates or custom code generators. I generally do website design (I have worked for a branding/design company previously where I designed websites based on graphic designers' slicing) that includes your typical front-end stuff like JavaScript/CSS with some pre-processing (SASS, Less, CoffeeSCript), AJAX and web sockets.

I would consider myself a 'full-stack' engineer because I am generally responsible from writing everything from the front end to the databases and integration. I consider things like design patterns, wiring up IOC containers, applying SOLID/GRASP principles (ex. abstracting components to minimalize the need for change), managing project timelines, planning and estimates a daily ritual. All my projects use either a N-Tier or a DDD approach.

I have also toyed with a multitude of programming languages and frameworks outside of my scope of 'specialisation'. I'd hence argue that becoming a good programmer would requiring you to become good across the board (and at things outside the scope of the project - ex. I apply similar approaches to what I've learned from writing Scala/Python/Haskell).

I wouldn't consider a programming 'specialist' the same as a domain expert.

You definitely need to acquire domain knowledge to be efficient at what you do, but you shouldn't need to be considered an industry expert. I've only seen bad things happen when programmers are left to make decisions that require domain knowledge because there are no real domain experts around.

kellros··on Ask HN: Why is recursion such a popular topic in interviews?
I rather dislike recursion, I find it to be the remedial hammer of software development. Sure there are some use cases, but most problems are solvable in a more efficient manner, such as the use of formulas. Even if a formula is not viable, there are other methods that produce better maintainable code. I label recursion as 'use as a last resort'.
kellros··on Ask HN: How can a seasoned developer approach design and be good enough?
I second this motion. Bootstrap is a great place to start. There are a couple of other things such as background images, fonts, balance, icons (ex. FontAwesome) and some other minor changes you can make to make your website look even better.

There was a great post on HN a couple of weeks ago, unfortunately I've lost said link - just google for 'x ways to make your website look better'.

kellros··on Ask HN: Do you use algorithms / data structures?
I find that design patterns prove more useful (more of the time) in web development in comparison to implementing algorithms and data structures from scratch. High level web development languages (ex. C#/Ruby/Python/Scala/Groovy/PHP etc.) and some somewhat lower level languages (Dart, Go, C++) do provide tested algorithmic implementations and data structures through BCL's.

Implementing a Fibonacci sequence or a prime number sieve is much different than implementing e-mail scheduling component with dynamic constraints. I think the reason why Algorithms/Data Structures are important for interviews is because they show not only your level of experience with the tool-set you use, but also deeper understanding of the inner workings of said tools.

kellros··on I earned pathetically $6.30 for my iOS App this quarter
Have you considered a specific nieche or industry where this app would be viable? Unfortunately although your app is sending email instantly, receivers usually don't read their e-mails instantly - most people I know dislike looking at their inboxes. I mostly check my own emails for bills around the time I expect them. You might have to consider additional notification options to make it useful. Just my 2 cents.
kellros··on Poll: What kind of tool do you use to write code?
I mainly do .NET development and must admit Visual Studio is the best IDE around (especially with Resharper and other plugins/extensions). I would rate the jetbrains IDE's best in their class (IntelliJ idea, pycharm, rubymine, webstorm etc). I also found the eclipse distros pretty good as well (ex. Galileo).

Overall there are some pretty good IDE's around, just need to shop around a bit.

I personally use notepad++ as a text editor, although lately I have been favoring sublime text 2. Geany on Linux seems pretty solid as well.

The point stays that IDE's generally favor statically typed languages while text editors are generally used for dynamic, scripting and low level languages.

kellros··on Ask HN: What to do instead if you are not ready to startup your company now?
If you can afford to, get as close to the action as possible (I take it in this case it would be to join a startup).

In my personal opinion, startups aren't really a viable business strategy. The general idea of a startup is to attract investors to your idea with no reasonable timeframe regarding profitability, instead focusing on fast tracking the creation of a product/s. I really prefer the small business approach of prototyping and reworking to reach profitability and with every action taken to keep in mind the most important question: how will this directly make me money?

kellros··on Ask HN: How would you monetize HN?
Would this be to monetize HN or a HN like website?
kellros··on Ask HN: How does the HN "More" link work?
So the fnid is essentially a caching mechanism for pre-rendered web pages linked to a point in time? That's pretty neat and simple fitting in perfectly with the simplistic design of HN (not confusing simplistic with basic, instead a reference to the design paradigm).
kellros··on Ask HN: What is the right reading/coding ratio for learning purposes?
I'd say it would really depend on your level of education. When learning any tooling, you spend more time in the documentation at the beginning and need to refer to it less and less as you gain experience. The next steps are specific to the field you are working in, whether it be LOB, embedded, distributed, data processing etc. For LOB apps I found it invaluable to review design patterns (because all tooling/frameworks use them) and object-oriented design principles. Development is more than just programming. Programming is the method of writing software and should become an asset in your arsenal, just like project management or problem solving skills. Unfortunately a lot of educational material doesn't go into the realm of proper architected software and instead just focuses on programming. Take a look at domain driven design (ddd), distributed domain driven design design (dddd), command-query responsibility segregation and different types of logical layering such as n-tier, client/server,semi-connected apps or onion layering too.

On a final note, write a lot of programs - even if they are only a couple of hundred lines of code. Productivity really kicks in after you've become comfortable not reinventing the wheel all the time - everyone should invest time into working this out of their systems.

kellros··on Ask HN: How do you stop proposals being outsourced/shopped around?
I agree charging for it is a good way to go. If your potential customers are shopping around, it might be because that they fail to see how you will deliver the same value at the rate you are charging. I personally try to advise customers to spend their hard earned cash wisely, especially when it has to do with websites because they rarely see the other costs involved such as technical maintenance, self maintenance, recurring costs and management. Afterall, they come seeking an experts advice.
kellros··on Job titles are a team anti-pattern
“We have two designers, two front-end developers, 2 back-end developers, and a tester.”

I'd say there's a difference between a label and a job specification. If you get to choose your own title, it's meaningless.

You tend to specialize in that which you do for your 8+ hours a day. I personally wouldn't call someone a front-end developer unless they are very specialized (to the degree that they understand the internals and are writing custom controls for the stack).

This doesn't imply that someone can't be specialized in multiple fields - in the end you are just fulfilling a specific role. I personally believe a team works well when everyone is capable of doing most things (from doing front-end dev, back-end dev to gathering requirements and communicating with the client) and then having specializations.

kellros··on Ask HN: How to make the transition to freelance work
Unfortunately, freelancing is a service. Your main goal should be to go out there and sacrifice yourself so others can make money out of your work. If the work you produce doesn't make money, then you should consider who is at fault. If it's not you, then it really is you - because, you should have been consulting with the client in order to improve the product/service or to advise the client against doing this and ask for referral. This is the only case where integrity can be bought (by sacrificing potential work).

Servicing is all about satisfying the needs of other individuals - in the case of businesses, this is always to make more money. As soon as you grasp this, you will start approaching potential customers with the foresight to tell them you want to make them money, hourly, vs. you want to charge them money, hourly.

I'd say the best preparation would be to save up money in advance, so that you may work a couple of months without getting paid. Although, ideally you should realize that you do need money to start freelancing full time - even if it's not your own. Ideally, you will have been freelancing before taking the plunge and have had quite a bit of freelancing experience already.

In the end, the best way to approach freelancing fulltime is to see it as a business. You will be running a business (as a sole-proprietor) and be working for yourself and charging business rates. I'd also urge you to watch and learn from this: https://vimeo.com/22053820

It's a tough game and you need to be a serious player. Best of luck!

kellros··on Ask HN: How did you find customers and/or learn sales?
The real trick is to validate the feasibility of said product via market testing upfront. It certainly depends on the time it will take to develop the product, but early validation is very important (and every step of the way).
kellros··on Ask HN: what are the best looking web application user interfaces?
I would never attribute 'sexy' to a website.

Stylish and functional, I'd suggest you take a look at lifehacker.com . Functionality wise, it depends on what's appropiate for the type of website. There's a reason why portal websites are rarely being used (except on say, company intranets). Stylish I would attribute to a lot of things including layout, conciseness, typography, certain interactivity, considerate and a few others including things like support for graceful degradation where appropiate.

A website in my eyes is something someone visits with predetermined intentions looking to satisfy themselves within a specific niche. This described behavior doesn't differ from real world examples such as when you go to a supermarket to buy food.

kellros··on Ask HN: If you use Ubuntu, which backup utility you use?
I prefer doing some backups manually and automating others. I usually manually backup my projects/files on a flash stick/external hdd/NAS/dropbox. I don't have anything against CVS - I regularly use git and svn. Given git's snapshot based model, I think if it's on git it's probably not neccessary to create snapshots and storing them (rar/tarballs etc.).

In terms of environment, I prefer to create a folder and store installers and patches (ex. environment/dev, environment/install) - specifically the most recent ones.

A lot of devs I know prefer to doing their development on virtual machines and backing up the entire VM (think isolated dev environment). I personally, find it too slow. I prefer having everything I need available in order to do a fresh install if required (some other OSes tend to optimize for current hardware during installation).

kellros··on How to monetize 1 000 000 users?
Ask them for a dollar! :)
kellros··on An Open Source A&Q System
That design looks exactly like stackoverflow.
kellros··on Ask HN: Any chances to eventually relocate to US if working remotely?
Good question. I reckon it will depend on the company you will be doing work for. If it's a tech startup that hires you as a freelancer and later want to hire you full time - then yes. Most other companies, probably not.

My motto generally is, don't bet the bank on anything. A lot of people and companies try to bargain with you by quoting chance - 99.9% to their own benefit and greatly at your loss if it doesn't pan out. (They try to make you take on more risk than them, even though they will profit a lot more if whatever pans out)

Simply put, do the job for the jobs' sake and keep people/companies accountable to promises they've made. If it's not a promise, then it's probably mumbo jumbo.

kellros··on Ask HN: Why do people tell us they love our idea, sign up then never come back?
It looks pretty interesting (I have a twitter account but barely use it, if ever).

What are the costs involved for the end user? Is it free? If so, tell them.

Consider your filter tweets section from an adoption standpoint:

Create filters to automatically move Tweets to folders, and reduce Twitter noise. Tweets can be filtered based on hashtags, URLs, Tweet content and author - or any combination of these.

1. I wouldn't recommend using the name 'folders'. Tweets aren't synonymous with letters (that go into folders), tweets are more like sticky notes. I'd suggest you think of a new name to call the tweet containers.

2. You first talk about moving tweets into folders and then about filtering them. (I think you are implying that you filter tweets into these 'folders'). You should use easier to understand terms such as 'Sort tweets from those who you are following into ...'. Use comparisons to simplify the explanation.

3. Provide sensible defaults or provide a sensible way to get users started. (ex. type in the twitter handle/username from your favourite tweeter). A demo is a good idea, but there should definitely also be an easy way to get started.

4. Market yourself effectively. From what I see on your website, it seems like the website is a twitter client - but I'm not sure. If it is a client, then say so. (You have to tell people what you want them to use your service for).

Some of the above recommendations simply require rewriting your copy (text on website). I have also suggested some options that will require hiring a developer. I reckon the best measure to use here is: if your mother uses twitter, will you be able to sit her down and will she be a 'self-starter' using your website or will you have to hold her hand? Try it. She'll definitely give you some useful input.:)

kellros··on Ask HN: What is your opinion on freelance websites?
Most clients prefer to work with people who they can visit, sit and talk to. Unless you can get at least $30+ per hour, it will probably be a waste of time.
kellros··on Ask HN: How do you meditate?
I'd suggest you check out 'Mindful meditation'. Luminosity is a pretty fun way to train your brain, other than that, you have to work on puzzles and work on memory retention.
kellros··on Ask HN: how much of your programming skills depends on Google
Currently, very little. Only when I have to revise some things ( < 5% ).
kellros··on Codeacademy for competent programmers?
Practice!
kellros··on At what point can I say I’ve “learned” a language?
I tend to say I am familiar with a language if I've only spent a few hours on it. Knowing a language or 'learned' a language for me is when you are good (enough) to make money freelancing using that language.
kellros··on Review my new business idea, Friday. Coders for $2000 a month.
Cool idea, dislike the stock photo though :P.

Even at South African rates, that's low considering risk and other factors towards the programmer.

Furthermore, freelance is generally by billable hour or fixed rate. By billable hour, I mean something built of worth for that hour - that's usually around 80% of actual time spent.

Unfortunately at that rate, the only programmers I can see that will find this offer attractive is: 1. Those who did crash courses and have no real world experience. 2. Programmers who lost their jobs and need something for the interim. 3. Freelancers trying to get into the market (or get clients).

My standard freelance rate at the moment is about $40/hour and I consider myself a pretty good developer with 4 years commercial development experience and have done quite a few freelance gigs (I have been coding for 6 years prior as a hobbyist). I consider this money as my 'spending' money.

kellros··on Ask HN: What problem isn't already solved in iOS app store?
Anything worthwhile takes time.

I'd suggest you find a topic you are passionite about, check out what apps are already available, grab a few and learn from their mistakes.

kellros··on Ask HN: Microsoft from non Webdev perspective?
I'd contest that argument. I'd agree perhaps with IE 8 being a PITA, but you can't reaaaaaaaally blame Microsoft for IE 6. It's not like google existed in its magnitude back then or even mozilla. Back then there wasn't much stability either i.t.o market leaders (if I remember correctly netscape escaped roundabout that time and opera didn't have much market stake).

If you check IE 9 developer tools, you can't even 'switch back' to IE 6 anymore (well, atleast not in x64 mode).

There's a reason why you should opt to use 'cross-browser' libraries such as jQuery. Google chrome has a couple of bugs and even firefox. Not all problems have solutions - take for example styling of 'web' controls. IE renders native controls, browsers render their specific controls - some allow text-indent while others don't.

In terms of application development - as far as I know all non .NET tools have pretty much be phased out (ie. VB6 etc.).

You essentially face the same problem to some degree (ex. users that still run with IE 6 are probably like to be running .NET 2.0 or none at all).

I think at the moment Microsoft is opting for cross-platform apps via web and wcf/web api services. You can also use Mono, but it's generally at least one major version behind (couple of years) and doesn't fully support everything the .NET framework does.

When talking about 'cross-platform' apps, people are rather quick to forget that applications are written during certain time periods. It's easy to support users who are using 10 year old software/hardware (ex. windows xp 32) with 10 year old software (.NET 1.0).

I reckon it's about the same effort to force a user to install 'open source' libraries such as open-gtk as it is to force the user to use a different browser or install the .NET framework if they're on windows.

I'm actually hoping that all the legacy windows operating systems get upgraded to Windows 8 when it gets released. Microsoft is running a campaign where you pay 30$ or something to upgrade a Windows XP+ OS to Windows 8. Windows 8 also boasts quite a bit of improved performance and less resource usage - which makes it perfect for all that legacy hardware (I reckon most PCs built the last 12 years should be able to run it). This would also pave the path to better HTML standards support with IE 10 and better .NET framework support (4.5).

In regards to the tools - I reckon if you're going a C#.NET route with professional+ visual studio with other addons, then I'd say the dev environment greatly surpasses that from what I've seen on linux (visual studio pro ~ $400 USD, addons are free and priced - I use resharper, mindscape web workbench and tangible t4 daily).

You could always go Java route if you don't like the .NET framework.

kellros··on Ask HN: How should I evaluate a startup as I job hunt?
Any startup should not just plan how to make money, but also test if their idea is feasible. As someone stated, working for startups carry a much higher degree of risk (mostly because you would be working for less $$$ and the difference you are 'investing').

It would probably be a good idea to ask yourself - are you willing to invest in this company? If you are, is it for giggles or a future?

I'd also say if you are looking to join a startup, pick one that is incubated (ex. ycombinator, google umbono etc.)

← PreviousPage 4 of 7Next →