hacker news with inline top comments    .. more ..    13 Jun 2015 Ask
home   ask   best   4 years ago   
Ask HN: Are there actually any exciting companies in Seattle?
9 points by seattle_spring  2 hours ago   3 comments top 3
1
thematt 25 minutes ago 0 replies      
I lead the software team at Blue Origin, come check us out. We're right outside Seattle.

https://www.blueorigin.com

2
kvanderd 1 hour ago 0 replies      
I would checkout http://www.ivysoftworks.com/. The CEO of this company was the CTO of a company I worked for. Extremely developer friendly, great visionary etc.
3
larrykubin 1 hour ago 0 replies      
I am personally excited about Redfin and Socrata. Redfin made is super easy for us to find and purchase a house. We went from knowing nothing and not having a realtor to closing on a house in 30 days. Socrata is working to open government data.
Ask HN: How many companies fail to engineer for scale?
2 points by reilly3000  7 minutes ago   discuss
Ask HN: Has anyone used web-scraping-as-a-service that didn't suck?
4 points by peteretep  5 hours ago   7 comments top 5
1
ccarter84 1 hour ago 1 reply      
Seconding this question...I've wanted a way to get HN top posts each hour, aggregated (and deduped) by day/week, so that I dont have to feel the need to check as often. Thanks for this links, hopefully one of these will get me there!
2
mariocesar 4 hours ago 0 replies      
I got great experiences with http://scrapinghub.com/, you can hire them as consultants also and short time contract is enough to get in the right direction. really smart people
3
renaudg 3 hours ago 1 reply      
I heard good things about https://import.io/
4
Roger_Archive 2 hours ago 0 replies      
My colleagues at https://www.archive-it.org do a pretty darn good job
5
t_liu 5 hours ago 0 replies      
it depends, tools like Kimono can gather data on a topical layer, but cant really interact with the page(via js). I wanted to scrape some data on a site I was interested in, but I need to interact with the site to get the data, so I ended up writing my own crawler
Ask HN: My 12 year old nephew wants to make a game, how do I help him?
31 points by andersthue  7 hours ago   52 comments top 37
1
veddox 4 hours ago 1 reply      
Definitely Scratch (https://scratch.mit.edu/), I would say.

It's a drag-and-drop, graphical programming environment designed specifically for kids of that age group. It teaches them about conditionals, iteration, a bit of object-orientation, and makes it very easy to build relatively sophisticated games/animations within a pretty short amount of time.

I've had good experiences with it with kids of that age group, many really enjoy it.

2
svarrall 4 hours ago 1 reply      
What about Unity? There are plenty of example projects and easy to follow tutorials that will allow him to make something up and running that's impressive really quickly. Wouldn't expect him to make something from scratch at that age, but he could certainly amend from an existing concept. It won't necessarily help with teaching programming but it's a great start. It's what we do for work experience students and they love it.
3
legacy2013 4 hours ago 0 replies      
Game Maker is the best way to go at that age. I used it when I was younger and the drag and drop functionality was great. As I grew older and started learning to code, the editor let me easily start writing scripts and such to give me more control over the gameplay
4
decodv 4 hours ago 0 replies      
I recommend you try Phaser - https://phaser.io/ - a JS library for EASILY creating HTML5 games. Which is gratifying. And encouraging.

I had never heard of Phaser until seven days ago. Since then, I have created a full "short-game" (avg. game time is 1-3 minutes) with all of the basic elements: a loader, start menu, object collisions and overlaps, animations, sounds, timers, scoring, etc. Nothing to sneeze at, and Phaser made it super simple.

To go along with Phaser there is the MightyEditor - http://mightyfingers.com/ - which is a web based open source HTML5 game editor, based on Phaser.io game engine. Essentially, it's a WYSIWYG drag-n-drop editor that generates the Phaser code in the background. I haven't used MightyEditor as I'm more of a coder, but it exists for you try.

Now, you can certainly produce more powerful games with other approaches/languages, but I doubt any will let you start developing a game right out of the box. Likely, you'll spend all of your time trying to learn the language ... that you never get around to actually making a game. With Phaser, you just start making your game.

5
loumf 2 hours ago 0 replies      
I am working with a 14 y/o who took some simple python class beforehand (so knew basic stuff functions, conditionals, loops, but no OOP).

But -- he really wanted to make "real games" with a "real programming language".

So, after asking some game dev friends, I went with FlatRedBall (it's a little bit of a GUI builder with C# code-gen).

Look at this pong tutorial to get the basics: https://www.youtube.com/watch?v=KmHmxlljA5c

It's open-source and a bit janky at times, but he's doing amazing things with it.

My process was:1. Do a tutorial we find on the net2. Think of a feature to add, add it3. Keep going until we get bored with the game4. Find another tutorial, goto 1

We did pong, flappy-bird, RockBlaster (like asteroids), and now he is doing an original -- it's a 2-D dungeon, rogue-like. We meet an hour a week, and then he does an hour or two a night on his own.

If he needs to know something about C#, we take a break and learn that in a console app.

6
Mithaldu 3 hours ago 1 reply      
Speaking from my own experience, give him not a programming language, but either a game that includes a programming language, or a tool for making games that includes programming.

Game Maker is the biggest player in that market and used for tons of tiny one-off indie games, as well as lots of commercially successful and great games:

http://www.yoyogames.com/studio

Have a look at the showcase to see what kind of games have been made with it: http://www.yoyogames.com/showcase

7
deepkanwal 4 hours ago 0 replies      
We built an iPad app called Toy Engine (http://www.toyengineapp.com) just for this! It's free and it uses visual scripting.

You make your games using a drag-and-drop level editor (2d only) and then double tap an item to add a script to it. You can also share your levels and download levels made by other users.

8
ddebernardy 4 hours ago 1 reply      
If you've an iPad, look into http://codea.io

It's maintained by an indie game studio called Two Lives Left (http://twolivesleft.com), which produced the excellent Cargo-Bot game -- and for that matter, let him get a feel of programming with the latter.

9
robterrell 3 hours ago 1 reply      
One of my kids started with Codea on an iPad 1 (and it still runs on that ancient hardware today!) and is quite pleased to be able to tell people she can code in Lua. Overall, it's extremely well done. However, I think it gets hard to work through high-level logic -- you start off writing code in the draw() function, doing things once per frame draw... getting to a more abstracted level has been difficult in Codea.

However, her school does some Scratch every so often, and she's taken to that too. Scratch exposes lots of levels of abstraction, and the visual editor approach makes it easy to experiment with different ways of doing things. She's done several school projects as Scratch games. (Which, to me, is way better than gluing crap to pasteboard.)

I've tried to get her started in Unity -- I teach a Unity class to new hires at work -- but it's been uphill. Too abstract, too conceptual, too much surface area. And C# has too much syntax that gets in her way.

Lua is a better language for her. But Scratch is even better: no syntax, just ideas. Also, Scratch has a lot of localizations. So, give Scratch a try!

10
brudgers 3 hours ago 1 reply      
is there any drag and drop free tools or games about building games?

The first order help a young person needs is being taken seriously and encouragement in their process of discovery. The important conversation isn't "Use this" in it's strong or weak forms. It's the default StackOverflow comment: "What code have you tried? What error are you getting?" (perhaps in a weaker form, perhaps not, depending on the child).

Let the child own the process and understand that the most likely outcome statistically is that the actual process of creating a computer game will turn out to be unattractive as it is to a first approximation for everyone. Making games is hard for highly intelligent adults - much harder than writing a Rails app.

The mistake that I find easy to make with my own child is an unwillingness to let their interest unfold in its own time as part of the growing process. Adult interests and behaviors and skills take years to develop. The twelve year old boy will be radically different intellectually in two years...or even one. It takes patience and a long-term view and an understanding that many of a child's interests are passing. Some come back, most don't, and what tends to come back are interests that they find themselves sharing with friends. To put it another way, your nephew's English comprehension could be orders of magnitude better in five years. His understanding of mathematics most certainly will.

For concrete advice:

Provide high quality resources - the sort of durable tools and books and websites that one would give to an adult. The interest that wanes in a month at twelve may be rekindled for a year at thirteen and arise from hibernation to become a career choice at twenty four...and there sitting on the bookshelf is a weaker form of The Art of Computer Programming for games.

Good luck.

11
kpozin 5 hours ago 1 reply      
I got my start in programming around the same age using tools from Clickteam [1]: Klik & Play, The Games Factory, and eventually progressing to Multimedia Fusion (now Clickteam Fusion). These are all drag-and-drop tools, with graphical level editors, event loop editors, etc.

If he doesn't mind using a Windows machine for development (the actual outputs are cross-platform), I think it's a great place to start before moving on to programming languages.

[1] http://www.clickteam.com/

12
spectre256 3 hours ago 0 replies      
Since the other commenters have mentioned a ton of great tools, programming languages, SDKs, and the like, I'll make some suggestions of a different type.

You said you'll be helping your nephew, but consider this as well: find a local group geared towards helping kids learn to program. For example, Coder Dojo(https://coderdojo.com/) has hundreds of locations all over the world. Your nephew doesn't need to be accompanied by a tech-savvy guardian or even bring a computer, usually such groups supply coaches and computers.

They are a ton of fun for all involved, and it's much, MUCH easier to learn something challenging like programming with a coach or even other students.

13
k_ 3 hours ago 0 replies      
Stencyl (http://www.stencyl.com/) could be a great tool : it's easy at first to do simple games without knowing anything about code, and you can progressively learn code, starting with basic logic.

Plus, it compiles natively to many platforms: iOS (iPhone/iPad), Android, Flash, Windows, Mac, Linux

14
SkyRocknRoll 6 hours ago 1 reply      
You can try following software from MIT

Create stories, games, and animationsShare with others around the world

https://scratch.mit.edu/

15
nogridbag 4 hours ago 0 replies      
Microsoft TouchDevelop was posted here on HN recently:

https://news.ycombinator.com/item?id=9545019

I tried out one of the examples to make a Flappy Bird clone in 5 minutes - pretty neat.

16
xchip 3 hours ago 0 replies      
Wow lucky you your nephew is interested in learning. Go for pacman, but before make sure he plays a bit so he gets kind of addicted to it. Then to spark his curiosity ask him questions about how he thinks it works, something like this: http://www.exploringbinary.com/how-i-taught-third-graders-bi...

Have fun! :)

17
onedev 2 hours ago 0 replies      
Teach him about SOA and MVC, I hear 12year olds go nuts for that stuff.
18
mindrun 6 hours ago 0 replies      
How about code.org? http://studio.code.org
19
pjc50 4 hours ago 0 replies      
Game Maker Studio is popular.
20
colinbartlett 4 hours ago 0 replies      
I know non-technical people that have used GameSalad to create games that were even published on the AppStore.

http://gamesalad.com

Might want to start with a general intro to computer programming though like Scratch, which has been mentioned here.

21
edtechdev 3 hours ago 0 replies      
I'd recommend starting at code.org to learn the basics of programming (loops, etc.) and learn how to make basic games like flappy bird:

http://studio.code.org/

Then depending on his interests and abilities, there are various beginner-friendly tools for making games below, from easier to harder and free to commercial.

I would talk with him first about what kind of game is he interested in doing. Something like flappy bird or an arcade game, or modding minecraft, etc. If you make it about learning to program for programming's sake, he may get tired of it quickly and not be interested in programming again for a long time, if ever.

free:

https://www.tynker.com/

https://scratch.mit.edu/

https://www.gethopscotch.com/ ipad)

http://www.toyengineapp.com/ ipad)

http://twolivesleft.com/Codea/ (ipad)

http://www.stencyl.com/

a little more advanced (text instead of graphical programming), works in browser to make HTML5 games:

http://www.playmycode.com/

windows only:

http://research.microsoft.com/en-us/projects/kodu/

commercial:

http://www.learntomod.com/ (mod minecraft with visual programming)

http://gamesalad.com/

http://www.yoyogames.com/studio

https://www.scirra.com/construct2

23
hobo_mark 4 hours ago 0 replies      
I was immediately reminded of this old classic

http://thedailywtf.com/articles/Could-You-Explain-Programmin...

24
joshuapants 4 hours ago 0 replies      
I like the Invent With Python series by Al Sweigart, they are CC licensed and they are a nice friendly introduction to programming with Python (one of the books deals with text games, another with Pygame). I'm not aware of translations into other languages, but they are written at a level for children to understand so they may be worth a look.

There are also languages like Scratch and various "no programming required" game development environments like Construct2. They might be good places to start, but they can also be crutches that prevent progress into more powerful tools.

edit: Is there some sort of downvote brigading going on here? I see a ton of helpful posts in gray.

25
fsk 4 hours ago 0 replies      
If you're a web programmer, then the easiest way is to do an HTML5/Javascript games. That's the closest to what you already know.

Get him some books on html5 and javascript, or good web-based resources.

Make a simple game with him, like minesweeper or Tetris.

Also, if you make an HTML5/Javascript game, you can use something like PhoneGap/Cordova to compile it to a mobile app.

26
ken_railey 4 hours ago 0 replies      
Shameless plug: http://flowlab.io
27
kozukumi 3 hours ago 1 reply      
I think Java is a nice teaching tool. It has a good OO design and you can't break anything with it. No worrying about memory, etc. The only real drawback is the verbosity and having to "just do" things at the beginning (such as ignoring just what public static void... means).
28
bhashkarsharma 4 hours ago 0 replies      
You can check out MIT App Inventor. It uses scratch. Here's an example of a game:http://appinventor.mit.edu/explore/ai2/space-invaders.html
29
doctorpangloss 4 hours ago 0 replies      
Many of the games he might already be familiar with have sandbox, modding or programming-like environments that require no documentation to get started.

If he plays Minecraft, he should definitely study Redstone (http://www.minecraft101.net/redstone/redstone-basics.html). You can make whole computers with it (https://www.youtube.com/watch?v=aQqWorbrAaY). It's what I recommend to my friends who are looking to get their children into programming or making games. Don't underestimate how much more compelling Minecraft is than literally everything else out there.

Starcraft II is free, and its map editor is excellent for nearly every kind of top-down game. It's a very drag-and-drop sort of interface that doesn't require any programming. You can probably build the widest variety of games with it.

Team Fortress 2, which is also free, comes with the Hammer Editor. It's a little more idiosyncratic than Starcraft II's map editor, but also a great way to just drop things in and play. It's ideal for first person shooters.

A bunch of games have really fascinating programming-like experiences. DOTA 2 (free) has its Workshop Tools; Cities: Skylines (paid) has an Asset Builder and programmed mods. A lot of these games are a bit above 12 years old though, so it might be a little intimidating.

I think for most kids, they're more interested in Garry's Mod (http://www.garrysmod.com) and Little Big Planetsandbox environments. You just do stuff and things happen, and it's all very pseudo-physical.

I've seen some other recommendations on here. Generally most kids aren't equipped with the amount of patience these actual programming environments require. If you insist on programming, then Scratch is the best of the options. Check out the first assignment in Harvard's CS50 class here (http://cdn.cs50.net/2015/spring/psets/0/pset0/pset0.html#itc...). To put in perspective, this is regarded as one of the easiest to learn and most polished programming environments, and students at University level (almost twice your son's age!) are given 2 weeks to make something. So as an introduction, this is still extremely hard.

Conversely, things like Unity3D are going to be super crazy complicated, to be completely honest. It's disheartening to read any documentation. Just orbiting the camera in the viewport is a skill. Plus, lots of kids like to build multiplayer experiences, which are all possible with the map-making and modding tools above, but not possible with any of the actual coding frameworks written below.

30
gavanwoolery 4 hours ago 0 replies      
I started learning in QBASIC at around that age (my highschool also taught BASIC on Apple IIe machines). There are modern (i.e. 64 bit) versions of it but I can't vouch for them. If you can get the original version up and running, it is a great intro to programming.
31
jowiar 3 hours ago 0 replies      
I'll plug my friend's book here: http://www.gamkedo.com/kit/

It's in JS/canvas, so tools that you should be familiar with.

32
paublyrne 4 hours ago 0 replies      
What about looking at Corona, if he has a mobile device or tablet to test on. It is simple to make simple things quickly, the physics libraries aren't complex.

https://coronalabs.com

33
fallinghawks 3 hours ago 0 replies      
This might be a little too simple but check out Blockly

https://blockly-games.appspot.com/

34
Jugurtha 2 hours ago 0 replies      
This is really cool. I'd say drop the drag and drop; he's 12, not 4.

I started programming in BASIC around 9 and C at 14, didn't speak a word of English, and didn't have internet or access to books.

How I worked was: Suppose I wanted to print something, I'd look up the verb in a dictionary for "imprimer" and would find "print", then would look that up in the help. Then would copy the example code given and run it, and then I'd change stuff and see how it'd affect the functionning of code (errors? go back to dictionary, etc). And based on the consequences of my actions, I'd deduce the role of what I changed.

I wrote a program that gave you information on a country you'd enter (population, area, capital city).. You had to type the country in capital letters because I didn't know how to do it otherwise.

He's 12 years old and he's got the internet and you! It's also a great time to improve his English.

The biggest favor you'd do for him, whether you choose a graphical or another approach, is to encourage him and make him stick and never drop the ball. For me, the biggest mistake was going on and off. If I had kept at it, I'd be at least moderately good instead of sucking. You can also show him the work you are doing and make him understand that it's really not that hard to get started and hopefully, at some point, he'll understand the power of this: I can make this computer do mostly anything I want! And he'll be hooked.

TL;DR: Whatever you do, make the priority for him to stick and understand the power at his fingertips.

35
hluska 4 hours ago 1 reply      
Is he a Minecraft fan?? If so, Minecraft has a very active modding community and that might be a great place to start.
36
euroclydon 3 hours ago 0 replies      
load81 by the author or Redis. It does not get any more elegant than this!

https://github.com/antirez/load81

37
frenchHipstaz 3 hours ago 0 replies      
He could try darkBasic Pro for a start. That's how I got into programming.
Ask HN: Tips for a canadian getting a job down south
2 points by sirbetsalot  2 hours ago   3 comments top 2
1
brudgers 14 minutes ago 0 replies      
One thing to keep in mind is that CV formats common in other countries, such as attaching photographs or explicit statements of age, marital status, etc. may lead to immediate exclusion as a candidate due to EEOC liability. This more common in corporate environments, but might also stand out as a bit of an oddity in smaller companies.

Good luck.

2
gamechangr 2 hours ago 1 reply      
I am not a data scientist and frankly think the term is used way too frequently to describe many different backgrounds, but that aside...Visa concerns are not a major obstacle.

Your network really matters. This cannot be emphasized enough. You can go with the standard answers like "go to Meetups". While you should do that for sure, you may have do something more radical. Consider visiting whichever city you would like to work at for 60 days and see what opens up. That's by far the fastest.

Ask HN: Anyone deployed OpenVPN and wouldn't mind sharing their experience?
4 points by jtchang  3 hours ago   discuss
Ask HN: How much should I be paid an hour? (Australia, Contract FED)
12 points by ausdevthrowaway  13 hours ago   21 comments top 6
1
dsacco 2 hours ago 0 replies      
I'll preface by saying that it's hard for me to really critique that number because I don't know where in Australia you live and what the cost of living is there.

That said, intuitively I feel that is insanely low. If you are framing yourself as a consultant who can solve quantifiable business problems using frontend development, then ~$400 per day is absurd. I would say increase regardless of your living costs. Asssuming 30 weeks of utilization, you're working for $60,000 per year. If you're doing remote freelance work then you can target US companies and literally quadruple this.

I live in NY and I charge between $1000 and $2000 per day for information security services that normally take 2 - 4 weeks per engagement. Mind you - information security is a specialization that is not as quantifiable as developing a website for business purposes, so in theory you should be able to achieve higher rates than that (Brennan Dunn, as an example, charges $20,000 per week as of 2014, and he does a mixture of web development and copywriting).

If you follow 'patio11's advice you can certainly increase this. The beautiful thing about being a consultant is that you can choose to work remotely, which means you can anchor your cost to the living costs of your client's location. I'd be charging the same if I lived in Kansas.

Increase your rates, and if necessary rebrand/reframe your value proposition. Also - get rid of the recruitment agency. Agencies can be good, but you need transparency regarding your rate and how much they are taking for placing you. You should also try to develop a strong personal network for referrals.

You will know when you're successful because you start saying no to potential clients as much or more than you say yes.

2
xytop 10 hours ago 2 replies      
Oh guys..I'm a senior web developer (working on a leading position in a company which runs 3 startups), I speak natively Rails, PHP.. fluent in SQL and still i get..

$25/h..

I'm in Europe though.. but when I look at your numbers I want to cry.

That's very a lot to my taste.

Edit: did calculations.. even $24/h ($46800/year)

3
girvo 6 hours ago 0 replies      
Depends. Freelance, or consultant? I've done both, and am in Brisbane. I charged $400/day as my normal rate for the latter. The former was project dependant. And could be from $10/h if I messed up quoting to $1000/h if I quoted well and everything went well.

Working as a full time "full stack" engineer I'm earning $50/hr with 8 years of experience under my belt. Which I prefer, as I earn good money for my age and location, without the stress of finding work.

4
nness 12 hours ago 0 replies      
Depends on the number of hours you are working a day, and assuming you're being charged out at time and materials, that would be $50-60 p/hour.
5
stephenr 13 hours ago 0 replies      
In my experience pimps (Im sorry, "contract agencies") just add their costs on top of your requested rate, and offer that to the client.
6
candeira 12 hours ago 2 replies      
You don't say how much experience you have, how many hours/day, which city you work in, or in which industry. So I'll answer assuming you're junior but you've been doing this for at least a year, you can write good code and good English, you're working 8 hour days, you're in Sydney or Melbourne, and you contract out to an agency doing work for mid-size companies.

I'd say you are at the very very low end of the scale, if not falling off the scale. If you have any skill in front-end JS, and aren't a trainee or a recent graduate with zero experience, you should be getting twice that money easily.

For a comparison, I do back-end and devops work, and I charge in the range between $85 and $175 per hour (1), depending on the client and the work. Right now I have a project of each. I suspect I'm also undercharging some clients, and that intermediaries who genuinely can't pay me more are also undercharging. However, I don't work for recruiters/outsourcers, but directly for companies shipping software, though some of them are intermediaries in the sense that they run a project for a client, and then hire me as a contractor instead of as an employee. Also, I haven't done almost any front-end work, but it's my impression that front-end skills are in higher demand, and rates are higher on average.

(1) AUD, not USD.

You say you don't have other people's salaries to compare. I too wish Aussie JS and front-end freelancers shared their fees here. Here's how to compare freelance day/hour rates to a full time salary, by the way:

A full time worker puts in about 2000 hours a year. As a freelancer, you have to put in your own training, sales (finding work), you pay your own superannuation (because you do, right?), equipment (you buy your own laptop), training (you buy your own books and courses, you pay your own way to attend conferences), etc.

Thus, when comparing your day rates with the money a full time worker gets, you should take into account extra benefits paid by their employer like super (for non-australians, this is a retirement account, by law employers' contributions are about 9%, but some companies pay more, up to the mid-10s), training courses and conferences, etc.

As a freelancer, you don't have sickies or paid holiday of any kind, so you should account for 1000 billable hours a year. Working more is the cherry on top, and less is a risk that you hedge by having good rates.

Therefore, $85/hour is more or less equivalent to an $85.000/yr salary + benefits. $175/hour would be equivalent to $175.000/year salary + benefits.

Obviously this is without taking into account tax brackets, forced downtime if you have health issues, and the averaging of good and bad weeks/months/years. Also, perceptions of salaries/rates aren't linear, neither for you nor for potential employers.

(((

Note: this advice is for an hourly rate programmer. HN legends patio11 and tptacek will rightly advise you to get out of this game if you can, and I agree with them. I'm trying to do it myself. But while you're in it, this is what I've learnt that I can share.

http://www.kalzumeus.com/2011/10/28/dont-call-yourself-a-pro...

http://www.kalzumeus.com/2012/09/17/ramit-sethi-and-patrick-...

https://news.ycombinator.com/item?id=6974166

)))

There is a lot of the above advice that you start applying now while still in the hourly rate game, so I'm pasting the link to tptacek's comment again, because it's hella relevant and pithy.

https://news.ycombinator.com/item?id=6974166

Good luck. And to my fellow Aussie freelancers, please share your rates and help everybody negotiate better with clients and employers.

Ask HN: How hard is it to build an Email client?
2 points by anacleto  7 hours ago   3 comments top 3
1
TheDom 4 minutes ago 0 replies      
Take a look at LibEtPan, an open source Mail framework for C: https://github.com/dinhviethoa/libetpan

This is by one of the guys from Sparrow (RIP) [1] and powered it under the hood.

[1] https://en.wikipedia.org/wiki/Sparrow_(email_client)

2
informatimago 6 hours ago 0 replies      
SMTP is easy. POP3 is easy. IMAP is more complex.

Building a simple email client (say, like mail(1), even including SMTP and POP3 instead of local delivery) is rather easy.

It could be a nice programming project for first year (2nd semester) students, I'd say.

Of course, you can complexify things, adding GUI, IMAP, MIME, displaying inline attached files (pictures, pdf files, etc), SSL/TLS, dealing with local mail folders, spam filters, automatic mail sorting, including an wysiwyg editor, message encryption with key management.

But the basic mail(1)-like client using SMTP and POP3 is easy.

3
pestaa 2 hours ago 0 replies      
If you mean a full-fledged desktop application, it is very hard. SMTP/POP3/IMAP will be walk in the park compared to the challenges you face designing the UI.
Ask HN: How do you version control your microservices?
73 points by supermatt  1 day ago   52 comments top 13
1
sagichmal 1 day ago 1 reply      

 > I currently use git submodules to track the application > as a whole . . .
This is a conceptual error. There is no such thing as "the application as a whole". There is only the currently-deployed set of services, and their versions.

You should have a build, test, and deploy pipeline (i.e. continuous deployment) which is triggered on any commit to master of any service. The "test" part should include system/integration tests for all services, deployed into a staging environment. If all tests pass, the service that triggered the commit can rolled out to production. Ideally that rollout should happen automatically, should be phased-in, and should be aborted and rolled back if production monitoring detects any problems.

2
TomFrost 1 day ago 3 replies      
From your description, it sounds like your pain points don't come from versioning your microservice code; they come from versioning the data models that those microservices either 'own' or pass around to each other. While your approach of collecting your microservices as a collection of submodules is novel, that also defeats the purpose of microservices -- you should be able to maintain and deploy them independently without having to be concerned with interoperability.

While it's possible to alleviate some of your pains with versioned APIs to track changes to your data models, you also conflict with data you already have stored in schemaless DBs when those models update.

In a Node or frontend JS stack, I solve that problem with Vers [1]. In any other stack, the idea is fairly simple to replicate: Version your models _inside_ of your code by writing a short diff between it and the previous version every time it changes. Any time you pull data from a DB or accept it via an API, just slip in a call to update it to the latest version. Now your microservice only has to be concerned with the most up-to-date version of this data, and your API endpoints can use the same methods to downgrade any results back to what version that endpoint is using. And frankly that makes versioning your APIs far simpler, as now you move the versioning to the model layer (where all data manipulation really should be) and only need to version the actual API when you change how external services need to interact with it.

And now your other microservices can update to the new schema at their leisure. No more dependency chain driven by your models.

[1] https://github.com/TechnologyAdvice/Vers

3
grhmc 1 day ago 1 reply      
We deploy every microservice separately and their API has to remain stable, because that is how APIs should work: remain stable. If there is a breaking change, it has to be forward and backward compatible for awhile. Each microservice is blue / green deployed, not all of them as one.

Also look into the `repo` tool by AOSP for managing many repositories.

At Clarify.io, we have about 60 repositories and 45 services we deploy.

4
janpieterz 1 day ago 1 reply      
You don't really control the composition that closely. The whole point of having a lot of microservices is that you can update and work on very isolated functionality at a time distributed.

As other people have noted as well in here, you should always keep the interface backwards compatible, if needed make a second version of the API or the messages, but never really have to deploy more than a couple of services who really have changed their behavior. The ones just interacting with those services should experience the same interface, being it a couple of versions older or newer.

I'd recommend watching the ucon videos [1] or Udi Dahan's Advanced Distributed Systems design [2] for more in-depth reference material. If you're transforming a team of engineers I can really advise you to join the latter and afterwards order the videos so you can use them with your team as training material! This is less about microservices as them being micro, but more about setting up a distributed service oriented architecture.

[1] https://skillsmatter.com/conferences/6312-mucon#skillscasts

[2] http://www.udidahan.com/training/

5
SEJeff 1 day ago 1 reply      
/api/v1 ---> /api/v2 if you have breaking changes. You should expect things go be loosely coupled and potentially be updated independently. Maintain backwards compatibility by versioning things like the above
6
marcosdumay 1 day ago 0 replies      
How do you control the development of independent libraries so that there's no incompatibility problems? Really, people have been solving this exact problem for decades. The fact that you changed a word there for something more specific does not change the world.

The answer, of course, is that you version it. Not put in version control, but manually assign version numbers to it.

You try to make it possible to use several versions at the same time, but that's not always possible. If you have to use only one version, make sure to not make any incompatible changes in a single step, first you deprecate old functionality, some time later you remove it. Some times that's impossible, it's natural but it'll hurt anyway, keep those times at a minimum.

Also, make sure you mark your versions differently for features added and incompatible changes, so that developers can express things like "I'll need an API newer enough for implementing feature X, but old enough so that feature Y is still there".

7
karka91 1 day ago 1 reply      
Sounds like you manage this manually.Why not have a CI server (travis, jenkins, w/e) build each microservice seperately (e.g. after a push to master) and then attempt an app release with all microservices?

You can also do parametric jobs in jenkins which could allow combining arbitrary microservices versions

Or just version your APIs and declare explicitly what microservice uses what version of the API to communicate with the other service.

8
davismwfl 1 day ago 1 reply      
Others already pointed a lot of things out. I will throw in my 2 cents.

Micro services should not be directly talking to each other. This couples them in a way that a small API change can be breaking. Instead use a messaging solution so that each service is passing messages and grabbing messages off a queue to do work. This is the easiest way to prevent coupling. It also allows you to version messages if need be and you can deploy a new service to consume those messages. We use JSON, so we can add to a message with no ill effect, and we are careful about removing any required attributes. So we haven't had a need to version messages, but the ability is there if we find it is needed at some point.

Adding messaging does increase complexity in some ways, but once you pass having a handful of services this is the easiest way to manage it.

As a side note. In our solution we have an API that the website and soon to come mobile app tie to. That API interfaces directly with some data schemas but in many places it simply adds messages to a queue for processing.

9
BrandonM 1 day ago 0 replies      
Have you considered keeping all your code in one git repo? That allows you to know exactly how code dependencies fit together.

This approach is almost certainly not a robust, long-term solution, but it has served us well for a couple years, allowing us to evolve our APIs quickly without spending any of our early dev effort on internal versioning.

Whether it's appropriate for you comes down to your reason for using microservices in the first place.

10
mateuszf 1 day ago 1 reply      
We don't share any code between the microservices.
11
alexro 1 day ago 1 reply      
12
cies 1 day ago 0 replies      
Versioning interfaces (APIs) is much more important than versioning the softwares that implement them.

Consider Semver for your interfaces. This is really important.

13
bitsofagreement 1 day ago 0 replies      
First, there is a major difference between the component (e.g. the software package) and the connectors (e.g. APIs). It makes sense to talk about versioning at the component level, but it should rarely apply at the API level. See this excellent article for further clarification: https://www.mnot.net/blog/2011/10/25/web_api_versioning_smac....

Versioning an API is a decision by the API provider to let the consumer deal with forward and backward compatibility issues. I prefer the approach of focusing on the link relations or media type vice URI or some other technique of versioning because it is consistent in the direction (wrt Hypermedia-based APIs) of the link relations as the point-of-coupling for your API, which makes managing and reasoning about changes to your API less complicated.

Whenever possible, hypermedia-based media type designers should use the technique of extending to make modifications to a media type design. Extending a media type design means supporting compatibility. In other words, changes in the media type can be accomplished without causing crashes or misbehavior in existing client or server implementations. There are two forms of compatibility to consider when extending a media type: forward and backward.

Forward-compatible design changes are ones that are safe to add to the media type without adversely affecting previously existing implementations. Backward-compatible changes are ones that are safe to add to the media type design without adversely affecting future implementations.

In order to support both forward and backward compatibility, there are some general guidelines that should be followed when making changes to media type designs.1) Existing design elements cannot be removed.2) The meaning or processing of existing elements cannot be changed.3) New design elements must be treated as optional.

In short favor extending the media type or link relation and focus on compatibility. Versioning a media type or link relation is essentially creating a new variation on the original, a new media type. Versioning a media type means making changes to the media type that will likely cause existing implementations of the original media type to break or misbehave in some significant way. Designers should only resort to versioning when there is no possible way to extend the media type design in order to achieve the required feature or functionality goals. Versioning should be seen as a last resort.

Any change to the design of a media type that does not meet the requirements previously described in are indications that a new version of the media type is needed. Examples of these changes are:1) A change that alters the meaning or functionality of an existing feature or element.2) A change that causes an existing element to disappear or become disallowed.3) A change that converts an optional element into a required element.

