Ask HN: What should I do with my professional carrier - <AUTHOR>

Hello, I'm could use some advice.
I went to CS studies, everyone there told me I should quit because I didn't have any CS background but I kept going and manage to finish it like an average programmer. I'm far from some rock-star, I think I just use Google really well and I know how to connect the dots. For the the last year and a half I have been working as a DBA. I decided to take that job because it was a small start-up, that was just starting up, and it look challenging to do that sort of job. Start-up is economy oriented so do a lot more than just DBA, I do a bit of programming but not much.
Now I'm 27 years old, that start-up is falling apart due to bad management. I work for a lousy pay-check which is often late. I have no opportunity to learn from someone on my job, so everything I do I do it alone. And I often have to do it in a really short amount of time, because everything is always needed 'yesterday'. I manage to make it work, but quality of my work is just bad. Yea the database works, my code does the job, but I would not like for someone to actually see it.
And right now I have no idea what to do. I used only 20% potential that year and a half I spent on that job. And I feel like I'm behind.
I really like programming and I would like to get back into it. So does anyone have any useful link or resource or guideline how can I brush up my programming skills. But not only basic programming and algorithms, but also good programming practices, clean code, etc. I would mainly focus on JAVA and Android programming, maybe I would start learning Python OR Ruby (I see it is very wanted on the job market).
I live in a 3rd world country, which sometimes feels like like it is a 7th world country. I'm even thinking about going freelance, because jobs are paid here really bad. So If anyone was in a same situation or has some constructive advice how should I proceed I would be grateful, because I really need some ideas. <comment><USER2> I fail to understand your study status. The point of going to CS studies, is to obtain CS background. Nobody can expect to have a CS background before going to CS studies. On the other hand, once you've passed thru CS studies, if successful (ie. if you've learned anything), you should have this CS background.

In anycase, computer science and practical software engineering are two things, unfortunately.

Thanks to the Internet, it shouldn't matter too much where you are located, when you want to work in IT.

As I see it, you have to distinguish two different things:

\- earning a living or financial independence, to be able to feed, clothe and house yourself, as well as provide yourself with required computer hardware, electric energy and internet connectivity.

\- growing in knowledge and abilities in computer science and software engineering you're interested in, to be able to develop the projects you'd want to develop.

It may be possible to collude those two different things into a single activity, this is what is advocated by "do what you love" (and love what you do), meaning, that we are lucky enough that doing programming can also bring bread. But as you've realized in this startup, professionnal work is not always fulfilling the brains, only the stomac, and even...

Also, of course, there's the question of being employee, where you don't get to decide much about your work, and the distribution of its product.

Therefore being a free lance or an entrepreneur is indeed an option that may seem favorable. But in that case, you will now have to deal with customers and while you may reject unwanted customers, you will still have to work with the constraints contracted with the customers you choose. This is not necessarily better a situation than being employed in a great company, but at least, you'll have more freedom and more decision power to what, when and how you'll do things.

While you may find local customers, and be happy servicing them, if it is difficult given the economic situation of your area, you can also choose to address international markets. This is easily enough done thanks to the Internet.

For example, you may develop and sell smartphone applications (iOS and/or Android). Then it may be an advantage of being in a third world country, where living costs are much cheaper, because a dollar earned selling a smartphone app will go much father where you are than in the Silicon Valley. But this requires investing the time needed to develop this application, and with the risk that it may not be entirely succesfull. In the meantime, you may need to earn some money to seed this development.

Another way would be to find remote customers thru the Internet, and work remotely. There are web sites designed to match customers and free lance providers, such as [https://www.freelancer.com/](https://www.freelancer.com/) and a lot of others.</comment>


Scaling WebSocket in Go and Beyond - <AUTHOR> https://centrifugal.github.io/centrifugo/blog/scaling_websocket/ <comment><USER2> Nice article FZambia. I learned a lot in details about Websockets. It totally makes sense to write any i/o bound servers in golang.

<comment><AUTHOR> Thanks for feedback, I thought the article left fully unnoticed here:) Go also has a small disadvantage for writing WebSocket apps – you don't have full control on read buffer reuse (since its got allocated for entire lifetime of connection) thus memory consumption per connection is more than it could be. Otherwise I am pretty happy with Go for this task.</comment></comment>


Intel announced new chips for incredible battery life - <AUTHOR> http://www.cultofmac.com/113500/intel-just-announced-new-chips-that-will-let-future-macbooks-have-practically-infinite-battery-life/

<comment><USER2> So many problems with the headline and details.

"24 hours" figure seems extrapolated from "All day use". No where that I could find did Intel say "24 hours". Just that slide that says "all day use".

"Unlimited battery life" is based on the assumption that you could recharge your MacBook using ambient light. There was a demo supposedly showing a new processor running off a lightbulb/ambient light. A macbook, however, has this thing called a monitor that would also have to be powered.

<comment><USER3> I think you are missing the even more important detail. These are all idle power consumption numbers. Intel is just telling us they've found a way to use less power when doing next to nothing. There's no claim you will see a similar magnitude improvement when rendering video or compiling a kernel.

This feature is probably related to some kind of new feature in Windows 8 where tweets and emails would continue downloading even when the laptop is asleep with a low power status LED/display or sounds to notify the user.

It is certainly not an indication we are going to start seeing i5 processors in cell phones in the next three years.

<comment><USER4> The solar panel demo was actually doing something like rendering video, though I believe you're correct that the panel wasn't powering the display device.

</comment></comment></comment><comment><USER5> Every new technology generation seems to make claims of revolutionary battery life, and yet it seems we're still hovering around 3-4 hours of practical usage, same as the old Mac Portable from 1990.

I'll believe it when I see it.

And even if there are such savings, Apple will use them to make the battery smaller and the laptop thinner instead of actually increasing battery life.

<comment><USER6> It amazes me that real-world battery technology hasn't really progressed within the last decade. Much of the increased battery life has been reducing the power consumption of processors.

That said, I'm with you. I really don't listen to these announcements because it's more hype than reality.

<comment><USER7> You can make a battery with much higher density, but it's not stable. Your battery could last 12 hours, but it might burst into flames before then.

<comment><USER6> This is why I said 'real-world' technology. I'm aware that there is a lot of testing in labs regarding this but it hasn't made it into the consumer's hands.

<comment><USER7> What I mean to say is, we may have hit a physical limit with our current approach (and price range).

Also, the requirement to "recharge" the batteries really decreases the energy density. Fuel cells allow more energy density, but making people "fill up" their laptops with fuel never really caught on.

</comment></comment></comment></comment></comment><comment><USER8> I don't know why you chose to post that blatant Mac fanboy blogspam instead of the original Gizmodo article.

[http://gizmodo.com/5839806/intels-next-chip-will-run-your- la...](http://gizmodo.com/5839806/intels-next-chip-will-run-your-laptop- for-24-hours-on-one-battery-charge?tag=intel)

<comment><USER9> It is indeed blogspam, the cult article we have here breathlessly implies that only Apple products will get this technology. I've become extremely hostile to the Apple bubble recently as it's gone from massive historical revisionism about certain inventions - and ignorant columnists who don't even use things outside their sphere - to actively using ridiculous patents to stop, to my mind, superior products.

<comment><USER6> I don't like Cult of Mac, as it is a very classless site, but where did you get the idea that only Apple will get this technology? The only difference I saw between the Gizmodo and the Cult of Mac article was how Apple may use the technology. They even mentioned that Intel demos were running on a PC. It is an Apple blog and I would expect the same of any site this narrow in news.</comment></comment></comment>


Responsive JavaScript in Rails: load what you need when you need it - <AUTHOR> http://pothibo.com/2013/07/responsive-javascript-in-rails/

<comment><USER2> The much simpler idea is to stop using bloated, general purpose frameworks, and just use tiny, functional-style hooks when needed, the way people used JS in days before the framework madness.)

<comment><USER3> Could you please go more in depth about "functional-style hooks ... before the framework madness"? I'd be interested in reading your thoughts as a newbie JS dev currently studying backbone/angular/jquery and other libraries.

<comment><AUTHOR> I believe that what he meant (Correct me if I'm wrong), is that instead of creating a system of classes that tries to abstract everything out of the DOM, it's better act on the DOM itself, via jQuery, Zepto.js, etc.

In some ways, what I showed in the post is functional.

\- Select a DOM i.e var $elem = $("#anElementId")

\- Act on it i.e $elem.fadeOut()

<comment><USER4> And yet what about the "JQuery soup" problem that everyone complains about? Isn't that due to having DOM manipulation code strewn about willy-nilly?

<comment><AUTHOR> Sometimes, it's good to encapsulate stuff into a class when you have a complex logic around a specific theme.

It's not one or the other. It's one AND the other.

</comment></comment></comment></comment></comment><comment><USER5> Of course, the drawback of this approach is that you're now sending javascript with every request. If you had done the traditional approach of sending your javascript in one big minified chunk it only needs to be sent once and your browser will load it from cache on subsequent requests.

<comment><AUTHOR> You are right, and I quickly went over it because I was scared of loosing the focus of the post by explaining into details many small parts.

This is a balance you have to consider. If a user never clicks on the link, this method has an advantage over minifying everything since you would load the JS without using it.

On the other hand, if a user keeps clicking the link while being on the same page (Important to stay on the same page), it would be better to have it stored in your minified chunk.

It's a low hanging fruit optimization that can be very useful IMO.

</comment></comment><comment><USER6> GWT actually does this automatically, works very nicely: [http://www.gwtproject.org/doc/latest/DevGuideCodeSplitting.h...](http://www.gwtproject.org/doc/latest/DevGuideCodeSplitting.html)

<comment><AUTHOR> That is very cool, I'm reading it right now, thanks for the link

</comment></comment><comment><USER7> Here's pothibo's talk code samples that he mentions in the beginning of the post: [https://github.com/pothibo/open-code- ajax](https://github.com/pothibo/open-code-ajax)

I liked the idea and added a demo using Flask/Python as well :)

<comment><AUTHOR> Thanks for sharing!

The talk is in french so you guys might want to skip the talk and jump to the code ;)

</comment></comment><comment><USER8> I've always wondered if it wouldn't be interesting to treat certain parts of a web application kind of like Objective-C NIB files. NIBs are sort of used to load new code into the application at run-time. We could do something similar with javascript maybe? Load parts of the UI in chunks based on what the user is currently doing with the application so that initial load times are lower.

<comment><AUTHOR> Yes I believe this could very well exist and I'd be happy using something like this. I thought about using WebSockets to send HTML/JS stuff down the pipe as the user navigates. Would cut some lagging due to how HTTP request are made and would decrease the load time.

</comment></comment><comment><USER9> NOLOH ([http://www.noloh.com](http://www.noloh.com)) has been doing this automatically since 2006.

Disclaimer: I was one of the co-founders.

</comment><comment> at-fates-hands This is actually a step up from what I've been doing which is using views to selectively load what JS a certain page actually needs - instead of bloating it up with several different libraries or frameworks that are all gang banging the page when it loads.

Performance wise, I've seen a significant increase in page load times.</comment>


Malware found preinstalled on 38 Android phones used by 2 companies - <AUTHOR> https://arstechnica.com/security/2017/03/preinstalled-malware-targets-android-users-of-two-companies/ <comment><USER2> Advertising piece: 'An assortment of malware was found on 38 Android devices belonging to two unidentified companies. This is according to a blog post published Friday by Check Point Software Technologies, maker of a mobile threat prevention app.'</comment>


Rescuers pull all 33 miners to safety - <AUTHOR> http://www.nytimes.com/2010/10/14/world/americas/14chile.html?_r=1&hp

<comment><USER2> It's really a great victory for technology, did that 26 inch drill exist 5 years ago?

(what they used) <http://www.schramminc.com/products/t130xd>

update: I've found that drill was for sale as early as 2002, so the technology is 8 years old

Two things bother me about all this:

1\. all the nationality "flag waving" one country did this, another country did that. Really? Is that what this is about, where everyone that contributed happens to be from? Because the inverse of that is you are saying the other countries didn't care.

2\. many of the miners are ready to head right back down and work elsewhere - despite the history of all the corporations running very unsafe mines in the area. This is like eating cheeseburgers after a heart-attack.

<comment><USER3> Recent research indicates no link between red meat consumption and heart disease:

[http://circ.ahajournals.org/cgi/content/abstract/CIRCULATION...](http://circ.ahajournals.org/cgi/content/abstract/CIRCULATIONAHA.109.924977v1)

<comment><USER4> The cheeseburger would most likely be dangerous not because of read meat, but because of the processed wheat in the bun. Not sure about other ingredients.

</comment></comment></comment><comment><USER5> "I liked the miners when they were still underground. Now they are too mainstream" -- @Haydude

We can joke now, but the NPR coverage today had me moved. Good story, involves a Kansas company too, which devised the plan, officially named "Plan B" :-)

<comment><USER6> Official statement from the company, Layne Christensen: <http://www.laynechristensen.com/rescue.html>

</comment></comment><comment><USER7> Interestingly, this is probably the first major mainstream news event I can say I've only followed online. I recall watching lots of other events strictly by staying glued to CNN: the beginning of the Gulf War, the death of Princess Diana, 9/11, perhaps most similar- the Quecreek Mine rescue.

</comment><comment><USER8> The thing that stands out to me is that the Chilean president was there in person for every single rescue. I have no idea what kind of man he is, but that to me, sets a great example of how national leaders should respond in a disaster.

<comment><USER9> Here's a relevant comment from a house editorial of _The Wall Street Journal_ ([http://online.wsj.com/article/SB1000142405274870367360457555...](http://online.wsj.com/article/SB10001424052748703673604575550212143815030.html)):

" _Particular credit belongs to Chilean President Sebastián Piñera. It was Mr. Piñera who insisted on an all-out rescue effort, ultimately involving three separate extraction methods, when a more cautious (or fatalistic) politician might have feared raising expectations that could easily have been dashed.

Commentators have described his decision as a calculated political gamble, but to us it seems more like genuine statesmanship. Chile has historically depended on mining for much of its wealth. To keep faith with the men who go deep down into the earth to extract that wealth, as Mr. Piñera has, can no more be subject to a cost-benefit analysis than an army's decision to rescue its wounded or fallen soldiers from the battlefield. Deeper things are at stake._"

</comment></comment><comment><USER10> Pic related: [http://kibeloco.com.br/platb/files/104/2010/10/Mario- Chile.j...](http://kibeloco.com.br/platb/files/104/2010/10/Mario-Chile.jpg)

</comment><comment><USER11> In other news a group of Chilean Miner's Families chased the 1300 journalists camped at the mining town out of town claiming that stunk up the joint..:)</comment>