While versioning a media type should be seen as a last resort, there are times when it is necessary. The following guidelines can help when creating a new version of a media type.1) It should be easy to identify new versions of a media type. a) application/vnd.custom+xml application/vnd.custom-v2+xmlb) application/custom+JSON;version=1 application/custom+JSON;version=2c) * REQUEST *PUT /users/1 HTTP/1.1Host: www.example.orgContent-Type: application/vnd.custom+xml Length:xxxVersion: 22) Implementations should reject unsupported versions.

Hope this helps!

Ask HN: Do you avoid reading articles on sites with paywalls?
16 points by iamjdg  23 hours ago   14 comments top 12
1
rayalez 13 hours ago 1 reply      
I'm going against the crowd here, but frankly, I wish that more websites could switch to that model.

I'd rather honestly pay for great content that is worth reading. I think that ads misalign incentives, and force journalists and writers to focus on writing clickbaity articles to drive as much traffic as possible. If more people would agree to pay for content - we would see less bullshit ads and less articles needlessly separated into 10 stupid parts.

It would provide a legitemate business model for new writers and allow them to focus on creating high quality content instead of being forced to dumb it down to the mainstream level to get the views.

Also, if websites like facebook could suggest an alternative payed model without being hated for it by everybody, they could focus on user experience and building quality products, instead of tricking people into watching as much ads as possible and selling their data.

Right now writers and artists can only:

- Rely on ads for their income

- Beg for money on patreon

- Have to sell some t-shirts and dumb merch

to support themselves. The only honest and bullshit-less way to make money is selling books, but it's not always applicable.

I believe that if you think that the content is worth reading - it is worth paying for. Do an honest business transaction, and pay money for the value that you receive, instead of forcing people to come up with shady and manipulative ways to extract money from your attention.

If more people would agree to pay for content, internet would be a much better and more awesome place.

2
interesting_att 22 hours ago 0 replies      
Of course I avoid these articles.

First, most material behind paywalls aren't that great. The NY Times hardly has the monopoly on quality reporting. In fact, most money-driven publications tend to be low quality in many respects, especially when facing people with power and money, because the paywall isn't their only revenue stream. The Intercept, which is a non-profit, routinely beats out the NYT on national security reporting.

Second, these paywalls can be easily bypassed. Again, why pay for this? These notions that these words are their property and hence need to be paid for it have no moral weight to me, especially when some of these publications got us into the Iraq War.

3
lovelearning 13 hours ago 0 replies      
Yes, I just close the tab.

It's the user experience that puts me off - dialogs with patronizing sentences like "it looks like you are someone who enjoys great content", signing up with a strong password, storing that password in passwordsafe, verifying email, logging in, selecting a plan, entering credit card details....

Instead, if they just used a prepaid wallet through my gmail sign-in and silently deducted some amount - say 10 cents for every 5 minutes spent on their site - without bombarding me with all those irritating dialogs, I wouldn't mind paying.

4
byoung2 23 hours ago 0 replies      
If the article is really interesting, I usually open a private tab and then Google the title. Clicking from a search result usually gets me in.
5
bluejekyll 23 hours ago 0 replies      
Paywall, meet back button. The issue is that stuff on the web has basically always been free (ad supported). Trying to switch to subscription models is going to be difficult unless every media company decided to switch to that model, and they were as effective as the MPAA at giving a distribution channel like netflix.
6
davismwfl 20 hours ago 0 replies      
I avoid reading them as well. Generally if you wait just a short time someone else will cover the same material and publish it on a non-paywall site. When I see people on HN (or other sites) post a Washington Post or NYT article that I am interested in and that is behind a paywall I just google the title and generally some other news source has it covered so I can get the basic details.
7
27182818284 15 hours ago 0 replies      
No.

I actually pay for the NYTimes. They provide a real value to me, but not in their webpage

Their value to me comes in their mobile app. I like to read their articles there, and they make me feel good. For example, they hit your app with "Good morning, here's what you need to know" followed by a daily briefing. the daily briefing is worth it alone, but having that extra part, as lame as it sounds, makes me feel good.

8
namplaa 10 hours ago 0 replies      
For the paywalls on many articles that I'm interested in I just Google search them. Many allow you to read the full article if you referrer is google.com
9
sixQuarks 15 hours ago 0 replies      
If you use chrome, you can delete all cookies from past hour. That works sometimes. If you have a VPN, you can connect with different IPs and get access to articles that way. (This all assumes the paywalls give a few free articles each week/month
10
bowlich 22 hours ago 0 replies      
Not online. But I still keep a number of print subscriptions going (Nat Geo, Fantasy & Science Fiction Magazine).

It's rather rare that I find an online article that is well enough researched and written to warrant paying for it. I suppose if I found more online forums with long-form articles with on-the-ground research than I would be willing to pay up but it I haven't really seen anything that quite fits.

11
gt565k 23 hours ago 0 replies      
Sometimes I can right click -> inspect element, and get rid of the paywall and see the content
12
pvaldes 5 hours ago 0 replies      
yes, I do.
Ask HN: When was the last time you had to know advanced algebra when coding?
2 points by anacleto  9 hours ago   3 comments top 3
1
liamcardenas 2 hours ago 0 replies      
Coding what? Web applications? Never. Learning algorithms? Yesterday.

It all depends on what you are working on. I know plenty of successful programmers who have gotten away with knowing absolutely no math (not even basic calculus). However, if you don't know "advanced algebra", there may be doors that are not open to you.

2
tgflynn 9 hours ago 0 replies      
What is your definition of "advanced algebra" ?

Group theory ? Galois Theory ? Category Theory ? What ?

3
yen223 5 hours ago 0 replies      
Linear algebra? All the time.
Ask HN: People who made it to Google. What was your experience like?
26 points by yankoff  1 day ago   16 comments top 4
1
shaftway 1 day ago 2 replies      
I interviewed and was hired almost 5 years ago. My experience was largely positive, though the process took a long time.

I had 5 interviewers. I made it clear to each up front that I had never worked in one of the canonical languages (Java, Python, C++, Go) and that my background was mostly C#. All of my interviewers seemed to take that point, so the questions I was asked were mostly pseudo-code. The one language-specific thing was about Java iterators, so I had to ask about the Iterable/Iterator contract before I could start. My pseudo code was pretty C#ish and that's pretty close to Java, so I was able to intelligently discuss differences or explain my intent.

The crazy thing about my interview (and the interviews of most people that I talked to) was that I thought that I crashed really hard. One guy let me fumble around for almost the entire time trying to answer his questions (it dealt with statistics and big data). Of the five, I feel like I knocked it out of the park with two of them, flubbed it with two of them, and the fifth was meh.

Later, I talked to the recruiter about it. I was feeling a lot of impostor syndrome (very common) and trying to understand why I was hired and make sure that it wasn't an accident. In the end, recruiters are looking for very high or very low scores from your interviewer, and interviewers give a lot of points for trying. Even the ones that I thought I failed on gave me medium scores because I did a good job of connecting with them on a personal level, and I talked through my work as I did it. So I ended up with 3 moderate scores and two high ones, which was enough.

As for passing but not getting hired, that's a little different. You don't really pass the interview. You do a phone screen and then the recruiter decides whether to proceed. After that you come in for interviews, and once you're scored again the recruiter decides whether to proceed. Then you go to hiring committee, where they decide hire or no hire. The recruiters have a pretty good idea of what hiring committee will say, and they tend to send borderline people. After hiring committee you go to offer committee and then you get the offer letter. After you accept the offer, if you're a general purpose SWE, then you talk to teams to determine placement. The whole process took about 3 months for me.

For my prep, I actually went on other interviews and read books (particularly on solving by induction - these things show up often on interviews).

Everybody has a different experience, but when I read posts by people who claim they were passed over because they couldn't solve a specific problem, I suspect the problem was really poor culture fit, resulting in low scores across all of the interviewers.

2
spundun 1 day ago 1 reply      
I'll be starting work at Google a week from Monday as an SWE. It was my second time interviewing(first time was 2 years ago as an SRE). This time I had actually put in effort into preparing for the interview, CS Fundamentals, Systems Design and all...

Every interviewer brings his own personality. Most people(probably all) will stay to-the-point. Actually the more to-the-point they are, the more time I get to solve the problem, so that's kinda by design. Emphasis on behavioral stuff is near zero. But a couple of people asked me questions related to stuff on my resume. E.g. one interviewer asked me a VHDL/Verilog related question(I think of it as a sanity check question, to make sure I'm not BSing on my resume), the other had already asked me two questions, so he used it as a topic of chit chat. Some interviewers are poker face to the point that you feel the pressure, one interviewer wasn't big on hints(at one point I could hear the wall clock ticking so loud, I wanted to throw it on to the floor and smash it), one interviewer liked to make encouraging comments and was somewhat chatty. The others were like just any dudes you might run into at a party, very casual.

The CS/Coding Questions covered topics like Dynamic Programming, trees, arrays, bit manipulation. The questions were not easy. I think I did ok in 3 of them(one/two might be even slightly below par). The Dynamic programming question I solved in 15 minutes, then I got asked a second question(which was easier in my opinion) I finished that too and I still had 10 minutes left. I imagine I impressed that interviewer. That might be the reason I got through.

The system design question was a very interesting one, I loved it. But it wasn't your typical large scale system design question like designing a service and so on. It was about designing a file system. I enjoyed it so I thought I did well there. Since I seemed to have talked all I wanted to about that question, I got asked a second systems question(in the same interview), an open ended question about internet system. I did ok in that one.

I didn't ace most of the interviews(Dynamic Programming interview being the exception). I thought it could go either way, since Google has a reputation for being very picky.

I had put some time into preparation this time. Friend of mine is coaching for interviews, so he provided me very well defined structure to focus my efforts, including videotaped mock interviews and feedback on it( interviewkickstart.com for anyone interested. Highly recommend!). Through the mock interviews I realized that I was talking too much, both in behavioral questions and during problem solving. Not only could that test the interviewer's patience, it also meant I had less time to solve problems. So I had to strategize about that. I think that helped me go that last mile.

Lunch interview was very casual. The guy was very friendly and liked to chat. I asked him whatever I thought I should about Google and the people there. Got some insight into Google that way, even though I know friends who work there already so I could have asked them anything.

3
strathmeyer 1 day ago 2 replies      
You know there are people who pass the interviews but still don't get an offer, right?
4
known 1 day ago 1 reply      
quiz != interview
Ask HN: What are your favorite code problems to give while interviewing?
9 points by yankoff  1 day ago   11 comments top 5
1
istvan__ 23 hours ago 2 replies      
This is a great topic.

I like to split my interview to the following steps:

- introduction, small talk about the company or the candidate- level 1 write a function that flips a bit that is represented as a single digit integer: (0 -> 1, 1 -> 0) flip two variables (int) without a third one: (a,b -> b,a)

- level 2 what is the runtime complexity of a nested loop (assuming n == m) lease write a function that returns the list of numbers (in a string representation) that are permutation of N digits, where digits are 0..9. (1 -> 0..9, 2 -> 00 01....98 99 etc.) please explain recursion

- level 3 99% of the candidates do not make it to here I guess I should just make them flip that binary tree over the phone. :)

This is basics I think, so most of the software engineers should be able to solve these, even with a little hint.

On the top of these artificial tasks I usually ask them what is the biggest system they contributed code to, what was the contribution. What tools are they using. What is the favorite language and why. How do you to performance profiling for your code. What was the last problem that you solved in production, what was the problem and what is the solution.

And few others.

2
MalcolmDiggs 21 hours ago 1 reply      
I like to give some broken code and ask them to fix it...or give a Class that's missing a function or two and ask them to fill in what seems to be missing.

I tend to like those types of problems more than the "blank page" kind...I've found it to be a closer approximation of the everyday tasks they'll be encountering on the job.

3
kwc98 8 hours ago 0 replies      
I like to describe a problem that we are currently experiencing or one that we had in the past to see the troubleshooting logic in play. I love explaining something that is not quite optimal in production and see if this person could help.
4
hoare 1 day ago 1 reply      
i guess if i say invert a binary tree i will be hunted down?:D
5
cweagans 21 hours ago 0 replies      
The kind that they can solve at a computer with a real code editor.
Ask HN: What web languages and frameworks would you recommend learning today?
6 points by someguy1233  1 day ago   11 comments top 5
1
trevordev 23 hours ago 1 reply      
1) I don't think any of those tools are dying, people are just sharing that other tools will work better in certain situations and each tool has it's place. I'm a fan of nodejs but I have found the dynamic typing and poor performance of JavaScript can hinder my recommendation when building a large, performance critical app.

2) The languages/frameworks I would recommend depends on what you want to build. The large amount of JavaScript libraries and its ability to work in the browser make me highly favour javascript and I have found that typescript provides a nice layer on top to provide sane typing and code auto completion for many of my needs. However, Typescript tools and the language still feel underdeveloped. I would use node to handle web requests and offload "heavier" work to c/rust/go if needed

3) I used to use c/c++ for a lot of my personal project but I have found tasks like managing memory can add unneeded complexity to the majority of my tasks. C still has it's place when certain requirements must be met.

2
iDemonix 1 day ago 2 replies      
Not the answer you are looking for, but I've heard so much about Laravel that I've finally started to dive in. I do wish there were more L5 tutorials around, however.

Coming from a background where I did more or less everything myself from scratch, learning the ways of a framework isn't the easiest thing I've done in a while.

Back on to your topic, what you need to remember is that proponents of a new piece of software will always criticise its rivals. You also need to remember that a lot of people will just learn a single technology, never try the others, but declare the one they are using is the best. I see it a lot at work, people will say X language is far superior to Y language, and if they need to argue why they'll Google until they find something that agrees with what they're saying. This comic sums it up: http://i.imgur.com/ROS7lGT.jpg

3
scalesolved 1 day ago 1 reply      
1) If I had to switch from current stack (Java/Play Framework/Spring) I'd look at one of those, they all seem super healthy and a lot of remote work uses one of the 3 (I'm a fan of working remotely).

2) Whichever language you enjoy working with and be productive in (I've heard good things about Laravel), don't always think the grass is greener. I'd say try out the Play Framework https://playframework.com/ You can code in either Scala or Java and it'd make a change from dynamic languages for you.

3) I switched from Java to Ruby and back again and found the sweet spot of both, I think I've improved more since I stopped worrying if I was missing out and just concentrated on being productive at work and solving problems I enjoy outside of work.

4
brickcap 1 day ago 0 replies      
I feel that any one who is using nginx would benefit if he learnt a bit of openresty (http://openresty.org/
5
liamcardenas 14 hours ago 0 replies      
There comes a point in a developer's career where the framework/language doesn't really matter. Node, PHP, Rails, Django, etc all have their strengths and weaknesses.

If you are wondering which framework/language to use for a given project, the above questions won't really help you. Instead consider the following:

1. How much community support does the framework have?For example, a novice NodeJS developer is probably better off using Express than, say, Koa-- which is much less widely used and documented (unless that developer likes struggling through problems). Tackling less supported frameworks can be very educational but is also risky. If you are building a startup based on something that is unstable and/or unsupported, you may accumulate some serious technical debt that could hurt you later.

2. Try out all your options and decide: which one's easier/more fun (for you)?If you are trying to build a product, why bog yourself down with a framework that you find more difficult to use, just because some other developers say that it is "not as good"? Many people love ruby and python-- I'm personally not a fan of either. Does that make rails, django, or flask bad frameworks? Not at all! I just personally don't like them. At the end of the day, you are trying to make software that /does something/. I highly recommend simply picking the easiest/"funnest" route. You might even consider using parse to skip backend development altogether (it just makes you more efficient as a developer).

3. Are you collaborating with others?If you don't have a strong opinion on which framework to use, why not let those who do pick their favorite for you?

4. Are there any special libraries/tools that you would like to use?Not all ecosystems are created equal. Most languages have frameworks that allow you to easily make HTTP endpoints and packages to help you access databases-- which is all you need for a basic web application. However, sometimes languages will have niche libraries that make them especially ideal for a given use-case. NodeJS and Ruby have very rich ecosystems, however, there have been times where I have been forced to use python or java for this very reason. It depends completely on what you are building.

I typically advise people who are just beginning to learn NodeJS, so that, as a web developer, they get more comfortable with JavaScript (I see you already use express, so this may not apply to you). If you are just asking this question for the thrill of trying a new framework, and not from the perspective of using it to build anything in particular, why not try Rust Iron? I've been meaning to check that out, although I'm not sure if it is production ready yet.

Ask HN: Express, Koa or Hapi which framework would you use?
3 points by tixocloud  1 day ago   4 comments top
1
davismwfl 1 day ago 1 reply      
I still am using express. Express 4 really solved some of the headaches of prior versions, and we have custom middleware we wrote and have good patterns for separation of routes/controllers and views. So it works well for us, and the community is the largest so support and help is easy to find.

hapi is good but to me requires more forethought on the application and usage etc. Not a bad thing at all, but sometimes during rapid iteration this just isn't possible so then you wind up redoing larger chunks then you would with say express. For a team that has more time or is more mature in process it would be good. Although in all fairness I have not researched the updates to hapi in quite a while so this may be a bit stale.

koa I never considered seriously when we were starting our projects so I can't comment.

One other you should look at depending on your needs is restify. I haven't used it yet for a production application, but do have it wired up in a experiment right now.

*EDIT:Also for user management, yes we rolled our own. There are npm modules like passport but we didn't like it before and haven't gone back to reevaluate since ours works good.

Ask HN: What are you working on?
35 points by jacquesm  1 day ago   40 comments top 24
1
memossy 25 minutes ago 0 replies      
Modelling religion and extremism using a combination of behavioural economics/psychology, AI and a few other snazzy buzzwords.

We believe that if we build on this framework correctly it is possible (maybe not probable) to eliminate major extremism and are about to kick off our seed round to scale it..

Frighteningly ambitious, but fun

2
dalacv 1 day ago 2 replies      
LIMS - Laboratory Information Management Systems.

Definitely Niche. I've been doing it for about 15 years and I keep seeing the same consultants over and over again.

Here's the deal. Most manufacturing companies (think Big Pharma, Petrochemical, Chemical, Widget manufacturing, anything really) measure quality. Those quality measurements are probably done in a laboratory. Every laboratory generates data. All that data needs to be managed well so that the laboratory can maintain its accredidation.

Basically, LIMS systems manage samples and lab result data. In addition, they probably integrate with Instruments and instrument software to automate some of that data entry.

Other industries besides manufacturing are Govt (waste and wastewater treatment labs), Third-party labs (labs that do testing for other companies), Healthcare (clinical labs), Forensic Labs, and more.

Bottom line, there are tons of laboratories and they all need to manage their data.

The players in this space are downright stuck in the last decade. There is so much opportunity here for a few new players to come in and make a step-change.

I'm currently working on creating a modern LIMS to manage Laboratory data.

3
lambdaelite 1 day ago 1 reply      
A medical device startup, based on a technology platform I invented in grad school. The startup part is what started me hanging out on HN, but I've found that there is very little overlap between what I'm trying to do and what startups on HN do. Still, things are interesting enough here that I keep checking in.

edit: I missed the "how's it working out?" part.

Not great. Cash starved from day 1. Funding for medical devices is quite, quite different than software (i.e., bad but getting better recently). We don't fit the model for many VCs, so that limits potential sources, and being in medical devices means that we need to deal with sophisticated investors that can run proper DD on us, further limiting potential sources. Funding has been (and still is) a struggle! It's also a little bit "lonely": we run into a lot of problems unique to this industry, but often we can't talk about it in detail, and even when we can, there aren't many people around to talk to.

Project management has been interesting. There's quite a number of consulting and industrial design groups out there, which helps to bring in expertise when needed and keep things lean overall. A big challenge has been in setting up the supply chain: it's not something I've done (or thought of) before, but consulting has helped out here as well. Basically, we'd be dead in the water without outside consultants.

Regulatory affairs is a pain, but I appreciate why it's there and it's not onerous per se, just slows everything down (not necessarily a bad thing). It more or less distills down to documenting "say what you're doing, and do what you're saying".

The technology side is a bit boring, honestly. We need to design things conservatively, unless we have a really, really good reason not to. We also need guaranteed years of availability for parts, which additionally tends to lead to conservative designs.

Surprising lessons learned: cable management (i.e., in the device) is a nightmare, and packaging is anything but a simple problem to solve. Also, may have learned more in 6 mos. tilting at these windmills than my entire undergrad + graduate career.

4
moubarak 1 hour ago 0 replies      
i'm working on automating texture compression for game authors. i'm imagining a tool that automagically compresses assets for best quality and size, and very quickly, in a way a game author wouldn't have to even know it's happening. At this point i'd like to talk to game authors about their texture compression pains.
5
heywire 1 day ago 1 reply      
I'm a software developer working on point-of-sale at one of the major companies in this field. I've worked at the same company for my entire career, and have no plans on leaving. I've found that the retail software industry seems to be very "sticky" -- lots of people with 20, 30+ year histories at the same company (or sets of companies). Even those who leave seem to stay in the general industry, sometimes even returning to the same company. The company I work for gives plenty of opportunities internally to transfer between projects and teams, and there are many different software stacks in use, so there is always something interesting to work on.
6
samteeeee 1 day ago 4 replies      
I'm working on what I currently call "IMDb for Drones", although I really need a better way of describing it! Here it is: http://www.RCPartRatings.com
7
benzesandbetter 23 hours ago 0 replies      
I'm working with two SaaS startups to build analytics-driven marketing platforms based on an open source CMS. Both clients create tools for technical teams, and both are solidly profitable. One of them is from the Bay Area and on Series D. The other if from Scandinavia and on series A. In both instances, the previous version of their web presence was developed by the same dev team as their core product, and their marketing/growth team was competing for development time from the same devs who were building their core product. The platform we've developed enables non-technical marketing teams to easily push out new initiatives and new content, rapidly measure their results and correcting course. At the same time, their team can be confident that their site will work smoothly across a broad range of devices and platforms. By combining software development skills with knowledge of marketing tools and best-practices, we've created a nice niche for ourselves.

I'm also working with a Fortune 100 client to develop an intranet platform for them. It's an awesome project, and I wish I could say more than that, but we're under a rather restrictive NDA. We're working on producing a case study, and getting it approved by their legal department. We've done some other large intranet projects before (federal agencies and global NGOs) so this is another strong niche for us.

I often encourage developers to combine their technical skills with another domain-specific specialty to create a compelling value proposition. It's great to be a "Javascript developer" or "Python developer" but with that positioning, you are easily commoditized. By combining technical skills with a non-technical specialty you are much more resistant to commoditization.

8
brickcap 1 day ago 1 reply      
I am working on wrinq[1] an application that helps people manage their rental property. Not a niche domain (or maybe it is since I don't see many applications for the real estate sector except for listings) but we are using niche technologies.

It is built with openresty and couchdb both of which I feel are terribly underrated technologies.

"How is it working out?"

On the technology side. Everything is going great. I read a thread on micro-services a while ago and with couchdb (if you take time to think through) it is really easy to have micro-services that can be distributed. We've got 5. While they are not independently deployed yet they can be at any time. It's only a mater of replicating the existing data(very easy) and changing the urls(easy but needs some thorough testing).

openresty makes it really easy to communicate to in house as well as some third party services we use. I smile every time I write:

`local res1,res2,res3 = ngx.location.capture_multi{{"url1"},{"url3"},{"url3"}}

It is very satisfying to see the results of different independent apis coming together in a single call.

Both of these technologies are very resource efficient,openresty in particular. And we have tested high loads of traffic on cheap servers without making any effort to optimize.

On the business side. We are doing okay. Making sales is always a challenge but people are interested in talking to us which is a good sign, I feel. Only a matter of time before we perfect our product and pitch. We are in no hurry :)

[1]https://www.wrinq.com/

9
pp19dd 1 day ago 1 reply      
Think my niche is programming in news. Something between a programmer, an editor and a reporter. I don't work on the core CMS because we have dedicated teams for that. What I specialize in is all the things the CMS can't do, won't do, or isn't designed for, like interactives. Or this http://projects.voanews.com/ebola-tracker/ ; the tracker data is updated manually because it has to be reviewed (sudo vi ebola/data) but an automated watch script alerts me when the World Health Organization updates their ebola stats every few epidemiological weeks. I like using RaphaelJS for making graphics.

Currently, working on 3-4 editorial projects. First one is a bit dry, a metrics dashboard done in Node.js that gets top pageviews from our articles and then scrapes titles, number of article comments, facebook shares, tweets. Some real surprises there - an article can have 10x number of fb shares than pageviews. As in, the teaser photo + summary is enough for people to share and not read in entirety. I like node. Also (probably unsurprisingly) but facebook is faster than our own sites for scrapes, even though we use akamai / CDN.

Next up is a parallax-y report on fourth of July for our Learning English division. It's a longform writeup laced with some cinemagraph-style looping videos and embedded quizzes explaining the constitution and a bunch of Americana to our international audience. The internal tool we generate these projects with (tool separates content and programming/design) are a mix of PHP / Smarty templating that I want to convert to node with some realtime collaboration features, but once baked the final reader-facing stuff is HTML/JavaScript. Looks kind of like this http://projects.voanews.com/central-african-republic-diamond... project. Funny thing is the internal tool is called "timeline editor" and it does everything except timelines. It should be called interactive editor.

Also, oh boy, I made that map in the article and am so proud of it. It remixed a bunch of complicated and overwhelming data points and simplified it for the reader. Had to do some lat/lng to pixel conversions, some point-in-polygon checks, got the CAR shape polygon list from a UC Davis site and then used inkscape to simplify the shapes because it had millions of points. So guess this kind of programming is a niche specialization for news agencies, and it's worked well for me, going on 7-8 years now.

Damn, I'm a nerd.

10
jdc0589 1 day ago 0 replies      
just finished working on my first real fully automated + autoscaling + distributed application environment a few weeks ago. The the definition/spec for all of it is on source control; nothing is done manually at go-time.

It gives you the same type of confidence about your application environment that you experienced for the first time when you switched to automated application deployments.

the various "click the build button" workflows that are implemented so far:

1. base images for all the different server types get built/updated. any future environment updates will upgrade machines to the new images.

2. an entire new named application environment (minimum ~15 VMs) gets created (webservers, background services, cache servers, database servers, etc..), configured, and applications deployed to. creating a new environment for, e.g, performance testing is as simple saying "build: performance-test-env"

3. an entire app environment (any of them) gets updated based on any configuration changes made since the last update/create.

4. various normal application deployment automation

11
atsaloli 15 hours ago 0 replies      
My niche is training sysadmins on CFEngine. Been doing it part-time for 5 years; just got a full-time gig as a CFEngine consultant for a year and wondering when I'm going to have time to continue developing/expanding the training but happy to be working on CFEngine full-time as it'll help raise my expertise.
12
duartetb 1 day ago 0 replies      
http://Gamedevr.com - Links and resources for game developers.

Im trying to get into game development, and decided to create a website listing alot of tools and resources that i think are usefull.

The main objective is to be community curated, by adding your own links via Github. The problem is that im also a newbie webdeveloper and havent spent alot of time learning about source control and Github especificaly.

Im learning as I go, thats why i havent realy posted it anywhere.

Im planning on adding alot of resources, fix alot of stuff and then realy tell people about it.

Ill just leave it here, for some feedback from you guys.

Ps: Sorry for my terrible english.

13
andersthue 1 day ago 0 replies      
A new methodology, agile/scrum but more humane.

Been an IT developer for most of my life but always found humans and how they work more interesting than computers and finally I figured out how to do something good with that interest.

http://timeblock.com

14
tixocloud 1 day ago 0 replies      
Market Intelligence as a Service - Insightico (http://getinsightico.com)

Exploring if we have a viable business after several people have told us that it's useful. We're still trying to land our first customer though the challenge is focusing on the right customer segment since it spans multiple industries.

Funny enough, I did have a job choosing and picking technologies such as Oracle/Microsoft/etc. I worked at a high growth startup at the beginning and then went to work at large corporations to get a balance of both worlds.

15
MarkCole 1 day ago 0 replies      
At the moment my niche is 'game development'. Specifically the development of a web based game at a medium sized (400-500 employees I believe) game company. So nothing really out of the ordinary there.

Our tech stack is also pretty standard for a game of this era PHP and MySQL backend, frontend is HTML, CSS and JS. Version control with SVN.

It's definitely been eye opening for me, debugging old code that hasn't been touched since the mid-noughties can be a real challenge. However this has taught me to be more thoughtful about how I code, and to plan out how I'm going to build something efficient and maintainable.

16
fananta 1 day ago 0 replies      
Chirp - A new smart notification center.

It's still being developed but here's the landing page to give an idea: http://welcomechirp.com

17
tmaly 1 day ago 0 replies      
https://askpatron.com fast single screen customer feedback with rewards for small local businesses. It's a work in progress and I am doing things that don't scale right now. I have four businesses that are helping me beta test. I am looking for more. The overall goal is to improve the customer experience using a system that is super fast and super simple to use.
18
david927 1 day ago 0 replies      
An new programming language paradigm:https://vimeo.com/107069470

Really tough going, but have a first customer in its initial incarnation: brodlist.com

19
sganesh 1 day ago 0 replies      
SETaaS - Software Engineering Teams as a Service

Trying to find out if the bootstrapped productized service at http://www.thinkbridge.us/setaas.html is viable.

Targets are businesses with software systems and applications that are to be developed and maintained at a smaller scale but need continued access to technical talent.

After being a Software Developer for 15+ yrs, learning marketing & sales :)

20
HeyLaughingBoy 1 day ago 0 replies      
Niche: embedded systemsWorking on - "at work:" a large medical instrument; "at home:" an industrial monitoring platform with a web interface.

I really like my niche. I've believed that merging embedded control systems and "the web" was long overdue, and finally industry is catching up with that belief.

21
haidrali 23 hours ago 0 replies      
Previously i had worked on a mobile app product Tweelerts (tweelerts.com) and now i am working on a Parse like service which let you share you static data ( text, json, XML, files or any other data) over API. No coding required you just need few click to set up and server data over API
22
brudgers 1 day ago 0 replies      
Refitting the architecture boat to sail seas of information instead of motoring commodified ponds of construction? So far, it's not appreciably less successful in real terms and even if my valuations and probabilities are each off by an order of magnitude or two in bad directions, the expected return is higher per time unit of effort simply because piece work cannot scale well.

And writing.

23
anotheryou 1 day ago 0 replies      
I work on a lot of projects and love doing the concepts. in parts I consider myself an Artist and Explorer. My qualities are a good sense for abstraction and having a broad knowledge (as opposed to specific expertise) and knowing how to communicate between people. The tech side is often too much work and to complicated for me to go beyond a proofs of concept, but as I do most just to satisfy my own curiosity I'm feeling great with this.

My Passions are structuring knowledge, perception, society, art, sound, music and love.

I'm not so much career focused, but I'll see what opportunities I can find, once I finished my Diploma:

.

1. PostPriori - combining news aggregation with twitter like personal subscriptions, exploring weighting of content beyond:

- a suggestion engine (not yet good enough for the finesse of a personal taste, scary because out of direct control, biased towards easily digestible content)

- democracy (simply does not scale. Might work for niches, but look at the shift in reddits audience. It has to become mainstream. Subreddits are a fix, but not a very elegant solution I think)

- doing it chronologically (one needs to filter the mass of input, making actuality so important is not the right way I think and a huge problem in the media. I'm also incapable on using twitter as is because of this.)

I have a few things to try on how to keep all the ratings very human and hand-choosen by those you personally trust. I also want to try to enhance viral distribution and allow for semi-classical editorial institutions.

Further discussions about it are very welcome!

It will become my Diploma in Arts, so I'm free for now from commercializing it. You can subscribe to a newsletter which I will send out once beta-testing starts:

http://signup.postpriori.com/

.

2. All of It - A personal, local Wiki.

I recently started making a wiki out of my notes. I will yet have to see on how to cramp the naturally ribosomal information there is in to some hierarchy with cross links.

To stay true to the nature of information I'd need a more associative indexing, but i won't build another google or some other brain. :)

I'm using markdown, http://wikitten.vizuina.com/ and owncloud.

.

3. musical experiments

- I'm writing sort of a firmware for a midi keyboard to play quarter tones. (using this http://www.keithmcmillen.com/products/qunexus/ it has 2 pressure sensors per key, so I can split keys easily once I have the raw data)

- I'm planning a responsive, randomized effect array.

From my instrument (a trumpet for now), I try to extract how I play (pitch, volume etc.) and randomly assign effects to certain locations in this matrix. Once I like a certain location I will fix it and shuffle everything else. Over time a a spectrum of curated effects will be fixed on the range of my playing.I hope for something like bending down a loud C and having it distorted, than when I go silent it suddenly becomes roomy with a reverb and things like that.

.

4. I'll join another startup on monday. I want to build something to make money, not just sell my time/workforce.

.

5. I do some freelancing as a web developer, throwing together and customizing CMS'.

.

6. a relaxing students job at the state television

.

7. Other small jobs: media installations for exhibitions and artists, photography, proofreading (in german, spare me my mistakes here :)

.

edit: added projects and edited a bit

24
johnnyjuiceNYC 1 day ago 0 replies      
finance + user experience
Ramen eaters?
2 points by geperry  23 hours ago   2 comments top
Ask HN: How to reskill without losing income?
192 points by xchaotic  5 days ago   93 comments top 33
1
hkarthik 5 days ago 10 replies      
I did this back in 2009. Here's how to do it.

Pick a technology stack that you want to get a job in and build a side project in your spare time. Attend meetups with experts in your local community and learn how to make it awesome. Build relationships with them along the way.

Use those relationships to get some part-time contract work in said technology stack with someone local. Document this experience and build up a portfolio.

Eventually, use the knowledge you've obtained from your side project and part time contract work to apply for full time jobs. You'll then be very marketable, and you will have enough knowledge to do well in interviews.

Good luck!

2
pcsanwald 5 days ago 7 replies      
As someone who does a lot of hiring for a startup, I will say I'm agnostic with regards to languages and frameworks. We've hired folks with all sorts of disparate backgrounds including embedded C (we mostly use Java and JavaScript).

I think you should sell yourself as an experienced technologist who's looking to learn. You should also demonstrate a willingness and ability to learn new things; maybe by making something and putting it up on github.

3
lastofus 5 days ago 1 reply      
> I think if I applied for a job I'd get rejected as there is no track record of being able to work with that tech.

This is a big assumption, that is simply not true for a lot of opportunities out there. If you are able to show proficiency in what they are looking for, many companies will take you seriously as a candidate, even without 5+ years on the resume in said technology.

Worst thing you can do for yourself is to not try and apply. Worse case is you get a "no thanks" and you move on to the next application.

4
sjcrank 5 days ago 2 replies      
I have found it is much easier to switch to a new stack within your existing employer than it is to get hired for a stack for which you have no professional experience.

Here are the steps:

a. find employment at a company that requires your niche skillset but also has projects in your desired tech stack (hopefully this is your current employer)

b. learn enough of the desired tech stack on your own to be a useful contributor

c. ask to switch over to a project using your new stack, or volunteer to write tests or help in some other way to get your foot in the door (this may require some persistence and relationship-building)

d. once you have some experience you are ready to add it to your resume and seek your dream job

5
nasalgoat 5 days ago 2 replies      
When I interview people, I am less interested in their specific experience than I am in their ability to think and troubleshoot problems. Google solves the knowledge problem but doesn't solve the problem of intelligently using that info.

I imagine other employers are similar, and given the high demand for tech workers, you might be surprised at the reactions.

6
mrj 5 days ago 0 replies      
My advice: thinking it is just "different keywords" is exactly why you may lose income. The syntax may be easy to change but you're changing an entire stack that will have it's own conventions, history and culture.

If you want to be paid well, it's an awful lot more than just keywords.

7
nilkn 5 days ago 3 replies      
Do companies really try to pigeonhole developers into "tech stacks" so much that you'll be forced to revert to junior status to change?

Unless we're talking about COBOL -> Haskell here, I think any decent company would be wary of overvaluing skills with a particular language or framework and undervaluing fundamentals.

8
vkjv 5 days ago 0 replies      
> Are there any companies that would be willing to hire a grumpy 30-something and recognise his/her experience as something reusable?

Yes. I work for a large company that does recognize this and does not hire for specific stack experience. We have a hard enough time finding enough good people, regardless of specific experience, to use that as a critical factor.

9
jsamos 4 days ago 0 replies      
Sounds like you're confident in you ability to pick up any stack. I wouldn't wait. Good companies hire smart people.

I just switched to a great company with a stack I had zero experience with. Hasn't been a problem at all.

10
colinbartlett 5 days ago 0 replies      
Maybe start by attending user groups or meet-ups on the tech you're interested in. That might lead to some potential freelancing gigs or even just some open source work in that field.

But, in general, I think many, many companies are willing to hire 30-somethings with experience. Perhaps seed-funded startups aim for cheap low end labor, but enterprises and well-funded startups consistently value experience over skills with a specific stack or language.

11
Robert_Webonise 3 days ago 0 replies      
If you're a senior level developer (ie: if you've been doing development more than 7+ years), then you're in luck. Companies usually recognize senior level developers can migrate to a related technology stack without too much of a loss, and the skills of being a senior developer are more soft-skills than particular technical areas. Recruiters generally won't know how to sell you in this regard, but with a bit of networking, you should be able to find you a bridge position into your new technology stack. You are going to be expected to hit the ground running, which will make the first few months of that job really exciting, but it should be entirely possible.

A good place to look is in consulting companies, like my own Webonise Lab. Consulting companies will often hire experienced people to become generalists with broad skill sets, and will often take a specialist and give them an opportunity to train up through the company's open source projects and the like.

12
wyclif 4 days ago 0 replies      
I also went through this a few years ago. I was a land surveyor and although I loved the combination of technical, mathematical, and analytic skill with working in the great outdoors, the subprime mortgage crisis resulted in big commercial land development contracts drying up.

You have to be single-minded and goal-oriented. Another HN user above says to "pick a technology stack" and focus down on it. That's great advice. I already had some experience on the LAMP stack and I built up from there. Don't let yourself get distracted after you've decided the direction you see yourself moving in.

Work on side projects. Go to meetups. Find people you can collaborate with and work well with you. See if you can get some PT work that is being parceled out by companies because their own FT devs are too busy. If you're allowed to expose your code, build up your Github. Don't forget to visualise where you see yourself going, and don't be afraid to tell people where you're headed.

Also, make productivity apps work for you. Have a Dropbox file where you keep all your technical books, and have that file open all the time. Subscribe to Pinboard or some other bookmarking service to save technical blog posts and documentation you want to read. Use Trello to manage your projects. Etc. Good luck to you.

13
vinceguidry 5 days ago 0 replies      
You would not get rejected if you applied for a job without a track record, at least, not out of hand. I've been hired to work on .NET having never had worked on it before.

You do not need side projects or to train yourself. Just the ability to project confidence.

14
deedubaya 5 days ago 1 reply      
If you have an employer, this is usually a pretty easy sell. Approach your boss about transitioning Aging Product X to a new technology stack because the current one is becoming defunct. Of course this will require some training for you, but it is easier to teach you a new skill set than to hire someone with that skill set and get them to learn about Aging Product X.

If you aren't employed and are contracting/freelance, it is just as easy. Since your skill set is niche, not everyone has it, and you can charge more for that niche. Up your rates enough that you can cut 10 hours a week out to study something new.

15
newobj 5 days ago 0 replies      
I've worked for 20 years and never targeted myself towards a tech stack. In fact, I think spreading yourself over lots of different tech is a better bet for longevity, even if not optimal in some short-term capacity. Being able to adapt quickly to new paradigms is the quality necessary for long-run viability. And when you have a track record of successfully doing that, no one will question your ability to do it in a new setting.
16
GFischer 5 days ago 0 replies      
Doing consulting work? If you can solve companies' problems, they won't mind if you don't have a track record with that particular stack.
17
serve_yay 5 days ago 0 replies      
I switched from doing back-end C# work to front-end JS by switching jobs at my employer. I basically reskilled on their dime. If you're a talented engineer and your company doesn't suck, they should be relatively accommodating to this idea. Engineers get bored and want to switch it up, smart companies and smart managers get this.
18
darklajid 5 days ago 1 reply      
Thanks a lot for asking this - I'm in a similar boat and will follow this thread with interest.

Good luck from another 30-something.

For me 'niche tech' is one thing, and 'investing a lot of time in the bowels of the corporate product over 10 years' the other one - the latter just WILL go away if I switch and is absolutely not useful elsewhere

19
personlurking 5 days ago 0 replies      
My issue is similar, though not so tech-related. I do VA work for some startups but would like to get into a growing interest of mine (journalism), though my time is limited. I have experience as a writer, but not a background in journalism. I could make the complete jump to being a journo and self-publish, shop stories and find my way, but that'd mean giving up what pays the bills (pay & responsibilities of which are currently on the rise). Doing what I want to do means way more work and, very likely, less pay.

Does anyone else here juggle two different jobs? Is there a secret to doing so?

20
cpitkin 4 days ago 0 replies      
As someone who is trying to move into the development space from a more sys admin role this is great to hear. I have a similar idea about learning new things. I just dive in with both feet and start building, watching tutorials, and reading the docs. I have been working on Nodejs/Meteorjs apps in my spare time. I am just going to keep building little side projects to get better and learning all I can along the way.

Glad to see I am on the right track and that others have had success managing their career path. Thanks for all the great advice!

Moral of the thread: Never stop learning!

21
xchaotic 4 days ago 0 replies      
Thank you soo much for all the comments so far. I didn't expect such positive respone. It definitely encourages me to try new things over the summer.
22
ofcapl_ 4 days ago 0 replies      
It is a good question! Personally, I've got my first full-time job thanks mostly to own side projects in my portfolio - I was hired even without code challenge during recruit process - so listen to 75% of comments here - do some side projects, built a solid portfolio and apply.

You can also try some contract work/start own business and do some simply projects that one-man-band can handle - I was trying that too and after every project I've felt that my skills got a boost.

Best,

.

23
swalsh 4 days ago 0 replies      
I just switched from C# to Ruby. Honestly the switch has not been that big of deal. The company is giving me some time to learn, and the switch has been pretty painless.

I think if you want to switch, I think its more important to demonstrate skills in the base skill set (in my case software architecture), and then there are plenty of people willing to give you some room to grow.

24
brudgers 5 days ago 0 replies      
Career changes also allow for switching roles. There's no reason to keep playing grumpy at a new job. First because good workplaces are often good because they don't place a premium on grumpy, and second because at companies that value grumpy that slot is likely to be filled. I'd throw in that thirty-something is a bit young to be the go-to-get-off-my-lawn person.

Good luck.

25
vkjv 5 days ago 0 replies      
I'm curious about something similar, but perhaps more drastic. I went to college for EE, but after graduating got a job in software. I enjoy computer engineering much more than software, but at this point I'm 5 years into my career and I don't see a way that I could ever switch paths without taking a critical hit in income.
26
testingonprod 4 days ago 0 replies      
https://nextdoor.com/jobs/?gh_jid=424

We don't care about what tech stack you know, we're willing to teach you ours. We just need you to be extremely motivated and ready to go!

27
digitalboss 5 days ago 0 replies      
I'v really enjoyed seeing what companies such as tradecraft have doing around this sort tactic http://tradecrafted.com/ - check them out.
28
martin-adams 4 days ago 0 replies      
>> I think if I applied for a job I'd get rejected

Only one way to know for sure.

29
derptron 5 days ago 0 replies      
You're going to have to do it on your own time. Make it a pet project, make it visible on github, and make sure to link it on your resume so potential employers can see what you're capable. of.
30
a3voices 5 days ago 1 reply      
You could do work at night on side projects to learn new skills.
31
ngneer 4 days ago 0 replies      
I am in the exact same position. Summarizing the responses, the short answer to your question is no, there is no escape.
32
ngneer 5 days ago 0 replies      
READING THE THREAD IS DEPRESSING AND ENCOURAGING BUT THE SHORT ANSWER TO YOUR QUESTION SEEMS TO BE NO
33
adnam 4 days ago 0 replies      
PHP programmer, right?
Ask HN: How would you validate data on both back end and front end?
3 points by borlum  23 hours ago   5 comments top 5
1
brudgers 6 minutes ago 0 replies      
Client side validation is a user interface improvement when it provides convenience. It does not replace server side validation because server side validation ensures application integrity. Of course applications that run in the browser muddy the water a bit, but still whatever hits the server requires scrutiny.
2
stephenr 8 hours ago 0 replies      
Do basic validation client side - if you can, rely on html input types and html5 validation attributes. It should be enough to be helpful in most cases without being overly onerous to maintain or hard to match server-side exactly.

Put your full detailed validation rules server-side.

3
borlum 10 hours ago 0 replies      
By validate I mean, rules like:

- is "title" set,- when "age" is set "birthday" must not be set.- the cart can have a max of 10 items.

4
lovelearning 13 hours ago 0 replies      
In some java web applications, I wrote form validation rules in javascript for client side validation, and reused them server side using java's scripting API.
5
Blackthorn 20 hours ago 0 replies      
Can you give an example of what you mean by 'validate'? The word is highly overloaded and has different meaning depending on where the data is being used.
How to do audio recognition of animal sounds?
3 points by skoerbitz  1 day ago   2 comments top 2
1
pvaldes 5 hours ago 0 replies      
Load the audio file in your favourite language, choose an audio library, pick an example of your song, choose a short distintive sequence and search for the desired patron. Finally assure that a human verify the obtained results.

More easy to do in birds that in bats or whales. You need also to check mimicry. Cricket sons can be a problem if you work with bats. What kind of animals are you interested in?

2
fundamental 1 day ago 0 replies      
That's a pretty broad question that leads into a large number of branches of pattern recognition and general machine learning techniques. There's not a simple answer and no single algorithm is going to work well for all 'animal sounds'. I'd recommend picking a particular animal and perhaps a particular call that you're interested in and searching through the literature to see what techniques are currently in use.
Ask HN: Should I pursue an ML career with good pay or a dream to teach abroad?
2 points by takeachance  23 hours ago   13 comments top 6
1
yodsanklai 6 hours ago 0 replies      
You'll always be able to teach oversea. I assume age isn't a factor for this type of job. On the other hand, you probably won't be able to earn money in software engineering 10 years from now if you leave this path. Without skills in 10 years, it's likely to be much harder to make money than now. It's always good to have a safety net.

But you can also be a gambler and listen to your heart and leave tomorrow!

Now that I think about it, right after I graduated (from a top school in my country), I had several options to earn a very good salary. 20 years later, those options simply aren't there anymore! I'm too old for a beginner position, and don't have the experience for a more qualified job.

2
yen223 21 hours ago 1 reply      
> My current financial situation is pretty much in the shitter, and I have loan payments and bills that make it effectively impossible to save anything.

This cements it. Take the paying job. You can always pursue your dreams in the future, and it's more likely to work out when you are more financially stable.

3
andyakb 17 hours ago 1 reply      
Would your earnings teaching English in Japan cover living expenses and debt? If it would, the go for it. If it wouldn't, figure something else out.

If you do go for it, and don't want to make this a permanent change, make sure to stay current with technology. Build a public portfolio showing that even though you aren't working in tech, you are still working with it.

Another option would be to slowly transition away from teaching English to becoming a freelancer so that you could travel while still earning mid-high pay.

4
FlopV 19 hours ago 1 reply      
The skills and money you get in the ML career could enable you to pursue your dreams with a clear head once your debts have been settled. And maybe you could find a similar role out there?

If you are comfortable in the ML career and want to stay there, then I don't think you'll kick yourself for not leaving, as you might be happy there. You can always go once your in a more settling situation financially, and if you still have the itch, you can scratch it.

5
takeachance 23 hours ago 1 reply      
As for support, I do have some from my family in case of an emergency, but its certainly not infinite.I feel like in life, I've consistently taken the safe route. Now, I'm really tempted to take a huge chance.I know that taking a year or two off to teach English would generally detract from my career, but I also am very self-motivated, and I would probably spend a good amount of that time building my programming skills even more.

tl;dr: Should I take a mid-pay job with high potential for future salary, but be locked into a particular location, or pursue a life-long dream and teach abroad for a low salary with low potential for future salary?

6
chrisyang66660 10 hours ago 0 replies      
maybe you can get a bachelor degree from diplomascenters.com. so as to get a good start for your career.
Ask HN: How do I bring our technical hiring coordinators up to speed?
3 points by civilian  1 day ago   7 comments top 7
1
hunglee2 22 hours ago 0 replies      
OK, I'm going to say this - I don't mean to be harsh, but I feel its important the message is clear: You absolutely should not be having these people conduct first contact with developers. They are not trained for it, won't enjoy doing it and are likely to be very bad at it.

Hiring is hard. Its one of the hardest problems confronting any business, especially those that are dependent on technical talent. For a hard, business critical problems like this, you need your best, most qualified staff to handle it - not your cheapest or most inexperienced.

Little mistakes - mistaking Java for JavaScript - maybe understandable on planet earth, but on planet tech - where the community can be less forgiving than it imagines - is as bad a mistake as you can make. You're basically signalling - I don't know about you and I don't care about you. You will not hire quality people with this messaging and this recruitment experience.

The bottom line is, your founding team needs to take the lead. Like it or not, these are the people that in-demand developers are most likely to respond to. After all, developers themselves and are also unlikely to make the kind of mistakes that might ruin your employer brand, a critical asset for an early stage startup looking to hire. Furthermore, they are developers who have gone next level and become founders ready to hire developers - that's pretty much real world karma in World of Startup. They are your best, and likely, your only chance to hire the people you need. They have to grasp this, otherwise it won't matter what techniques or concepts you discover or deploy.

2
benzesandbetter 12 hours ago 0 replies      
I would recommend that you raise this issue with the founders directly, rather than with the hiring coordinators.

Prepare well beforehand, with specific examples of things that are happening. Help the founders connect the dots about how this situation is putting your company at a disadvantage in terms of attracting talent and building your team. Good developers have lots of options, and will certainly view this sort of thing as a negative indication of your company culture. This will leave you with B-listers at best. For a small company, this is poison, as it creates a negative effect that quickly compounds.

At the same time that you raise this issue with the founders, have some potential solutions to offer. This could involve having a technical staff member review correspondence and web-postings from these folks. It could involve some ongoing coaching for these hiring coordinators. It could involve replacing them. A decent level of technical understanding and an attitude of wanting to improve should really be a baseline for anyone in this role. It's not an exaggeration to say that the amateur behavior of these folks could drive your company into the ground.

3
brudgers 21 hours ago 0 replies      
Implicit in your comments is that the founding engineers are in charge and you are not. Perhaps it is worth expressing your concerns to them, but perhaps not: it depends on if your workplace is the sort of place where the founders appreciate unsolicited opinions regarding the quality of their decisions.

In my opinion, there's nothing particularly wrong from a business standpoint with posting a Flash/Flex position on a Python focused job board: if you're not seeking Python engineers, then being perceived as having poor manners by Pythonistas doesn't make much difference for recruiting one way or another. That's not to say it's a good strategy, but most people won't care. That's sort of the sense I get in regard to your company's founding engineers as well.

Good luck.

4
liquidcool 19 hours ago 0 replies      
Ideally, engineering management should have the technical understanding and social skills to recruit. If they don't have the time, that's another story, but for most companies payroll is the biggest expense, hence the most important investment. You don't want to leave that in the hands of people who don't know what they are doing. Third party technical recruiters who don't have a technical background go through orientation and training, and even given that look at the state of things. Managers need to make time to do this or hire someone who can. Dedicated training may help, but not much, and blog posts certainly won't fix this.
5
eschutte2 1 day ago 0 replies      
You will not be able to bring them up to speed. Recommend that an engineer write the job posting and then let the office managers handle the mechanics of getting it posted and collecting responses.

Also, the idea that you should be looking for talent instead of buzzwords (on the premise that you don't even know what tools your company will be using in six months) is a major philosophical divide and you should find out whether the whole hiring team even agrees with it.

6
Blackthorn 20 hours ago 0 replies      
> I also worry that they don't quite get some concepts like: most programmers can learn any new language/framework if they have motivation behind it.

Then why are they actually handling this at all? It sounds like they should have zero contact with the applicants, not first contact! You never get a second chance to make a first impression.

7
lsiebert 17 hours ago 0 replies      
Shot you an email, but the short answer is, jobs are advertisements. Sell the position well. For a small company, it's better to cast a wide net, for a large company, you want to quickly narrow it down.
Ask HN: Are we in the middle of yet another tech bubble?
40 points by alex_duf  1 day ago   60 comments top 19
1
ThomPete 1 day ago 6 replies      
No but we are in an valuation bubble.

Tech is still generally underrated compared to it's importance for society but there is a whole suite of primarily Silicon Valley funded companies whos valuation is based on it's investors alternative views of what value is.

2
mangeletti 1 day ago 1 reply      
The ironic part about bubbles is that, necessarily, +80% of people believe we're not in a bubble just before it pops. After all, this is the primary reason for a bubble. This means that asking people if we're in a bubble is sort of a measure of the inverse.

It is possible that we are just below the top of the 8 (not 7) year cycle (see my explanation boom / bust cycles @ https://news.ycombinator.com/item?id=9565624).

3
nuclearghost 1 day ago 1 reply      
I don't personally believe we're in a tech bubble like we saw in the late 90s. At worst the general public isn't at the same risk as we had with all the .com IPOs. There's a lot less liquidity which means that angels and VCs would take a much larger hit.

This presentation from Lou Kerner has some good insights. http://www.slideshare.net/loukerner/bubble-cartoon

4
thewarrior 1 day ago 0 replies      
Looks like everyone is worried. It's possible that many of us reading this could lose our jobs if there's a large crash.

Maybe I should start saving up and make a back up plan for life outside tech. But I have none. Ah well , that's life.

5
damoncali 1 day ago 1 reply      
If you think today is anything like the 90's then you weren't there.
6
kra34 1 day ago 1 reply      
We are in a global asset bubble, not specifically a tech bubble. People like to highlight tech valuations because the general public is familiar with the companies.

Click Bait Headline: "COMPANY WITH NO PROFIT WORTH $1.5 BILLION, THE END IS NIGH!"

The valuations are divorced from the future earnings of most of the companies, but so are real estate prices in many cities around the world. So sure, we're in a "tech bubble" but its all part of a shared economic fantasy so it probably doesn't matter.

7
bane 1 day ago 0 replies      
I'd say it's more of a froth. Some areas are depressed (relatively), some are about right on target, and some are way overvalued.

In a bubble lots of people become sudden "royalty", but in a froth, only a select few are made into kings.

It's clear that "valuation", as term, is not indicative of the value a company provides/produces, or the market it serves. It's a kind of shared fantasy.

What we keep seeing is that companies with grossly inflated valuations end up M&A'd into a more mature company, and the value that company had is corrected over a couple years to be some fraction of the purchase price.

There's also little longevity for many of these companies. An unmonetized cat picture sharing app gets "valued" at $billions because it's hit some kind of faddish meme growth curve, is bought be Yahoo! or whomever, and then turns to vapor within 6 months. The acquiring companies don't even have enough time to insert their ad network monetization scheme onto the pages before the curve turns upside down.

Meanwhile, the founders of the site are sitting on piles of cash, and go on to angel invest in other bad faddish ideas that have a monetizable life-span of 12 months.

Or other startups form that require as their monetization strategy, for some non-trivial percentage of all humans on the planet to be using their service before they can start skimming profit off of operating expenses. They hit 85% of those metrics, sell or IPO for the GDP of a medium sized European country and everybody is surprised when they have monetization problems.

The Startup->Invest->Value->Sell cycle is broken in several subtle places and it's not clear how to fix it other than for investors to just get smarter and/or have other investment vehicles available to them. Or at least start asking for startups to "start up" with a good business plan in place, and carefully evaluate it for nonsense. But this won't happen so long as the cycle as broken. Uninformed investors, who were trained on what success looks like from their own ridiculous lark of a company fundamentally don't know what a real company looks like.

Meanwhile there are other companies with real ideas, making real money, who are struggling to get valuations at 1xrevenue.

Like anything with money involved, tech startups have become a hit-driven industry, and over the long-term (10-20 years) this is generally bad for everybody.

8
snowwrestler 1 day ago 1 reply      
I was going to say no, but the top story on HN right now is a simple web app for measuring mood, which anyone could have been built in about 10 minutes using SurveyMonkey or Formstack. So, if that's noteworthy innovation, maybe we in a bubble.
9
supjeff 1 day ago 0 replies      
I wouldn't call it a bubble because bubbles burst all at once. Tech does have value, and some tech companies are actually creating value and seem to be worth every penny of their valuation. I'm talking about the bers and AirBnBs. I would call it a Gold Rush; everyone thinks if they show up with their pickaxe, they're gonna strike it rich.
10
ja27 1 day ago 0 replies      
Not until I hear some friends and family start talking about investing in tech startups again.
11
mandeepj 1 day ago 0 replies      
I do not think we are in tech bubble at least for another 5 years. We have real new products coming one after another across multiple domains like AR, VR, self driving cars, drones and what not.
12
snomad 1 day ago 0 replies      
1) From a valuation perspective, here are some of the major public tech companies of recent years. If over-inflated valuations are the definition of a bubble these are serious red flags.

Symbol, EPS, P/EP, -0.24, LNKD, -0.36, Z, -2.05,GRPN, -0.08,ANGI, -0.07,ZNGA, -0.24,FB, 1.00, 81.52YELP, 0.32, 137.07KYAK, 0.43, 92.39TRLA, -1.82,TWTR, -0.98,KING, 1.90, 7.62GPRO, 0.77, 75.27ETSY, -1.27,BOX, -1.52,GRUB, 0.36, 103.92SHOP, -0.28,

2) Ultimately, all economic growth comes from productivity. The major tech companies of now are not focused on productivity - they are social, gaming, and leisure. They generally won't yield the productivity increases of the initial wave of the internet.

13
strathmeyer 1 day ago 1 reply      
I graduated with a CS degree during the last bubble and never got my career started so I will assume we're in the next one when I can find a job??
14
chollida1 1 day ago 0 replies      
I'd say we are.

One definition of a bubble that my colleges use is an external force that artificially props up values, or put another way a force that if it was removed would see prices crash.

Now consider silicon valley, what happens when a 2001 scenario happens and venture capital money dries up. Ask your self the question, if there was no vc money tomorrow would valuations remain the same, probably not.

Now that's not entirely fair as vc money won't just all go away, but then ask is there more vc money now that before, the answer is yes to to tune of about 5x-10x(estimates differ) more than there was in 1999.

So a more realistic question would be to ask what happens if we removed 5x-10x the funding that we currently have, would prices go down?

The startup market looks alot like the junk bond market in the Milken days. Junk bonds are very risky bonds but they can pay out alot and as long as there is money to roll the debt over into new debt everyone is happy. However, if the market gets jitters then suddenly you go from a scenario where everyone can roll their debt to a scenario where almost no one except for hte "best" junk bonds can get rolled( similar to getting vc in 2001-2004).

ie a bubble doesn't go down gradually, it goes down hard.

Another scary thing for valuations that doesn't get enough air time is the percentage of gains made when a company is private vs when its public. I saw a great tweet when Larry Ellison retired that said something to the effect of final score Oracle shares up 32,000% since it when public. It will be hard for a facebook to return that kind of return to investors over the next 25 years.

It used to be the case that the public markets got alot more of the stock gains than they are getting now. This should scare people as its the public markets that give companies their valuations. If the public markets find that stocks aren't going to have the 20 year gains that they used to have, then money, being like water, will flow to where it can make better gains, which will depress public market prices, which in turn, will push down private market valuations.

This isnt' a short term trend but one to watch, over the next 10 years. I know of a few macro based funds that are very concerned about this.

BONUS off the cuff prediction

We will see a private company start to pay dividends rather than go public in the next 3 years.

TL/DR - private markets value growth, public markets value profits. You've hit a bubble when you have the largest private companies not being able to produce profits that the public markets expect. Once that happens everything gets "messed up" with the chain of:

- the largest private companies can't go public at their expected valuations leading to

- lower valuations for private companies, leading to

- existing companies not being able to get teh vc capital they were expecting, leading to

- private companies going out of business, leading to

- vc losses, leading to less vc money in the system, leading to

- a "virtuous" cycle that deflates the bubble.

15
api 1 day ago 5 replies      
Not overall. There may be a bubble in certain small areas of tech, but there is nothing happening right now that equals the mania of the late 1990s.

I was there, and nope. Totally different economy and culture. To have a bubble like that you need optimism, and I have never in my lifetime seen a greater sense of hopelessness and pessimism and anger. Outside of coastal alpha cities like SF, NYC, Boston, LA, etc., the mega-recession of 2008 onward did not end. There is no hope, no opportunity, and everything is rising but wages. I've spoken to people who were older in the 70s and early 80s and some have compared it to then, but I have a friend who remembers the 70s well and he insists this is worse.

We may be in a sort of bubble, but it's not centered on tech or specific to tech. We are at a time in history where unprecedented amounts of money are sloshing around at the top and it isn't 'trickling down' much via ordinary routes like wages. As a result, there is perhaps something like a bubble in the sorts of assets that kind of wealth imbalance inflates: real estate, bonds, stocks, and yes perhaps other forms of investments rich people buy like private equity.

If there's a bubble in angel or VC activity, it's a shadow of that larger imbalance rather than something centered on tech in particular. There's a ridiculous amount of money at the top that doesn't know where to go, and some of that is going to be available to inflate startup valuations among many other things.

16
meira 1 day ago 1 reply      
I guess that we are and if this bubble burst, it will start a rally in all countries to replace SV apps.
17
Dirlewanger 1 day ago 0 replies      
When you have VCs giving the idea people free money, yes, it's a fucking bubble: http://blogs.wsj.com/digits/2015/06/12/no-team-no-idea-no-pr...
18
foobarqux 1 day ago 0 replies      
You need to define what a "tech bubble" is. Everyone throws around the term but it's hard to define exactly what it means.
19
ohmshalalala 1 day ago 0 replies      
Keep calm and love tech; envision a world where everyone succeeds and people/companies help each other succeed; and disputes are resolved with civility (Zenefits/ADP, the spotlight is on you!)
points by    ago   discuss
1
patio11 22 days ago 10 replies      
I sold Bingo Card Creator through FEI (http://feinternational.com) and have nothing but good things to say about them. Something like 20% of their listings are SaaS businesses. The going rate for a SaaS business is roughly 3X yearly SDC ("seller discretionary cashflow" -- revenue minus costs required to run the business as opposed to e.g. the owner's salary, distributions, interest expense, etc). It is closer to 2X for software businesses where the revenue is not by-nature recurring. (Naturally, these are guidelines -- businesses are, like all things, priced at where a buyer and a seller can mutually agree, and certain factors can make buyers very agreeable.)
2
dennisgorelik 21 days ago 3 replies      
Why buy another company (as opposing to focusing on your existing business)?
3
greenwalls 22 days ago 0 replies      
Find apps you like then do some research and see if you can get a general idea of the revenue they are making. If it looks like you could afford to acquire them then email them and see what happens.
Ask HN: Does IOT mean anything to you?
4 points by roymurdock  23 hours ago   13 comments top 10
1
27182818284 22 hours ago 1 reply      
I think it is kinda "meh" for me at this point, because it is difficult to get even home networks talking to each other still. Printers have gotten better, but Google something like "Plex can't 'find server" and there are tons of results from people trying to get a TV to talk to their computer 20 ft away.
2
CyberFonic 21 hours ago 0 replies      
IoT is great for tinkerers and hackers. It's kinda cool to have the watering system turn on as you unlock the front door. Changing the colour of the lights when your phone rings is fun too.

As for the average consumer, where are the use cases that make the over-priced products appealing?

3
J_Darnley 22 hours ago 1 reply      
Yes, a fridge tweeting that it is out of milk then promptly being owned by a hacker because the manufacturer makes appliances not software.
4
devnill 23 hours ago 0 replies      
I think the problem I (and most people) have with IoT is that the marketing is coming before the UX. Sure, you can spend 100 bucks on a lightbulb that can be controlled by your email, but will it really be usable? There is a lot of potential for zigbee/zwave/thread/BTLE/etc, but until there is an actual use case that will hold water it will only be over commercialized gadgets.
5
itburnswheniit 21 hours ago 0 replies      
Yes. Marketing B.S. for the layman.

"IoT" = Network-enabled sensors on things.

"Cloud" means "Server hosted somewhere else"...and we had that in the very early bits/bytes.

Practice the air quotes with me. ;)

6
logn 15 hours ago 0 replies      
Not until we get pneumatic tube technology like they have at bank drive thru's. Yes a smart fridge is anti-climactic, but a smart fridge connected to a grocery store with pneumatic tubes?

Smart trash can... meh. Smart trash can connected to dumpster with pneumatic tubes?

7
amarraja 10 hours ago 0 replies      
Until the day comes where I can't use my toilet because the internet is down, then no.
8
IpV8 23 hours ago 1 reply      
As a contractor that connects embedded devices with web applications; Yes, it means quite a bit.
9
marssaxman 22 hours ago 0 replies      
It means "yet another overhyped buzzword".

I can see why it's a good thing for people who want to sell expensive gadgets, but they aren't doing a very good job of explaining why anyone would want to buy them.

10
justonepost 23 hours ago 0 replies      
IoT (to me) means green field network of sensors (BLE, mesh, Wifi, etc) which securely connect to the cloud (azure, aws, google) that has big databases, machine learning and dashboards. So, yeah, it has meaning.
Ask HN: What do you think is the ideal programming interview process?
28 points by mckee1  2 days ago   21 comments top 10
1
audieleon 2 days ago 1 reply      
First, do a phone screen, not more than 1/2 hour of questions around the tech, team fit, and motivations. Involve a few people from the team the person will work with. This phone screen should weed out 80-90% of candidates. If you have a doubt about them on the phone, that's a no.

If they pass the phone interview, invite them back and tell them to be prepared to code during the interview.

Start your actual interview with code test like FizzBuzz or something similar. Have them do this in front of you and one or two other competent developers. Many candidates will outright fail this type of test. If they do, politely end the process there.

The rest of the interview should be a few panel type interviews with the team and both technical and team fit questions. Include non developers if you can (testers, marketing, ops, etc.). Leave empty spaces in the conversation for the candidate to fill. They more they talk the more they will reveal. If you start getting a preponderance of thumbs down, politely end the process immediately. Don't waste time.

Take everyone's feedback seriously, and arrange to get it quickly from everyone. Preferably you would have a thumbs up/thumbs down from everyone immediately. (Know your team well enough to know who gives only thumbs down...) Look for and pay attention to biases within the group. As the manager, sometimes you have to make a call that the team might not like. Be prepared and courageous enough to do so. (For instance, hiring a process-oriented qualified woman candidate might not sit well with your team of male cowboy coders, but it might make the team better...)

Typically, if the candidate has gotten this far, then I take them and the team to lunch to get them in a more informal setting. As long as the candidate doesn't say something stupid or otherwise fall on their face during lunch, I'm ready to hire them.

If you are in the position to do so, have the offer ready, and make the offer right then and there. If you find the right person, ACT. Cancel remaining interviews with your apologies.

Hope this helps. Good luck.

2
steven2012 2 days ago 3 replies      
Have a deep conversation about technical topics, have more conversations over lunch. Try to see if the person is a good fit with the team. Check references.

Then hire this person.

If they can't code, if they are too slow, if they wont be productive at the end of one month, then give them 2 months severance and let them go.

3
MichaelCrawford 2 days ago 1 reply      
I would find it far easier to persist in my job search, as I expect would many others, were my interviewers to avoid needless cruelty.

"I'm sorry but we are unable to offer you a position" while unpleasant to hear, is at least what I expect when I don't get a job.

Just last week I was given a 24-hour challenge test. As I had to take an early morning call from a potential client, I chose to get some sleep rather than staying up all night to work. I did complete the challenge, with beautiful C++ code and a couple dozen unit tests.

Unfortunately they had a test that I did not, so my code tripped an assertion. The CTO emailed me to say "According to the rules of our process, the conversation ends here".

I'm dead certain he did not even look at my source; one of his engineers ran the test. Most coders don't know what assertions even are - expect most HN members do, but not coders in general - and it is uncommon for C++ coders to write exception safe code.

This company has been advertising the position for months. Why was it so important to stick to "the rules of our process"? Even if it was so important, did he really have to say "the conversation ends here"?

I don't have a problem with whiteboard tests but this was actually the very first time I've so much as attempted a challenge question outside of the interview.

I'm going to bill them for my time; if they don't pay I'll take them to small claims court.

4
nate510 2 days ago 0 replies      
tl;dr: Essentially agreeing with soham.

I don't believe that there is any ideal process. A lot of it comes down to having good hiring managers that know how to evaluate a candidate based on their alignment to the company goals and the role they are being hired for.

Reid Hoffman wrote a great piece recently calling for a change in the company/employee relationship from "join our family" to "help us while improving your skills". He said that a standard interview question at LinkedIn is (paraphrasing) "What would be your ideal role after you leave LinkedIn?" The point of the question is to A) identify candidates who are motivated to grow their talents, and B) communicate to the candidate that it's OK to imagine quitting someday.

That's an example of what LinkedIn believes works, but it might not be appropriate for another company, say that wants to hire programmers into more of a stable career pipeline. Similarly, some shops might be highly specialized in certain roles/technologies, making deep-dive technical interviews more valuable than at a company that needs bright generalists to solve poorly defined problems. There can be no one-size-fits-all solution.

One thing that's worked well for me is to have candidates meet a significant number of the peers they will be working with. Another is to ask a quick "weeder" tech question and then an open-ended architecture design question (i.e. Describe how you would build the Facebook activity feed). Checking references is also valuable. But these are just ideas and they may not make sense (or be possible) in every situation.

5
soham 2 days ago 0 replies      
Interviewing is not a standardized test. On the spectrum of human interactions, it's closer to a date than it's to a class test.

i.e. by definition, there isn't a perfect interview process. It's different for different companies, teams and people. Everyone hires people who "fit" their thinking. Case in point: Despite Google having <1% pass rate, nearly everyone who applies gets a job somewhere.

It also follows, that the "ideal" process, even if one exists, is going to be a combination of techniques. And even then, it's not going to be perfectly correlated with job performance. Simply because there are so many human elements in it and (figuratively speaking), human is the antonym of ideal.

You can take your time to really evaluate an engineer different ways, if you are hiring slow, say 1 person a month or so. But the moment you hit scale (say 15 engineers a quarter), it's very hard to do better than what we do today. The process today is the path of least resistance, which is what humans will take when left with a deadline and quota to hire.

(About me: Founder of http://InterviewKickstart.com)

6
NathanKP 1 day ago 0 replies      
I've been pretty involved in the hiring process at the startup I currently work at. Our process works like this:

1) Phone screen of roughly 30 minutes.

2) Coding challenge. There are a couple different ones you can work on, such as exploring and scraping data from an HTTP REST API programmatically, building it into a report and submitting it to a different endpoint, or slightly more complex one that involves reading raw socket data to download a video stream, validate it's checksums, and extract it. This is an offline challenge that candidates can do on their own time, using whatever tools, docs they want. But the point is that candidate's choose which one they want to work on, giving them some choice to pick the easy thing or the harder challenge, and send it to us as a sample of their coding style.

3) Assuming the challenge code they sent us wasn't god awful they can usually get an on site interview. During this interview they sit with a few engineers they would be working with and each engineer has their own type of approach to interviewing. Personally I have developed the following test that I find works quite well:

https://github.com/nathanpeck/wordladder/blob/master/ladder....

One advantage of a code exercise like the one above is that you can go as deep as you wish depending on the candidate's skills. When interviewing a very junior candidate you can focus on their understanding of how to organize code, refactor it, and their knowledge of the basic JS toolkit.

For someone more advanced you can get down into details like "Is this a breadth first or depth first algorithm?" or "How can this be optimized to make it more memory efficient?"

7
zerr 1 day ago 0 replies      
Assuming we're talking about mid-career professionals. The fact that someone is invited to the interview means that you liked CV. Now the task is to ensure that CV is truthful - by discussing previous projects, experience...

After this discussion, if the interviewer is unable to tell whether the candidate is lying or not about his past experience - this means he shouldn't be interviewing in the first place.

And there is one thing to remember - false negatives, i.e. skipping over good candidates, is very expensive. Big G might ignore this fluctuation, but it is much more crucial for those wannabe-be-big-G startups who mimic even how interviews are held.

8
staacyc 2 days ago 0 replies      
Interviewing and hiring is an expensive process so a one size fits all model would be ideal. There are a handful of variables to consider, like company stage, who's hiring, etc. At Grok + Banter, an early stage startup, my co-founder and I have vetted a number of potential developers who were either someone we know or they were recommended to us. Keegan sticks to conversations about tech while I try to uncover goals and agendas to see if we can work together to align individual goals and company goals. We look for people who challenge our thinking in constructive ways (rather than demeaning ways). When we speak with someone who seems adept at solving real world technical problems as well as someone who is clear and forthcoming with regards to their goals, we work together to create a 30 day contract that will either end employment or continue employment with an extended contract after 30 days. What I have found is that with in 2 weeks, give or take a few days, Keegan and I both know if the person is a good fit. With in a year, we've ended three contracts. Interestingly, all parties look great on paper and are able to talk (white board) their way through problem solving, all three are highly intelligent, unfortunately, all three lacked the ability to execute. We've also interviewed and hired people that lack an ability to demonstrate their defining attribute(s). This attribute inevitably starts to appear around week two- three. If you can determine whether someone will execute or not as well as draw out defining attributes in an interview, you may be well on your way to a one size fits all model.
9
speedyapoc 2 days ago 1 reply      
After a basic call to make sure that the culture fit is ok and to learn some background about someone, I believe the best way is to assign a small (4-10 hour), realistic, paid (market rate) task for the interviewee to work on.

I don't think that programming on a whiteboard is a good way to evaluate how someone works, and many of the problems don't reflect the real world. Interviews without programming can also favour someone with good charisma and ignore programming skills. Instead, by providing a realistic task for someone to work on, a company can better gauge how a person works, what solution they come to, etc. The interviewee is also at home and in a comfortable environment versus one with time pressure.

I've had two contracting jobs that evaluated this way, and both of the teams were nothing but joy to work with. In the first one, I was commissioned for 10 hours to evaluate an existing codebase, refactor a little bit, give input, etc. Their CTO agreed with my feedback and I was hired. In the other job, I was commissioned to layout their mobile application's view controller and navigation architecture. Once again, my solution was reasonable and I was hired.

Neither of these tasks are unnecessarily algorithmic, tricky, etc. They're simply real world problems and in both cases, even if I wasn't a good fit, the company would have (hopefully) benefitted in some way or another.

10
andrewstuart 2 days ago 0 replies      
No company gets hiring right. Accepting that is step one to rethinking hiring.
Ask HN: Which tools do you use for SaaS customer management?
6 points by k__  1 day ago   4 comments top 3
1
victorstanciu 1 day ago 1 reply      
Well, I'm a web developer, so I rolled my own. I built a reusable framework for SaaS projects with just the kind of features you mention, and I've been using it both for myself as well for freelance clients.

Basically it's a PHP framework with a lot of SaaS-specific features built in. With each new project I implemented more and more features on it, to the point where I can now launch a functional MVP quite rapidly.

Lately (like, this week!) I got the idea of trying to license this framework to others, as well as sell them my web development services for the rest of their project. To this end, I published a quick LP (http://turbomvp.com/), which I'm now trying to improve, because I've been told it's not really clear at all what I'm offering :)

I haven't yet figured out the licensing model either, this is still a very rough idea. The framework, however, is really cool.

2
davismwfl 1 day ago 0 replies      
Depending on who you use for payment services you may be able to leverage their solution. For example Stripe has a good majority of the features you need including subscription tracking etc. you can have every customer with a unique id that ties back to your system and stores more detailed custom attributes.

We kinda do this, in that we let stripe manage the subscriptions etc, we just store all the relevant data back in our database. So if we ever had to switch payment providers we can without losing any data or historical accuracy. But it did really make getting running pretty fast and easy.

3
smileysteve 1 day ago 0 replies      
RAILS: Use Devise for Login / Registration. For subscriptions there are some good stripe gems.

https://github.com/thefrontside/stripe-railshttps://github.com/plataformatec/devise

Ask HN: How is your experience with Oracle, Postgres and MySQL?
5 points by tuyguntn  1 day ago   23 comments top 11
1
needusername 1 day ago 2 replies      
Oracle:Doesn't scale down. Lacks a lot of convenience features (BOOLEAN, DATE, IF (NOT) EXISTS, ).You need a team of DBAs to manage it and have a good relationship them (send birthday cards for their kids, I'm not making this up). You need to have people on your team with a good understanding of Oracle. Then the speed and information you can get out of it is amazing given your corporate structure gives you access to a good disk subsystem.

Support is a waste of time (we have a priority 1 bug open for more than half a year).

11.1g was so buggy that your DBAs would forbid us to go to 12.1c (BETWEEN AND wasn't working correctly).

I just wish they would open source their JDBC driver and accept pull requests.

Scale: about 10 TB, tables with between 500M and 1.5B rows, slow disk subsystem (SAN with about 150k IOP/s)

2
drifter89 1 day ago 0 replies      
DBA & PL-SQL/UNIX Developer here. Primary work with Oracle and SQL Server. Also support PG, and MySQL.

SQL Server hands down has the best GUI tools, none of the other DB's can even match this. Lots of information/documentation online. Makes life a lot easier. With Flashback being added to SQL16, it's going to be really hard to beat. Setting up, and maintaining HA options like Mirroring, Clustering, Replication is significantly easier that all the other DB's I've used.

Oracle is great, and also a pain in the ass. Works on any OS...but in my experience works best on Solaris. They really need to improve their tools. If you want to be effective you pretty much have to use the command line, and sql plus. There is nothing wrong with that, and in fact I prefer this method for most things. However, once you get used to SQL Server, it's crazy how much time you save, by having simple tools. Data Grid sucks ass, and is just a pain. They try to push this now, instead of the command line tools, pretty big mistake in my eyes. Oracle also has a lot of new features that are truly awesome. Like Audit Vault, and data masking.

PG is pretty awesome, but most enterprise level applications do not support it. Same issue with MySQL. The learning curve is also steeper for these. I don't believe MySQL, or PG can come close to SQL Server, or Oracle.

3
thornygreb 1 day ago 0 replies      
Longtime Oracle dev/dba. I have been using PG now for over 6 years, and it is my #1 choice for new projects if possible. Oracle beats it in instrumentation and tooling and to me the Oracle RDBMS documentation is more thorough. The implementation of MVCC is radically different and I'm not too keen on vacuuming but it is a necessary evil tradeoff for the benefits in PG's implementation. And above all I can put PG on a box with 40 cores and have dozens of hot standby's for $0 in licensing fees.
4
stonemetal 1 day ago 1 reply      
In my experience MSSQL and Oracle are more or less interchangeable. I have never run across PG running at the same sort of scale as the other two, but it seems to be a contender. Though I would have to agree with breakingcups, PG lacks tooling compared to the other two.
5
cmollis 1 day ago 1 reply      
oracle is great, has lots of great tools, and seems to be pretty solid. It is also ridiculously expensive. I have found Postgres to be essentially equal to it in terms of programmability (triggers, stored procedures) and.. it's free. It keeps getting better.. lots of larger scale startups use it (like instagram), and is essentially eating Oracle.. particularly where Oracle plays best (at the fortune 100 corporate level). Most of my clients have plans to migrate to it, or are actively doing that. I've used Mysql for smaller stuff and it's ok..why use it when you have postgres. The license is better anyway.

Haven't used MSSQL in years, but it's very good (on Windows).

6
cafard 1 day ago 0 replies      
Oracle: use it a lot, find PL/SQL an excellent language, wish that it were less expensive.

MSSQL: Use it some, wish that T-SQL had more of the features of PL/SQL, don't mind it.

PostreSQL: Limited experience, like it OK. May yet port some Oracle stuff there.

MySQL: Don't mind it, but don't use it much.

7
bsg75 1 day ago 0 replies      
PostgreSQL has great language features and has been a stable OLAP platform. Coming from MSSQL, the only feature I miss is query parallelism.

The lack of equivalent feature in MySQL makes it difficult to work with once accustomed to others (OLAP context, not OLTP).

8
fiedzia 1 day ago 0 replies      
MySQL: half-backed, inconsistent, full of quirks and trapsPG: My db of choice.
9
dalacv 1 day ago 0 replies      
I love Oracle XE (Express Edition - Free) and use it regularly for any side projects. Oracle APEX is not bad either.
10
breakingcups 1 day ago 3 replies      
PG: Great in theory, virtually no GUI tooling that's up to the task.MSSQL: Excellent, wish it ran on Linux.
11
ibejoeb 1 day ago 0 replies      
edit: Sorry, I missed the "1 sentence" guideline.

I have a lot of Oracle commentary in my post history, but I would still like to chime in again with a specific case that may be interesting to some people here. I'm totally unaffiliated with Oracle, so if it sounds like a pitch, it's just because I've had a long, positive experience with their technology.

There is absolutely nothing on the market, commercial or OSS, that can touch Oracle Database. If you really take advantage of it, it'll be clear.

I wrote a couple of big financial software applications, and reporting is a huge component. One of the key differentiators in my product vs the competition is that all of the reporting is ad-hoc, whereas theirs is batch. This is important to my customers, because they typically have planning and modeling work to do, and waiting around for batches just won't fly.

There are a few ways to get this kind of ad-hoc reporting experience, but the easiest is by directly issuing queries against the data. For this to be viable, though, you need two things: An expressive data manipulation language and the ability to exercise the hardware.

Oracle is the only database that delivers. Oracle's support for modern SQL and its proprietary extensions (e.g., [1]) are incredibly powerful, but they're expensive CPU-wise. However, Oracle will parallelize these, effectively running a single query over n cores.

Without those features, I'd have been building change monitors, data diffing algorithms, solvers, and all of that stuff to support background partial recomputation. Job runners, queuing, cache invalidation... man, just thinking about all that stuff again makes me realize just how nearly impossible it would have been to get this company off the ground.

Also, a note on pricing: it's expensive if you need these features, and licensing truly is arcane, but their are some pretty good options now. Several others have pointed to Oracle's free and cheap offerings, like XE and SE1, but Oracle is available on RDS with licensing included. You can quite literally amortize the licensing cost by the hour and quit anytime, and it's nothing more than an option when you provision your instance.

All that said, if you really need it, buying a $40k license is an awful lot cheaper than buying a couple $150k engineers to make it work on some other platform.

This has really informed my philosophy, especially when doing things on a startup budget. Get the best tools you can and use the hell out of them for all they're worth. There are thousands of engineer-years behind Oracle, and they've tackled a lot of hard problems for you. It's always a shame when I look at an operation and see people doing suboptimal reimplementations (you did you own materialized view?) because nobody read the docs...

[1] http://docs.oracle.com/cd/B19306_01/server.102/b14223/sqlmod...

Ask HN: Tips for working with a large JavaScript code-base?
2 points by philippnagel  1 day ago   3 comments top 2
1
iends 1 day ago 0 replies      
Use TypeScript.

Seriously, compile time type checking and the additional autocompletion will save you a ton of time, especially if you're working with multiple independent teams.

2
mooreds 1 day ago 1 reply      
Can you provide more details? Is it vanilla JavaScript? Under active development or in maintenance mode? Approx how big? Goals (make it more modern, add features, migrate it, touch it as little as possible)?
Ask HN: How do you visualize timezone offsets in your head?
3 points by glaberficken  1 day ago   6 comments top 4
1
informatimago 1 day ago 1 reply      
Yes, I usually find it easier to memorize things starting from base concepts. (I don't see the Sun moving right to left, but the Earth turning counter clockwise when seen from the North pole).

There's no way to memorize the X hours ahead/behind meaningfully, since the sign of numerical timezone offset may be flipped, depending on the operation AND on the system used. Eg. systems designed in the USA often use an opposite offset, (so they have negative offsets to Europe).

The Greenwich Observatory defines positive offsets East and negative West: http://wwp.greenwichmeantime.com/info/timezone.htmSo GMT+8 is in China.

But for POSIX, GMT+8 is the USA, like in Common Lisp, where:"Time zone values increase with motion to the west, so Massachusetts, U.S.A. is in time zone 5, California, U.S.A. is time zone 8, and Moscow, Russia is time zone -3."To be noted that both those systems were designed in the USA.

2
zhte415 1 day ago 1 reply      
Working with teams around the world, I don't visualise the globe, but what they're eating.

I'm eating dinner, so US East Coast is eating breakfast, and we can have a call soon. For Mid West / West Coast, add 2-3 hours.

I'm having lunch, India is having breakfast.

I'm going to have dinner soon, Europe is going to have lunch soon.

Not that scientific, but a way to visualise what people are doing, and therefore if they're reading their email or able to answer the telephone at the time. And it's a good image for some smalltalk.

3
Pyrodogg 1 day ago 0 replies      
I used to visualize the sun more easily (naively) when figuring time differences. After moving from 45N to rough 60N it's gotten weirder with the even longer summer days.

The sun doesn't just "go west' as if the earth's axis had no tilt. I think that most people don't really pay attention to the path the sun makes across the sky as the year progresses. It's harder to visualize "in what position would the sun be 8 timezones away" when you account for the tilt.

It's nearing 8pm local time here in Helsinki and the sun is still quite high in the sky. Back in US central where I have family, it's nearing 12 noon. The sunlight overlaps a good deal in the summer time. In the middle of winter, we will never see the sun at the same time.

4
gusmd 1 day ago 0 replies      
I'm used to just thinking about GMT. I know that the UK is around GMT 0, the US is negative, and Japan is positive, so those are my starting points for other locations.

I believe it has helped me that I have lived in different time zones, so it has become second-nature.

       cached 13 June 2015 20:05:04 GMT