"A Cold War Every Day" inside Apple's internal tools group - <AUTHOR> https://www.buzzfeednews.com/article/alexkantrowitz/always-day-one-exclusive-excerpt-apple <comment><USER2> Sounds like a bank, a government agency, or any business over a certain size.

I tell people you only call it politics when you are losing. More accurately, it's a layer of literal stupidity above the competent to shield the money side of the company from the leverage that operations people would have if they had any information about how the money side worked.

Instead of a hierarchy, rethink a company as a hub and spoke model with concentric rings. The main differences are the implication in a hierarchy that there is "gravity," keeping people down and that they need energy and leverage to climb "up," which further implies there is a place to "fall," and that there is only one way "up," instead of many possible paths to the centre from all directions. There is no gravity, only gates and barriers, and even these are just information. Politics is how a middle manager runs interference and creates distractions to make sure you can't see over, around, or through them, and that the people behind them closer to the money can't see you. Tech is usually outside the main perimeter, mediated by contracting companies or middle managers whose job is to compartmentalize the value people create, and be sure it is replaceable.

Viewed this way, of course this demented political farce is how Apple works, because it's how everything seems to work when you have internalized the precise and specific mental model someone uses to take advantage of you.

Sorry if you can't unsee it now, but hopefully it will be funny and we can get good, competent people who value tangible skills into positions of power.

<comment> seph-reed This is just your own personal model? It's beautiful!

Is there a community where we could discuss something like this? "The spoke." I want to get obsessed with this.

<comment><USER3> [https://www.ribbonfarm.com/2009/10/07/the-gervais- principle-...](https://www.ribbonfarm.com/2009/10/07/the-gervais-principle-or- the-office-according-to-the-office/)

<comment><USER4> Its hard to not be cynical about corporations after reading that excellent post.

</comment></comment></comment></comment><comment> IST-Throwaway Fascinating to see an article about IS&T, definitely not something I ever expected to hear about on HN!

I was part of a team inside Apple that developed internal-facing tools for the retail teams. Our team was formed because of the extremely high cost in dollars and time that IS&T wanted to charge to develop some fairly straightforward tools. My team was taken from the departments that used the tools, and we developed things that were very custom-fit to what those departments needed.

Eventually politics overcame us, and IS&T finally managed to take over our team. We all became contractors in order to support the migration to their infrastructure, and continue development of the tools. A bit later we all became fired as our project was outsourced to contractors in India, managed by IS&T PMs who had no idea what our tool was used for and had never been inside a retail store. The tools all died shortly after that, some killed by IS&T, some petered out due to lack of use now that they no longer worked correctly or were a good fit for the users.

As far as we could tell, IS&T was run as a unique company inside Apple, which did it's fair share of price gouging in order to make itself money to keep going. Its purpose never appeared to be helping Apple customers or Apple employees, it was simply to get bigger, absorbing more money and power wherever possible, with no apparent reigning in from the parent org.

Although my experience is several years old, everything in this article rings true. The contracting companies they had us working for were taking a huge cut, the quality of the code they produced was dismal, (as soon as we were no longer allowed to re-write their code major things began breaking almost immediately) and people getting transferred around constantly and having no time to understand any one project was common. (rkho's comment about their hiring process seeming like it was simply a beard for a nepotistic contractor conversion was something we definitely saw a number of times.)

All in all it was an extremely eye-opening experience. Considering how "do it the Apple way" every other department we interacted with was, being in the IS&T buildings was like landing on an alien planet.

<comment><USER5> When will companies learn that cheap development labor always ends up being more expensive than starting with quality? This same story has been playing out over and over for _decades_.

<comment><USER6> Around 12-13 years ago, I was working (as a team of one on a highly technical upgrade, 32-64 bit upgrade, new compilers, OS changes, etc. Basically everything was changing). Naturally, I was falling behind debugging obscure issues largely due to 32->64 bit (this was C++ cross platform between windows and Linux).

My director offered to toss some offshore resources my way to help. Bluntly told him: I think I have 3 months work ahead of me. Give me offshore resources, it'll more likely be a 9-12 months, because by the time ive described the problem in sufficient detail, I could have just done the work. Instead, id have to review a broken "solution" that doesnt work, probably makes things worse.

Offshore is fine when you need grunt work, pounding out CRUD interfaces or already having a detailed spec. But, offshore doesnt work when you're flying by the seat of your pants.

Most of the big ossues I jad durong that release werent even my own. A few I remember: an x86/x64 inline ASM bug, use of an uninitialized variable in a DB lib that led to random failures dealing with NULLs, an overflow in a 3rd party datetime lib and ABI mismatch because of wrong datatypes used in an OSS ODBC wrapper that worked in 32-bit, but failed horribly on 64-bit.

None of the offshore talent I worked with at the time could have identified, let alone fix those issues. Several of those took reading the actual generated assembler to see what is going on. I dont write much x86/64, but I can read enough to know when shits going to hell.

The 2 big agencies I delt with were Salient and Accenture. I could work with Salient, most of their asserts were Indian and spoke English. Our Accenture resources were all Chinese. It was a pain in the ass because none of our engineering resources spoke or read/wrote English. Everything had to go both ways through a translator. Something was always lost in the translation. We ended up eating the contract and backing out with Accenture.

<comment><USER5> > Offshore is fine when you need grunt work, pounding out CRUD interfaces or > already having a detailed spec.

My partner works at a startup with a very simple CRUD project. They outsourced one of the early sections of that UI. Even in such a simple case, integrating that component has been a huge time-sink and maintaining it is basically out of the question. They're working on a plan to rebuild it, as so often happens with these things.

Fire-and-forget software simply doesn't work.

<comment><USER7> Any monkey can write code. Writing the _right_ code critically depends on communication.

</comment></comment></comment></comment></comment><comment><USER8> A while ago I interviewed for a senior fullstack role with a very homogenous team at Apple -- every single person on the team had been converted from the same consulting company (I believe it was Wipro).

It was a bizarre interview with three of the engineers on the team on the same call asking me very specific programming language trivia and nothing about my experience nor ability to navigate complex political structures -- you know, the things that you would expect a senior fullstack engineer to have before advancing them to the next round.

Unsurprisingly, I wasn't advanced to the next round. In light of this article, I can't help but wonder if it was all a ruse to simply demand another nepotistic FTE conversion from their same consultancy.

<comment><USER9> Perhaps, but perhaps the role just wasn't fit for you. A lot of 'senior dev' roles are much more about programming language trivia and much less about leadership.

<comment><USER10> I can't tell if you're being sarcastic, or if you live in some kind of Kafkaesque dystopia I never want to be part of.

At my employer, the best senior developers are the ones who know they can google the answer to trivia so they don't need to remember it.

<comment><USER6> > the best senior developers are the ones who know they can google the answer > to trivia so they don't need to remember it.

I've +20 years developing professionally. I remember the stuff I use day to day, and know how to navigate the docs of the technologies I use frequently for the less used tidbits. Being a good Senior isnt about knowing the answers to everything, but knowing how to find the answers quickly. Also, how to ask the right questions.

I don't know is always an acceptable answer, but should be followed up with "I'll get back to you in an hour or two.", or something to that effect (obviously for some problems, may need to experiment/prototype).

</comment></comment></comment></comment><comment><USER11> I had a similar experience w/Apple. A startup I worked for was brought into Cupertino for a meeting w/their internal business teams. They wanted us to build them an app which seemed relatively simple involving their internal Cafe Mac cafeterias, data centers, and possibly retail locations. It was something that a company like Apple could build in their sleep. But the business folks we met with said that's how it is at Apple, all the engineering talent goes towards the product side and almost nothing is left for internal IT. They told us how they struggled to get anything done and there were almost no resources available, so the business teams had to go and hire their own IT if they needed things done.

<comment><USER12> _> But the business folks we met with said that's how it is at Apple_

That's how it is at most companies.

Split orgs (IT & business) result in only work of sufficient size, scope, and impact being able to cross the barrier.

Multi-year logistics management rewrite? You'll get two IT teams.

Frank in accounting needs to schedule a daily job to copy from one datastore to another? He doesn't have permissions to, and has been doing it manually for the last 5 years.

IMHO, every org along those lines would benefit from an independent IT tiger- team whose sole job it is to find business problems and apply technology to solve them.

<comment><USER13> And god forbid IT allows tech-savy or power-users to do things, that's not secure.

<comment><USER14> At least at Apple, in the groups I was in, this was never an issue.

<comment><USER12> That's the difference between "the business" being tech, vs everything else.

Kind of hard to lock down everything to personal environments, when the majority of the company are developers!

</comment></comment></comment></comment></comment><comment><USER15> I could use some blog posts about quite functional teams.

Like someone on a team for a decade talking about why it works so well and discusses cultural and political issues and how the team overcame them.

<comment><USER16> I managed a high-functioning C++ image processing group for 25 years. I kept senior-level engineers on staff for decades.

We tended to write "engine code." Like pipelines and whatnot.

The company had a very ( _very_ ) long tradition of engineering (Like, 100 years).

There were many downsides to the way they worked (over-structured, mostly), but they always gave my team and me a great deal of respect.

They didn't use contractors very often.

To this day, design quality, code quality, product quality, documentation, and focus on deliverable are the major cornerstones of my software work, but I am shocked at how little that matters to modern development shops. It's been a really disheartening experience.

I guess I was in a silo of quality-focus, all those years. They would treat very minor bugs like extinction-level emergencies (not fun).

<comment><USER4> > but I am shocked at how little that matters to modern development shops. > It's been a really disheartening experience.

Modern development shops operate in a hyper competitive environment with razor thin margins. Unfortunately, great documentation is often the last thing that's prioritized for such shops.

Personally, I think this is a HUGE mistake; talented technical writers are in good supply and should be hired by any development shop to improve adoption of their product. HOWEVER, as a developer, the shop will prefer that you work on features rather than documentation.

<comment><USER16> There are ways to write code in a manner that leaves a documentation trail.

I write about that here: [https://littlegreenviper.com/miscellany/leaving-a- legacy/](https://littlegreenviper.com/miscellany/leaving-a-legacy/)

</comment></comment></comment></comment><comment><USER17> > For Apple, fixing its broken IS&T division would not only be the right thing > to do from a moral standpoint — it would help the company's business as > well. If Apple is going to become inventive again, it will need to give its > employees more time to develop new ideas.

I actually laughed. What kinds of applications do people think IS&T is building? Supply chain management, HR, support software (Apple forums anyone?)... I don't see how Apple sticking its core engineering resources or at all innovating within IS&T helps their business.

Steve was the one that coined the 10X rule, or popularized it. That idea must still hold within Apple's executive ranks. I guarantee Apple's top engineers never interface with IS&T and their time won't be saved by improving it. In fact I would bet that managing the deliverable of one of IS&T's projects is a sign that you're not one of the golden ones.

That said, I obviously think these contractors should be treated much better and overworking people for low pay is never okay. Maybe Apple could use some smaller dev shops that treat their people better.

</comment><comment><USER18> "They're just fighting for the roles," Sabapathy told me. "That's all they care about, not the work, not the deliverables, the effort they put in, or even talent. They're not looking for any of those aspects."

This is spot on for every large organization I ever consulted for. Moreover. Even in much smaller businesses, typically starting at around 70-100 people (sooner if management has prior large business experience) you can already see this pattern starting to seep in.

This is also why the whole private vs public sector efficiency debate is farcical. They are both identical in this aspect.

</comment><comment><USER19> Sounds like the politics of every large corporate IT department, but with some twists given that it's Apple. Maybe this helps explain why Apple is not Amazon.

<comment><USER20> If there's a company CEOs should be afraid of, it's Amazon. They killed bookstores, mall stores, how many other retailers? They were the first major cloud provider. They tried their hand at phones, streaming video, and streaming music, and the bought a grocery store. There's nothing they won't try, and they have the war chest to do it.

</comment></comment><comment><USER21> Is there any big consumer product company out there that doesn't deprioritize management and engineering talent for internal tools and systems ?

<comment><USER22> It's an interesting question. And if the answer is no, I guess the logical conclusion is that internal tools make very little difference to the success of consumer product companies.

That doesn't seem like an intuitive conclusion, but it's a hard circle to square. As someone who mostly builds internal tools (though in a very different context), it certainly seems like good systems are an Archimedean lever that acts as a force multiplier across the entire org. Yet, if good internal tooling was important, you think at least one company would have been able to achieve success partially on this basis.

The consumer product industry is extremely competitive, so the counter- hypothesis of entrenched sclerotic incumbents refusing to pick up $20 bills off the sidewalk doesn't really seem likely.

<comment><USER23> To the contrary, some of the most successful software companies have strong cultures of internal tools (think FAANG companies). How much of this is cause and effect I'm not sure though. To some extent it's easier to make investments in internal tooling if you're profitable.

<comment><USER24> Facebook in particular seems to wildly overinvest in internal tools, and if you ask them why they don't use external stuff they tell you it's because "it doesn't scale". We get things like Phabricator and HHVM out of it, but they could've just not written those, and I'm pretty sure their business would be fine.

They do it because it gets them promoted, and because FB and Google rely on hiring every engineer ever and giving them make-work so they won't leave and start a competitor.

<comment><USER25> Interesting! This isn't how I remember things at all. Do you know where you got this sense of things from, specifically?

In particular, do you remember what gave you the impression that Facebook "overinvested" a large amount of effort into Phabricator, that I developed and open sourced Phabricator primarily to get promoted, that I built Phabricator because of scaling concerns, or that the primary value I provided to Facebook during my employment there was just in not starting a competitor?

</comment></comment></comment></comment></comment><comment><USER26> IS&T is run by the CFO and it shows.

</comment><comment><USER27> The contract companies (Wipro, Infosys) hire graduates by the 100's from mediocre engineering colleges, slap on a little bit of training and advertise them as world class. The starting salaries are something like INR 25,000 (USD 350) per month. An onshore posting for these low skilled graduates is a quick way to make money. So they suck up to their managers who suck up to bigger managers. Their main criteria is to get hold of contract work by undercutting, knowing very well there is vendor lock in.

</comment><comment><USER28> Body shop wars. What gets really interesting is working for a body shop with consultants from 2 other shops on the same team.

</comment><comment><USER29> IS&T shouldn't be part of Apple. It's culture and engineering talent aren't representative of core engineering.

<comment><USER23> In the old adage that "you get what you pay for", the internal tools at Apple aren't quite the best as a result. The Radar tool I recall was pretty horrible in particular.

<comment><USER24> Radar is the world's best bug tracker. The sole reason for this is that the originator gets to close bugs, not the fixer.

<comment><USER30> Tell that to all the bugs I've filed that have been closed by Apple for some bullshit reason or another :)

<comment><USER24> The new feedback assistant is actually a lot better about this - you get more status updates and you can see the original bug state even if it was a duplicate.

</comment></comment></comment></comment></comment><comment><USER31> "Don't work in IS&T" has been the common wisdom in Blind for years now. Interesting how long it takes for the media to pick up stories like this.

</comment><comment><USER32> Is this the team handling iTunesConnect and other such "services"? I'd definitely believe it.

<comment><USER33> From what I understand, probably not.

iTunesConnect has had an overhaul in recent years to give it a much shinier and more reliable frontend. I believe the original was closer to the original WebObjects code, and now they've extracted out the user-facing bit into something a bit more modern. There's a lot of legacy WebObjects stuff around the iTunes backend, and my guess is that it's good engineers held back by old tech, rather than just bad engineers.

<comment><USER34> It's App Store Connect now!

</comment></comment></comment><comment><USER35> The days when the primary mission of IS&T was to develop custom software to run Apple are probably long past. The big exception is Radar, an ideosyncratic issue-tracking system which was developed in-house by IS&T around 1990. As far as I know, Radar is still used in R&D and elsewhere at Apple.

Tim Cook probably couldn't care less about the internal affairs of IS&T. As long as they do their job, play by the rules, and don't impose too much overhead on the company, it's all good.

</comment><comment><USER36> The part I don't get is, why does a company, especially one like Apple who would count software quality as a core competency, choose to pay $120-150 an hour to get contractors who aren't even good enough to command a salary (or hourly rate) of half that. I get why like, United Airlines does that. Or the US Government. They probably rightly assume that they can't properly manage a huge software development or IT org. But Apple? Really? What the hell are they gaining? If they paid a developer full time $120k a year plus benefits that still beats $120+ an hour. WTF.

</comment><comment><USER37> I would be grateful if any Apple insiders here can discuss the risk of layoffs if one were to join the company now.

I have an offer to join an engineering team at Apple, but the chances of getting hit by layoffs is giving me pause. More details on my situation are here: [https://news.ycombinator.com/item?id=22809769](https://news.ycombinator.com/item?id=22809769)

<comment><USER38> Apple has a ton of cash. I think layoffs are unlikely. Many times new hires are protected as well for a bit.

<comment><USER37> Do you work for Apple? Might you have any insight into how the company decides how / who to layoff, when the time comes?

I would have thought that the newest would be the most vulnerable, since they haven't had the time to absorb institutional knowledge and make internal connections.

</comment></comment></comment><comment><USER39> Sounds exactly like government contracting.

</comment><comment><USER40> Lol. Just like Govt contracting.

</comment><comment><USER41> Does Radar belongs to IS&T?

And I wonder if this IS&T power grabbing and politics happen and grow within the past 10 years. i.e Happen under Tim Cook's watch.

It surely doesn't seems very Steve Jobs approach.

<comment><USER42> Radar's owned by IS&T.

IS&T was completely broken under Jobs and hadn't changed much under Cook while I was there.

</comment></comment><comment><USER43> One of the world's most successful and wealthy companies in history shouldn't be bottom fishing for the best "deal" on employees. I wonder how much better they could be if they decided to hire at the top of the market like Netflix instead of the bottom.

That is probably why Apple software is among the worst in the industry, and it's a shame. I know IS&T isn't strictly software like iTunes but it fits the pattern I've seen at Apple. But I guess if it doesn't affect their sales maybe I'm wrong and it doesn't matter and they are right.

<comment><USER34> The quality of Apple's software engineering organization is head and shoulders above IS&T's; iTunes (…and Apple Music, News, etc.) is run under a different (services) group.</comment></comment>


Nim 0.13.0 has been released - <AUTHOR> http://nim-lang.org/news.html#Z2016-01-18-version-0-13-0-released <comment><USER2> For anyone who's interested in learning more about Nim, here is Andreas Rumpf (the creator of Nim)'s talk at the OSCON 2015 conference: [https://www.youtube.com/watch?v=4rJEBs_Nnaw](https://www.youtube.com/watch?v=4rJEBs_Nnaw) ; and here's a longer, more-technical talk at the first Nim Workshop in November 2015: [https://www.youtube.com/watch?v=zb3Sqs7lNJo](https://www.youtube.com/watch?v=zb3Sqs7lNJo)

Here's the official Nim tutorial: [http://nim- lang.org/docs/tut1.html](http://nim-lang.org/docs/tut1.html)

And here is the very approachable "Nim by Example", which offers a series of short, simple lessons about the main Nim features: [https://nim-by- example.github.io/](https://nim-by-example.github.io/)

<comment><USER3> Great links! Also be sure to get in touch with us if you get stuck. We're usually pretty active on IRC [1] and the Nim Forum [2], but feel free to also ask questions on Twitter [3], StackOverflow [4] or Reddit [5].

1 - [http://webchat.freenode.net/?channels=nim](http://webchat.freenode.net/?channels=nim)

2 - [http://forum.nim-lang.org/](http://forum.nim-lang.org/)

3 - [http://twitter.com/nim_lang](http://twitter.com/nim_lang)

4 - [http://stackoverflow.com/questions/tagged/nim](http://stackoverflow.com/questions/tagged/nim)

5 - [http://reddit.com/r/nim](http://reddit.com/r/nim)

</comment></comment><comment><USER4> Nim's approach to parallelism is, for the general industry, basically groundbreaking and inspiring work.

I really wish that this language got more attention. It can fill many of the same holes that Go fills without all the awkward dependency non-management and bad error handling. Similar story for Rust, it's got a lot of similar benefits without an ownership and extent model many people find confusing.

<comment><USER5> Groundbreaking? How so?

<comment><USER4> While it's not amazing in academia, seeing static analysis of correctness for concurrent and parallel code is unusual outside of things like Haskell language extensions.

Check out what they're doing. It's quite unusual to see.

</comment></comment></comment><comment><USER6> This is really great little language. I really enjoy using it and executables I get from it can be very small which brings smile to my face.

<comment><USER7> I like everything Andreas did differently from Python, except the unusual normalization rules for variable names. This is crazy:

        VariableName == variable_name == VaRiAbLe_NaMe

<comment><USER8> I brought it up recently in the #nim irc channel, trying to get a good explanation. The creator still seemed to think it was a good idea, and I could not convince him otherwise.

<comment><USER7> Yeah, I feel your pain. This is a deal breaker for me.

My OS of choice for the last 25 years has a case sensitive filesystem, all the programming languages I learned (well, except PHP) are case sensitive, it is too hard to unlearn.

BTW, PHP has weird case sensitivity rules. Case sensitive (both user defined and PHP defined):

      * variables
      * constants
      * array keys
      * class properties
      * class constants

Case insensitive (both user defined and PHP defined)

      * functions
      * class constructors
      * class methods
      * keywords and constructs (if, else, null, foreach, echo etc.)

<comment><USER3> Why would you need to unlearn it? Simply write code as you would write it in a case sensitive language.

<comment><USER7> I've been programming Python for a living for the last 8 years or so.

In Python there is a convention for naming classes with `CamelCase` and instances with `snake_case`.

I could do that in a case insensitive language, but I can't do this in Nim because it is not only case insensitive, it violates the "principle of least astonishment" by normalizing variable names in a way that makes `FooBar` equivalent to `foo_bar` or `F_o_O_b_A_r`.

If you can't see the trouble with this, I rest my case.

<comment><USER3> If I understand you correctly, the convention is basically the following, right?

        class FooBar(): pass

        foo_bar = FooBar()

The equivalent in Nim:

        type FooBar = object

        var foo_bar = FooBar()

Compiles and runs perfectly fine.

How can this be the case? Well, the identifier equality rules in Nim have changed a while back, to make the first letter of every identifier case sensitive. So, FooBar == Foo_Bar == Foobar, but fooBar != Foo_Bar.

<comment><USER7> You are right. Nim is not case insensitive anymore, it is case sensitive for the first letter. But in my defense, the last time I checked it used to be! Quoting from the wayback machine:

> Nimrod is a style-insensitive language. This means that it is not case- > sensitive and even underscores are ignored: type is a reserved word, and so > is TYPE or T_Y_P_E. The idea behind this is that this allows programmers to > use their own preferred spelling style and libraries written by different > programmers cannot use incompatible conventions.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER9> I will definitely be keeping an eye on Nim. That aside, does anyone else find the fact that Nim treats "-1" differently to "\- 1" (quotes added for clarity) a bit disconcerting?

<comment><USER10> In Lisps, this:

        (- 1)

and this:

        (-1)

Are completely different things (the latter is actually an error). Also in LiveScript

        ls> (- 2)
        [Function]
        ls> (-2)
        -2

Also in Smalltalk, this:

        -3. "=> -1"
        - 3. "=> Error!!!"

That's off the top of my head, I'm sure there are many other languages with this characteristic. Why would that be a problem? It's just a single (or a couple) parse rules to remember (but you get other benefits from it).

<comment><USER11> Perhaps most notably, Haskell has the same behavior as LiveScript.

EDIT: Derp, that's not true. (- 2) == (-2)

<comment><USER12> To be clear: (- 2) is not a section in Haskell, it's effectively a numeric literal because '-' is Haskell's only prefix operator. Haskell has a 'subtract' function that's defined in its Prelude that is used where a section for (-) would be useful.

It's a minor wart, and probably never going to be fixed.

EDIT: clarified

</comment></comment></comment></comment><comment><USER13> I used to play around with it when it was still call "Nimrod" and it was quite good fun. It's easy to learn and the examples were good. A c like language that has a python like syntax was something I had hoped for for some time.

<comment><USER14> Why was the name changed from Nimrod to Nim? IMO Nimrod sounds better. Nim is the name of a game: [https://en.wikipedia.org/wiki/Nim](https://en.wikipedia.org/wiki/Nim) .

<comment><USER15> Because in America, the name "Nimrod" is almost exclusively recognized as the epithet applied by Bugs Bunny to the hapless hunter Elmer Fudd, so the name of the language sounded risible to a lot of people: [https://news.ycombinator.com/item?id=8351773](https://news.ycombinator.com/item?id=8351773)

<comment> chestnut-tree Interesting. In the UK, the word Nimrod is recognised (if at all) as a piece of classical music by the British composer Edward Elgar (from his work Enigma Variations)

[https://www.youtube.com/watch?v=sUgoBb8m1eE](https://www.youtube.com/watch?v=sUgoBb8m1eE)

<comment><USER14> There were also RAF Nimrod planes, IIRC.

<comment><USER16> Named after the ship Nimrod, that was Shackelton's ship for his 1908 South Pole attempt.

The Hawker Siddley Nimrods replaced the older Avro Shackeltons that were ultimately derivatives of the Lancaster.

</comment></comment></comment></comment></comment></comment><comment><USER17> I had a play with nim and it wasn't totally to my taste.

Another language that is worth checking out is myrddin [http://eigenstate.org/myrddin/](http://eigenstate.org/myrddin/). If you haven't heard of it before, I would describe it as C with generics, type inference and pattern matching.

</comment><comment><USER18> This has always been a pretty cool project. While some have said Araq has a case of NIH (probably true), I've found it very nice that Nim and the whole ecosystem around it is as polished as it is. It also means there's a good amount of example code out there.

<comment><USER19> I enjoyed starting to learn about Nim, but the worst case of NIH is the forum.

There is good forum software out there. This thing that Araq wrote in his spare time is not good forum software. It is outright painful to participate in a discussion there.

<comment><USER3> As somebody who has written most of the Nim Forum, I'm really sad to hear that. I appreciate good feedback though.

What would you say should be improved in the forum to make it less painful to use?

<comment><USER19> Ah, sorry that I assumed it was all Araq's doing. Here's my feedback:

I see no way to keep track of threads I've posted in, or threads I am interested in, or get notifications when people reply. That would be the most important thing. Maybe I'm missing something, because right now I read down the list of subjects for threads I'm interested in, and look for whether the most recent responder is different from who I remember.

Writing forum comments in ReStructuredText is not friendly. Anyone who is not wise to the ways of the forum is going to fail the first time they try to post code, and I still have to look up a ReStructuredText reference, because I never use RST for anything else. Just use GitHub-flavored Markdown, the markup language of least surprise for developers.

As another person responded, reading a thread longer than 10 messages is unnecessarily awkward. The navigation buttons -- which must be used frequently -- are not particularly prominent on a computer screen, and on a phone they're like a millimeter in diameter.

Interface elements are strange. Why is someone's username a link if the page behind it doesn't do anything useful such as list their posts? Why does the timestamp have a dotted line under it? What am I supposed to be able to do with the timestamp? I would expect from other places that it would be a permalink, but it seems to just be nothing.

<comment><USER20> There is a syntax cheatsheet link under the text entry for forum posts.

Since its still not a huge forum, adding notifications would create a lot of overhead and I'm not sure it is that much better than looking for your icon in the threads and using the fact that threads are ordered by most recent posts. At this point it seems unnecessary.

If you have ideas for improving it though you can make a PR: [https://github.com/nim-lang/nimforum](https://github.com/nim-lang/nimforum) . Best to discuss on the IRC channel with dom96 and them first though (or on the forum).

I agree it would be nice if it loaded a little more than 10 at a time, but the nav arrows aren't that bad for me.

<comment><USER19> Remember how I said this software was an example of Not Invented Here? This means that when you ask for my feedback and then switch the topic to the classic open-source defense of "so fix it yourself", I'm even less likely than usual to comply.

The Nim community's attempt to write a forum from scratch has left them with a deficient forum, and I've explained some reasons why. I took your request for feedback seriously, so you should take my feedback seriously.

<comment><USER20> I don't represent the other guys who actually built Nim and the forum, I only played with Nim a little bit and am a fan. I feel like the forum is ok. Notifications would be interesting to work on but I have two other projects besides my day job and haven't had time to play with Nim for months. Not sure where all the salt is coming from.

</comment></comment></comment></comment></comment></comment></comment><comment><USER21> I've investigated whether or not Nim could have Python2 compatibility mode. I think Nim or any language's future could easily be secured by simply finding a way to carry on compatibility with Python2. I've wanted to offer the libre source community another path forward from CPython2.7.

Such a huge opening there for multiple parties. Unfortunately, in my research in figuring out how to do this I found that it's actually fairly difficult to provide CPython2 compatibility.

I do wish Nim the best and hope that it gains traction. More languages, more choices are always better.

<comment><USER22> I highly doubt any language would want the baggage of python 2 compat, especially when the people interested by definition are going to oppose even minor change.

</comment></comment><comment><USER23> Great news! I wish they invested a bit more to the concepts though.

<comment><USER24> How so?

<comment><USER25> concepts, as in "user defined type classes"

[http://forum.nim-lang.org/t/208](http://forum.nim-lang.org/t/208)

</comment></comment></comment><comment><USER26> The way macros and dot operators work in Nim is super neato. Lots of interesting possibilities for DSLs and the like.

<comment><USER24> One of the coolest i've seen in a while is Emerald: [https://flyx.github.io/emerald/](https://flyx.github.io/emerald/)

</comment></comment><comment><USER27> Do they have a clear roadmap to reach 1.0?

<comment><USER28> Linked at the bottom of the homepage: [https://github.com/nim- lang/Nim/wiki/Roadmap](https://github.com/nim-lang/Nim/wiki/Roadmap)

</comment></comment><comment><USER29> my only complaint with nim is that there exists Pascal code out there that gets rotten and it is not possible to transpile it to nim.

Imagine Nim using LCL (Lazarus Component Library) or mseide code.

I think they should rethink it.

<comment><USER3> Maybe this could help? [https://github.com/nim- lang/pas2nim](https://github.com/nim-lang/pas2nim)

The Nim compiler was originally written in Pascal and Araq used this tool to translate it into Nim, so it should work pretty well.</comment></comment>


Ask HN: What should I do when I'm bored with my career? - <AUTHOR> I really like programming but I quickly get bored at work. I often work on personal projects during work hours because they're more interesting. The success or failure of a business, even one I depend on for income, does not motivate me. None of my personal projects are monetizable. They're just things I do to learn. It's the experience of learning that excites me. I have a little experience teaching (after-school program) and writing about what I learn. I enjoy that too. My ideal life would be one where I am free to explore things that interest me and share that knowledge with others.
Unfortunately, I can't afford not to work. So I need a career of some kind and am looking for a career that's more aligned with what naturally motivates me. I've contemplated going back to school but am not convinced this is a good idea. I have a degree from an art school, no formal computer science education, and no math since highschool. I also don't have much money. If I wanted to study computer science, I'd have to start at the undergraduate level and borrow a lot of money. School as an investment makes sense to me but I'm not sure what I would be investing in. I don't think a career in academia would appeal to me, and borrowing that much money because I'm bored at work sounds like a bad idea.
Does anyone have a suggestion for what I can/should do to improve my circumstances? <comment><USER3> I do career consulting (and resume writing) mostly for clients from tech. I think some arrangement where you had multiple forms of income (or potential income) might be a good solution for you. What might that look like?

\- Freelance software development - This would give you some control over what types of projects you work on, and you could focus on areas that really interest you. Maybe it would be projects that enable you to learn a new language. You also can typically work from home, and you will be able to balance your time between different work.

\- Freelance writing - If your writing is good you can certainly pick up some $$ here and there by writing articles for tech sites. I've done that for tech sites as a writer on career topics, and many of these sites are always seeking new content. The amount of money may not be a game changer, but if you enjoy the work you can probably make this 10% of your overall income.

Personal projects - Perhaps some of them can be monetized and you just haven't come up with the correct concept. Or perhaps you can come up with some ideas for projects that are both interesting and able to be monetized.

Working for yourself is quite motivating. I've done it for several years, and when failure isn't an option you will find ways to stay motivated. I spent 20 years in recruiting before transitioning fully to my current job (resume writing, content writing, career consulting, other freelance writing projects), and I've really enjoyed the change.

Some people aren't cut out for a 9-5. I certainly am not, and it doesn't sound like you are either.

<comment><USER4> interesting about writing, could you please mention some of the tech sites that pay money for content?

<comment><USER3> I've been paid by Dzone.com (for both writing and editing) and TechBeacon. I was published a few times by Lifehacker although I don't remember if those were paid (and they aren't what I'd consider a tech site).

Reaching out to site editors with a couple samples of work could find you getting work published. As a freelance software developer, getting paid to write is nice, but just getting published can help increase exposure and lead to more incoming requests for project work and improved reputation.

</comment></comment></comment><comment><USER5> Accept it or change it.

Accepting it is transitioning from the realisation that you're doing it because it's interesting to doing it because it pays the bills and funds other interests.

Changing it is transitioning something else into the place that is currently occupied by work.

Both of these require finding something that interests you so start there.

But remember, life is long, interests wax and wane so this is perfectly normal and don't sweat it as some failure or worry about it being a wrong attitude.

Edit: Just to add I've been through this twice. First I changed it (electrical engineering to software engineering). Now I accept it because my interests will never pay the bills I have :)

</comment><comment><USER6> Boredom is caused by a lack of attention. You can change your activity as much as you want but after some time it will become boring again.

The only solution is to realize the scale of this Grand Happening which we call as life or existence. That every day comes fresh and new, not a single atom is the same as it was a moment ago. But if you don't have this much attention it feels "the same", "boring". And it's not about the job only, friends, family, movie you name it.

If you realize this you can swipe a floor for the lifetime and it will never be boring.

<comment><USER7> I'd love it if you could share some more information or materials on this. It's something I've been trying to comprehend and understand in my own way.

<comment><USER6> Here you go: [https://www.ishafoundation.org/news/columns/Bliss/2009/Bliss...](https://www.ishafoundation.org/news/columns/Bliss/2009/Bliss-6Sep2009.pdf)

<comment><USER8> You're living in your own petty creation, man!

Just kidding. Aside from some of the funny wording this is a nice, simple philosophy and I'm going to think about it today.

<comment><USER6> Be careful: you are going to think about something which requires you not to think. Think twice about that ;)

</comment></comment></comment></comment></comment><comment><USER9> You may want to change your attitude toward work. There's a reason it's called "work" and not playtime. There's a reason they pay you to do it.

I like to think about the guy stuck in a shit town, working in a coal mine. Maybe they all drink themselves to oblivion and I'm delusional, but I envision at least some of them this way: Guy goes down there and busts his ass all day in the dark, getting dirty as fuck, probably doing long term damage to his lungs and such. But it's his job and at the end of the day he goes home to his wife, kids, and dog, and realizes that work is just something he has to do to support the parts of his life he cares about.

>> Does anyone have a suggestion for what I can/should do to improve my circumstances?

Yeah, quit acting like an entitled little child. Be grateful that you have a job that often requires more education than you have. Stop thinking you can just monetize some personal interests and retire. Life requires effort, give it some. Once you get over that hump you may be able to consider which alternative you're willing to put actual effort toward.

<comment><USER10> While it might feel good to admonish people and tell them that they have to get tough and suck it up and pull themselves by their bootstraps, it typically does not do anything to help them; particularly if they are taking the initiative to ask for help in the first place.

OP more likely than not realizes that they are in a situation of privilege compared to someone working in the mines to sustain their family; if they are posting here, then clearly that insight alone has not sufficed to help them deal with what they are feeling.

All we know from OP is 3 paragraphs of text they wrote, asking for help; telling them to stop "acting like an entitled little child" is downright rude and not what HN is about.

<comment><USER9> I realize my response may not be helpful and is not in the normal spirit of HN. But OP said this "My ideal life would be one where I am free to explore things that interest me and share that knowledge with others."

Look, not everyone can be an Instagram model or a YouTube star. Sometimes a good smack in the face is what's needed to spark a little motivation. Sometimes not, but I think it's worth putting out there.

For some less harsh motivation I'll offer this:

[https://www.ted.com/talks/mel_robbins_how_to_stop_screwing_y...](https://www.ted.com/talks/mel_robbins_how_to_stop_screwing_yourself_over?language=en)

<comment><USER11> [https://twitter.com/dril/status/473265809079693312?s=21](https://twitter.com/dril/status/473265809079693312?s=21)

I think it says a lot about your worldview and experience if you think there are only two careers (industry drone and Instagram celebrity). There are lots of jobs people find happiness through, like teaching or creating art. If you have some time off work for new years, I'd recommend playing the game The Stanley Parable.

<comment><USER12> Do you think the person you replied to would really think their world view is based off the two paths you've listed? Also deferring to a video game for philosophical discussion....

</comment></comment></comment></comment></comment><comment><USER13> I found myself in a similar situation about a year ago. Started developing [https://mocktastic.com](https://mocktastic.com) (REST API mocking electron app, with team collaboration) on the side. It's kept me going through periods of mind numbing boredom in office, even though the user growth has been rather slow (but steady).

I'd say find an area of interest – one that doesn't have anything to do with programming. Then learn as much as you can about it. Next, identify things you can change with your programming skill.

Once, you've identified 3/4 things, find some people who make a living dependent on those things. Go talk to them about how you would improve things. If they light up, it's time to start coding. Else find something else to change.

The combination of learning about a new industry you know not much about and trying to build a solution for that industry, should keep you busy outside office. Leverage that, and use your office time as your down time.

<comment><USER14> great name!

</comment></comment><comment><USER15> This is just my experience and of some I observe around me. I see a lot of very talented and passionate developers wanting to come up with personal projects that can make them money but, because they're so deeply interested in software engineering, the only ideas they have are related to (surprise!) software engineering problems.

Yes, you can make money selling products or services for software development but to really come up with something that reaches more people or businesses you need to invest in other interests, you need to be around more non-techies, you need to try more concrete world things.

Use your acute problem analysis and solving skills to identify and model problems in the world "out there." Model and remodel the problem to exhaustion, fall in love with it; think, design, experiment solutions and a why people would pay for it.

It's possible there's a lot of stuff to learn in this whole process. And you can do this over and over, with different problem spaces, if you become good at it.

</comment><comment><USER16> In short, part time remote freelance web development. Do it for 10-20 hours a week depending on how much money you need/want. Do whatever you want with the rest of your time.

I've been doing this for 8 years (the entirety of my professional career).

I've had times when I worked about 10 hours a week and nomaded around Europe.

I've had times when I wanted to build a thing, so I spent 30 hours a week working on the project and 10 hours a week on freelance. The thing didn't work out but it didn't matter because I had "safer" money coming in from freelancing.

I've had times when I wanted more money, so I worked about 30 hours a week on freelance to build up some savings.

I absolutely love this lifestyle and have basically complete control of my time now other than the time I put into freelance. I currently work about 3-4 hours in the morning in my home office and then do whatever in the afternoons. Currently my afternoon project is a website for helping other developers switch from full time employment to this part time lifestyle (www.lessboring.com).

If you can succeed at full time development employment, you can succeed in freelance, you just have to learn some social skills and some business skills depending on how much you know about those areas. The people I see who are struggling as freelancers seem to basically think they can operate exactly as an employee and succeed independently.

OP, I'd be happy to talk with you specifically over email or the phone about your situation. My email's in my profile. I've basically determined that my life goal is to help people get better jobs they actually enjoy, and as a developer you have way more options than most people since development is such a valuable skill right now.

</comment><comment><USER17> There's an old zen expression: "Before enlightenment chop wood, carry water. After enlightenment, chop wood, carry water."

One benefit I've found from meditating is that it makes me less judgemental of tasks and more willing to approach everything in life with a desire to do the task well.

I'd recommend reading one of Phil Jackson's books (the NBA coach). He's got some great thoughts on Zen, and it's interesting to see how he used meditation to help superstar athletes with big egos to focus on tasks that others might find "boring".

My naive impression of why this is effective is that meditation helps your brain realize that labels like "fun", or "boring", tend to fall apart upon scrutiny.

</comment><comment><USER18> Most of us , whether we realise it or agree or not, work for income which in turn allows us to work on more interesting things. Some may save up some money which lasts for a duration and go do the interesting things. You are doing it right!

However what will help is doing it differently. Can you do time blocking? I assume that while you are doing interesting things at work, no one notices or cares. That is a great job! So why not block your 1st half to do the necessary boring work, and the second half the interesting work. Win Win! I agree this may need some discipline but think of it as a daily ritual! Btw, many greats [1] have had rituals like this, so who knows? :-)

The other aspect you might be missing is 'when interesting things turn boring'. Usually that happens when you want to ship the product and you hit the long tail of shipping. Try replacing 'doing interesting' vs 'doing interesting and shipping'. But we don't want to give up the idea of doing only interesting? That happens when you can work through the boring parts of shipping an interesting piece of work. Keep trying and you will find it, then find a job in that domain or do your startup in that domain and you are set. I realised 3D graphics was my calling the same way, so I am saying from experience.

[1] : [https://www.amazon.com/Daily-Rituals-How-Artists- Work/dp/030...](https://www.amazon.com/Daily-Rituals-How-Artists- Work/dp/0307273601)

</comment><comment><USER19> I personally attempt to rotate what I do and am always trying to optimize (it keeps me interested). An example: when I was 14 - 18 I worked in a medical billing office scanning old documents (and new documents as they came in).

There were 3 of us working 15 - 20 hours a week. Most boring job imaginable (I'd do it Saturday and Sunday, 10 hours each). I found I could listen to audio books so I smashed through several hundred over the years of doing this (as well as the Teaching Company and other lectures).

I also started to look for ways to improve the process. I spent a little time exploring databases and OCR over my mandatory unpaid lunch and breaks. Eventually, I realized I could rather eaisly automatically change filenames, add to an SQL database, add a few tags, etc.

I then could setup a scanning job, which used to require manual data entry after each page, to then do one massive scanning job and only edit a few "failures" after the fact. This let me scanning 10x over the other two employees.

It looked good for me, so I got moved into network admin (more fun), which further kept my attention.

My point, it's up to you to find the motivation. But if you're curious and interested in self improvement, money, moving up the company ladder, etc. Then you can find the motivation to push yourself to at least try to change your situation. I did it via audio books and experimenting on breaks, what you do is unique to you.

</comment><comment><USER20> I've been there my friend. I've done as you have done. I even managed to convince my wife to let me go part-time for 6 months to pursue my "dream" and find meaning, you know, attempting the ideal. I eventually came to the conclusion that taking on more responsibility in my life gave me more of what I have been looking for than pursing only what I found interesting (remember interest fades!).

Do not cheat your employer (if you owned the company, would you appreciate your employees doing this?). Perhaps search for better ways to accomplish your work duties, take on responsibility, or move on to another endeavor where you would be more inclined to be an actual steward or leader.

Best of luck, don't be afraid to do some reflection, perhaps you will surprise yourself in regards to what exactly you are looking for, I know I have!

-T

</comment><comment><USER21> The main thing to learn in a work environment is how to finish things - <USER2> what it takes to finish things.

I suspect (happy to be wrong) when you say you like learning you mean you like everything about programming except the tedious task of drawing everything into a coherent whole and polishing it.

I think if you conceive of learning in a broader sense you may enjoy work more by finding insights in the process and in the people.

</comment><comment><USER22> The problem is that you don't feel like fulfilled at your current workplace. I can guarantee everyone had that feeling at one point or another. I have a PhD in engineering and I'm still not fulfilled. It's not about degrees, how many certs, how many side projects, etc. It's about life. You already answered your own question - you'd be happier to be free to explore things and share the knowledge. The keywords are "to be free", "to explore," "to share knowledge." How to make them into something sustainable is the question. And I suspect they are not the only things you want. The modifier is to be GREAT at them.

</comment><comment><USER23> Look around your local university's external job listings to get attached to a team as a research programmer. Often they are just looking for somebody to build and maintain a UI the scientists can use more easily, but you'll have lot's of opportunities to start rewriting algorithms to make them more efficient, and you're working with post-doc researchers and grad students so everyday is interesting not to mention some come with benefits, such as free tuition credits so you can P/T take courses at the school. Some resources here for teaching yourself these topics [https://functionalcs.github.io/curriculum/](https://functionalcs.github.io/curriculum/)

You will also collect letters of recommendations from the PhDs you work with, guaranteeing future employment on more research grant teams or for use to apply to a grad school program. Most students and developers pass up these opportunities because they don't pay near the same salary as industry does but if you can live with a hit in income you'll never be bored again. Sometimes you'll be the 'CTO', your job is to design whatever you think is the best way to sort/access/display research data which leads into Knuth territory generating all permutations, creating graphs, building a DSL, creating the user interfaces for it, best way to host an interface online for remote access, ect.

</comment><comment><USER24> Stop coding at work for non work and start coding at work for work.

Why not write something useful to help your daily work?

I can't imagine a project where i would not love to have enough time to actually cleanup/fix/extend/create x for our project we are working on.

</comment><comment><USER25> People used to say that opportunity is everywhere, you just need to pay attention. Fun is the same thing.

Some things that make every day fun

\- trying to know for who you are building your software for, talk to this end user, get to know how useful (or useless) your construction is actually solving something or not. I'm 100% sure that if you see many people using and feeling thankful from what you made, that would make you feel great. Nothing less!

\- improving the environment of your company. Look, everyone has a big problem. They are also coming to work with some problem on the back of their heads. If we could just light this a bit, it is immensely rewarding. We're going to die anyway, so why not make our existence a noble one? :D

\- find a topic that you like and present it to your boss, try to find together a way to combine both. He may have some idea, or the boss of your boss. Everyone wins when you are motivated

\- plan your big escape: if your goal is to only study, consider making some money, moving to a cheap place (Thailand?), and with a leeway for a few years, you can try to experiment some ideas. Why not put some courses on udemy for example? Teach all you could, in the best way possible and learn how to promote what you do

Have fun!

</comment><comment><USER26> Freelance. Seriously, freelance remotely.

You will be able to find work you love. If not, you will be able to easily switch projects and find something you will love doing. You will have the flexibility to work when you need money and the flexibility to work on your own projects when you have some savings in your pockets. Or better, you can do part-time projects for clients and part-time in your own projects. You can tailor your working habits.

<comment><USER27> It's hard to find freelance work - the contract roles are guarded jealously by recruiters and agencies (who take 30-40% of the revenue prior to giving it to you), and anything else is extreme luck or extremely good networking. If the latter (networking), remote is very very hard for someone who isn't already well-known.

<comment><USER3> Based on my knowledge of the market for freelance software gigs, I think you are grossly overestimating the difficulty of finding good work. "Extreme luck" is not necessary, nor is "extremely good networking".

30-40% is also probably a bit of a stretch for the recruiter's take (former recruiter here). Those numbers and higher are certainly possible, but 20% is a bit more likely. Also, if you are getting a competitive rate for your work, it really doesn't matter what the recruiter is taking, does it? If they are able to negotiate a huge finder's fee on top of your competitive rate, that's their skill being rewarded.

<comment><USER27> _Also, if you are getting a competitive rate for your work, it really doesn 't matter what the recruiter is taking, does it? If they are able to negotiate a huge finder's fee on top of your competitive rate, that's their skill being rewarded._

Hold on - I'm not talking about "finder's fee," I'm talking about agencies that seek consultants (W2 or C2C) that take a cut of 30-50% or more in perpetuity. For example, a job advertised as "$80/hr" to the consultant, is billed to the client as maybe $130/hr or more. That keeps consultant pay suppressed. The way around that is to a) know people in companies, like CTO's; or b) have a reputation that lets you not have to go through the consulting agency (or recruiter, same thing in NYC) bidding process (or at least that's what I call it).

<comment><USER3> I understand, but is in essence a 'finder's fee' that just works in perpetuity.

When I was a recruiter, if I placed a candidate for a FTE role and get say 20% fee (based on starting salary), I got that same fee whether someone remains in the job for 90 days or 90 years. I don't get additional money for each year they stay. That makes sense, because I'm not really responsible at all for that hire once it's made.

For consultants, recruiters may play some role in maintaining the relationship between the hiring client and the consultant. Not all recruiters do this, but many stay in contact with the consultant (to protect their investment) and with the client (to maintain that relationship, place more consultants, and ensure the client is satisfied with the work).

I'm not trying to defend predatory practices by recruiters, but if a recruiter is able to negotiate a large mark-up for their consultant, that's a skill that they should be rewarded for financially.

To view it another way, if I get a client to pay $130/hr for an open role, and I identify a qualified consultant willing to take that job for $70/hr, that's a combination of A) my skill as a recruiter, and B) the consultant's inability to recognize their own market value or inability to negotiate a higher hourly rate.

I don't think gouging is good for the industry overall, but if the consultant is happy at $70/hr and the client is also happy at $130/hr, what's "wrong" with the recruiter taking that $60/hr?

Everybody is happy, no? At least everybody is happy when there is no transparency as to where that $130 is going.

FYI, I'm playing devil's advocate here. During my career I did very little consulting work and my margins were usually closer to 15-20% of hourly rate, though I once worked for someone who had a 400% mark-up on a consultant for almost 3 years (consultant was paid ~$50/hr and bill rate was over $200).

</comment></comment></comment></comment></comment><comment><USER28> There is this very popular place earlier known as Hacker School and now known as Recurse Center at NYC, so if you can manage to arrange some place to live in NYC I suggest you to go and check out this place. It's community driven and ask for no fee though is very good and worth giving a try. Here is the link to the same [https://www.recurse.com](https://www.recurse.com)

<comment><AUTHOR> Yeah! I need to save a bit more money but I would like to participate in a Recurse Center batch. Would like to make my daily reality more like what time at the Recurse Center sounds like.

</comment></comment><comment><USER29> Do you get enough sleep? I know sleep makes a world of difference to me when it comes to working on less than exciting things.

<comment><USER30> This is really true for me, great point. There have been days where I had less than 6 hours of sleep and it's made me very easily bored and disenchanted with the work that I had previously enjoyed. When I'm very well rested, I could probably enjoy most things for a little while.

</comment></comment><comment><USER31> I always advise to really reflect your current situation and think what changes might be possible. Work is a big part of your life. It depends a bit how willing you are to do more risky stuff, but the great thing is that skilled programmers are in demand. You can always go back to a boring job. Freelancing is an option, but you probaly need to aquire the gigs yourself. Might be an option. But you have total control over what you're working on. You can also work part-time and persue more finanically unrewarding in the remaining time, like teaching. A friend of mine is working 80% and painting the remaining 20%. Are there part-time study options? I would not recommend an online-degree. Have you contemplated working in a startup? It's risky, but there are a lot of different challenges and you can branch out of your technical role.

</comment><comment><USER32> I have chosen to steer my career in a "suboptimal" way: I have changed from field to field (literally having been a software developer, pharmaceutical chemist, machinist...).

I have pals who've stuck to being a lawyer, banker, programmer, etc and they are also happy, but that would not have worked for me. Over the decades they have risen higher in their fields, and almost certainly earn more salary than I, but I am happy, looking backwards, regardless.

So it's possible you don't need a "career" if you can be happy regardless.

I don't know about art school but a humanities education can be more powerful than an engineering education in some domains — both teach you a mode of thinking in addition to a domain specific skill set.

As it happens I always put "programmer" on visa forms and the like as that is how I think of myself.

</comment><comment><USER33> Discover what is meaningful to you. It may take some years.

Once you have ideas about what is meaningful, try to make your work more connected to these things.

If not directly, then indirectly. For example, your work could support your free-time hobbies that you love. Or, of course, the classic of supporting your family and community through a job that you may not love but can tolerate.

Try to cultivate a sense of pragmatism in your life. It is fun to hide in the clouds -- I've done it before as well -- but unfortunately you can't stay up there forever. People (and yourself) will very much enjoy what your pragmatism can accomplish, and it is nice to see that.

I once heard a quote that happiness isn't what people want. It is meaning that we want. This idea rings true to me.

<comment><USER34> I think this gets to the heart of it. Some places to start:

Meaning in Work TED talk by a researcher in the field: [https://youtu.be/RLFVoEF2RI0?t=177](https://youtu.be/RLFVoEF2RI0?t=177)

Happiness vs Meaning: [https://dx.doi.org/10.1080/17439760.2013.830764](https://dx.doi.org/10.1080/17439760.2013.830764)

My favorite survey of the field: [https://dx.doi.org/10.1080/17439760.2015.1137623](https://dx.doi.org/10.1080/17439760.2015.1137623)

</comment></comment><comment><USER35> I highly recommend some bootcamps if a proper degree is too much time or money investment right now. They have a real impact on skills, and how your resume is perceived. Also, as far as career advancement is concerned, if you're bored at work and you can't get them to give you more, or at least more interesting, work then it is time to move to another company. Apply for something higher than your current role; there's a good shot you'll get it. Some companies promote, eventually, but the fastest ladder climbers I've seen promote themselves by going somewhere that needs them as soon as their current job isn't rewarding them, financially, intellectually, emotionally, etc., enough.

</comment><comment><USER36> Learn to live conservatively. In other words, lower your expenses as much as you can. It will allow you to be more flexible because you can work a part- time gig and use the rest of the time to explore.

Some posters are right that you should appreciate that you have a well paying job, or even a job to that.

I would say, though, life is short and you were fortunate enough to be born as a human being! One of the most conscious beings on the planet. Human potential has not been tapped. Explore it because one day, not too far from now, you will be old(if you make it) and wonder why you spent your energy the way you did, in a cubicle inside for half your life.

In my opinion, the risks are worth the reward. You can always go back to the programming.

</comment><comment><USER37> Work or hobby, you can only choose one for each type of activity.

You need to decide if you want to do programming as work, or hobby.

If you decide to do programming as work, go find another hobby that keeps you interested and treat programming solely as revenue source and don't devote too much into it.

Otherwise, you get to enjoy programming a hobby, and you need to find a source of income. This can be from the hobby, but it kills the fun of it.

</comment><comment><USER38> Save up a bit for say 6 months and take a break. Explore your interests and see if any of your exploratory projects can be monetized.

</comment><comment><USER39> I felt the way you did a few years ago. There are a couple ways to navigate around this type of block. First, try to connect with the customers/end-users of your code. Receiving positive or negative feedback is a great way to become more engaged with your work. Knowing that you make someone's life better can imbue your work with more meaning. Second, if you are interested in a profitable side business approach your side projects with monetization in mind. Learning something outside programming but tangentially related has helped me stay interested in my day job. Researching the depth and breath of the space (competitors, CPC for popular keywords, payment processing) can be very stimulating. Two years ago I started [https://www.delayforreddit.com](https://www.delayforreddit.com) and its been a great way for me to explore a side business and work towards fulltime self- employment.

</comment><comment><USER40> Improve one thing. Begin there.

Improve another thing. And repeat.

Fix a broken latch in your home. Improve your code a few lines at a time. It adds up.

</comment><comment><USER41> Maybe you're focusing on the wrong problem. Without knowing what "naturally motivates you," one thing that does motivate most people is helping others and feeling important. Look up from your monitor at the business around you. Your job isn't simply to sling code all day: you're a problem solver. If you can write a little script that removes a small inefficiency in the sales teams' process you'll be their hero. If you start adding some code to ship usage metrics that help your team adopt a feature that improves your users' workflow -- you'll be a champion. Follow this path and you'll come across interesting problems to solve.

</comment><comment><USER42> I thought I liked programming as day job but realized I never was happy doing it. So I transitioned, first to self employment and then to requirement analysis, which gave me plenty of other interesting opportunities. It depends on where you work, but the fact is that much of the programming that pays is boring. Interesting, challenging programming of course happens at the companies that are technology leaders and is a different thing so I am not so much speaking of that.

In any case, my advice, don't take for granted that programming as an occupation is the right thing just because you like it when you can choose exactly what to do.

</comment><comment><USER43> > I really like programming

What about programming do you like?

</comment><comment><USER44> I don't have a college degree and yet I just got a junior developer position at a company. I'm probably not the best to give you this advice or am misunderstanding what you're trying to achieve but as somebody who has changed between professions, I can say it's feasible.

I went from tech support to translation and now to programming. Being self- taught shouldn't stop you from trying to get a job in a field you're interested in. Sure, a degree might be something a lot of employers look for in a person, but if you can prove you can do the job, then go ahead for it.

Best of luck.

</comment><comment><USER45> What helped me is to focus on the end user. Those are the people that you are working for!

Once I realised that I quit my job and started working for a company with real end users...

</comment><comment><USER46> You said you like to explore things and share that knowledge with others.

The things that you can do is becoming a tech blogger. You can explore the latest JS frameworks, Robotics, AI, blockchain, mobile apps and put your exploration in a blog.

You can monetize it by creating an ebook and sell it in your blog.

But writing is hard. So you must be patient. For now stick to your job and do the blogging part-time.

</comment><comment><USER47> "Just keep doing what you're doing, but weirder."

<comment><USER48> I'm replying to this comment in the hopes of getting your attention. Hackernews has no DM system – could you shoot me an email if you have a moment? cbol###ton242#@gmail#.com

</comment></comment><comment><USER49> Watch this video, it might help you: [https://www.ted.com/talks/emilie_wapnick_why_some_of_us_don_...](https://www.ted.com/talks/emilie_wapnick_why_some_of_us_don_t_have_one_true_calling?utm_campaign=tedspread&utm_medium=referral&utm_source=tedcomshare)

</comment><comment><USER50> Wish I had an answer to your question. But, you can try living alone in a jungle & do the necessary things for basic survival, cultivate, hunt, cook, tailor, etc. Those activities can help you get a new interest in regular things & after a period of such stay, mundane things would appear interesting to live for.

</comment><comment><USER51> There is a big push to pursue your passion, which could become a trap.

Mike Rowe has a different angle: "Don't Pursue Your Passion. Chase Opportunity."

[https://m.youtube.com/watch?v=NT1i26RbrhM](https://m.youtube.com/watch?v=NT1i26RbrhM)

Not sure I fully agree, but I appreciate the different perspective

</comment><comment><USER52> I had a guitar teacher who put it like: When you're learning to play a song, eventually you'll hate playing it, but you need to keep practicing to get better and get back to liking the song again.

</comment><comment><USER53> Maybe try to pivot into a less technical role, like a developer advocate where you need to be technologically current, but also have a social teaching-esque component to your role.

</comment><comment> martin-adams What I would do in your situation is start with reading books. If you're not into reading, try Audible.

What you mention feels in line with the book Start with Why by Simon Sinek.

</comment><comment><USER54> What do you work on in terms of passion projects?

</comment><comment><USER55> reflect that on how that is a privelge for a lucky few. practice feeling grateful about it.

or go on a party binge so your job becomes harder to do, more challenging due to tiredness.

</comment><comment><USER56> Exploring and making money can be one and the same thing too.

I was exactly feeling like this before i started budiness then i found friends to take over the boring parts.

</comment><comment><USER57> I recommend you tell your immediate boss that you are bored with work and not motivated. They'll quickly help you out.</comment>


Metaphysics and JavaScript - <AUTHOR> https://docs.google.com/presentation/d/1PUvpXMBEDS45rd0wHu6tF3j_8wmGC6cOLtOw2hzU-mw/preview?slide=id.p <comment><USER3> It might be worth pointing out that this presentation comes with speaker notes (keyboard shortcut: S, or click on the gear icon at the bottom and find the link). They contain much more content (and context) than the slides alone.

<comment><USER4> Definitely worthwhile, thanks. I had viewed this presentation before but didn't know about the Speaker notes.

<comment><USER5> Same here. Thank you for the tip, GP.

</comment></comment></comment><comment><USER6> I'm not sure I understand. Yes, there are some pitfalls to React Hooks (and, honestly, they're really slick but definitely require more cognitive overhead than React.Component) but he doesn't really describe how Svelte solves these problems. In fact, looking at the demo code it looks pretty similar to how I'd built it in React.

My trepidations concerning frameworks like Svelte come from things like this:

       `<input type="radio" bind:group={current} value={filter.fn}>`

What does `bind:group` do? What kind of magic is going on behind the scenes to make this work? At least with React it's always easy to grok what is happening (it's all just JavaScript, after all). Of all the front-end frameworks React has the fewest magical invocations and that's one of the most important things I look for in a framework or library.

<comment><USER7> You're missing his actual walkthrough of Svelte, that he likely did in the demo. I've seen Svelte enough times on HN that I'm vaguely familiar with it.

Svelte, to me, at a very high level, is "Angular 1, but fast" \- which might be easier to develop for, but doesn't provide the same "rails" that React does (and why I prefer it).

At the end of the day, all the hang wringing about hooks and purity is about making it simple to reason about a program locally. I haven't used Svelte so I can't say for sure, but the problem Svelte (and that the Virtual DOM) solves is an issue I don't think I have.

In any case his presentation was interesting enough from a FP/Programming theory POV.

<comment><USER8> For what it's worth: to me Svelte is, for the lack of a better word, "better" React. It's another evolutionary step in the same direction.

I wouldn't compare it to Angular.

Svelte is both easier to use (productivity) and generates faster code.

To me React is 2 things: components (reusable pieces that combine state with rendering logic in JavaScript / HTML / CSS) and reactivity (rebuilding UI from state).

Virtual DOM is an implementation detail that makes rebuilding UI from state fast enough in React.

Svelte also provides components and reactivity but with less typing (for me, the programmer).

While I know some people complain about more magic, my experience is opposite: Svelte maps more intuitively to the final JavaScript / HTML / CSS than React.

And it has CSS that is scoped by default to the component which removes the need for CSS-in-JS solutions.

<comment><USER6> Too bad [https://github.com/sveltejs/svelte/issues/1639](https://github.com/sveltejs/svelte/issues/1639) is still open :)

<comment><USER9> For others who are curious, this is about TypeScript support in Svelte - <USER2> issue created a year ago.

The following comment by the author sounds hopeful, that they've been working in that direction, and eventually it will happen:

[https://github.com/sveltejs/svelte/issues/1639#issuecomment-...](https://github.com/sveltejs/svelte/issues/1639#issuecomment-442974572)

</comment></comment></comment></comment></comment><comment><USER10> This is a very good take. DOM as a function of state has real tradeoffs but also real benefits; state as a function of state just gets out of hand. IMO React Hooks are where React jumped the shark. setState and Redux were already clunky and felt too rooted in unhelpful ideals, but hooks just took the cake.

My company's codebase uses MobX for all state and I highly recommend it. It embraces mutability and imperative code _where they make sense_ : in your actual app state. React is there to do what it's best at: rendering DOM. That's it. Rendering remains functional and real, meaningful state is allowed to be what it is.

<comment><USER11> To add insult to injury it's fairly easy to use hooks wrong - and used wrong they are, which suggests that their learning curve is not as friendly as proponents of this pattern would wish.

<comment><USER12> Could you share some examples of hooks used wrongly in code?

<comment><USER11> useCallback used as something else than a provider of callback functions, e.g. for rendering.

Example:

      const renderItem = useCallback(() => <Item />, []);

And then:

      return renderItem();

What should have been used here is useMemo.

</comment></comment></comment></comment><comment><USER13> I've tried Svelte and while I don't love some of the dev ergonomics it's a damn fine project.

React was a great alternative to Angular back in 2015 but it's not even close to being objectively the best solution in 2019 except for its popularity. Preact or Inferno are so much faster/lightweight and are pretty much drop-in replacements for React.

BTW is there a video of this presentation somewhere?

<comment><USER10> We pretty much only use React for rendering and lifecycle (still rocking class-based components). Does Preact offer material improvements other than bundle size? If so I might look into switching.

<comment><USER13> Preact is considerably faster, but maybe React is good enough in your use case.

I also prefer using mostly class based components and some functional components for lightweight dumb components. I use Inferno for rendering and vanilla + MobX for everything else.

<comment><USER10> We certainly have performance bottlenecks in our rendering, so if a different library is faster we're definitely interested

</comment></comment></comment></comment><comment><AUTHOR> Context here: [https://www.swyx.io/writing/svelte- metaphysics](https://www.swyx.io/writing/svelte-metaphysics)

<comment><USER10> Really sad there's no recording, I feel like it would be twice as entertaining

</comment></comment><comment><USER14> It's exhausting that the author of Svelte has to continually compare his project to React. It's a huge red flag when someone can't substantiate why something is worthwhile without criticizing adjacent projects.

I understand that React is the front-end framework du jour, but React nor any other successful project got where it is by continually criticizing others' work.

</comment><comment><USER15> That's the QtQuick approach.

</comment><comment><USER16> And more Metaphysics & JS: [https://youtu.be/5BuoDqVxvOM](https://youtu.be/5BuoDqVxvOM)</comment>


Image Uploads with AWS S3, Elixir and Phoenix - <AUTHOR> https://medium.com/@jackacarlisle/image-uploads-with-aws-s3-elixir-phoenix-ex-aws-step-1-f6ed1c918f14 <comment><USER2> I like Elixir...but sheesh you have to read 2 more full medium articles before you even see any code. I mean the linked article basically explains how to setup an s3 bucket with appropriate permissions.

</comment><comment><USER3> Couldn't you just use arc (with arc_ecto if you're using ecto)? Arc is basically the Elixir version of Rails' Paperclip, which does all of the heavy lifting for you.

</comment><comment><USER4> The fastest code is that which is never run.

Don't upload files to a server if you're using S3. Upload directly to S3 with client-side code instead.

<comment><USER5> I'm sure it's possible to do this securely, but in general this seems like a sure-fire way to expose your secret keys.

<comment><USER6> The secure way to do it is using pre-signed URLs: [http://docs.aws.amazon.com/AmazonS3/latest/dev/PresignedUrlU...](http://docs.aws.amazon.com/AmazonS3/latest/dev/PresignedUrlUploadObject.html)

</comment></comment></comment><comment><USER7> Thanks for the tutorial. Image upload handling is a tricky task. Beyond storage, we've found that being able to moderate and filter out bad images was a huge pain point. For anybody experiencing the same challenges, I would suggest using [https://sightengine.com](https://sightengine.com) — a realtime image moderation API based on Deep Learning

</comment><comment><USER8> I don't think I really grok :symbols, which is also the main thing that puts me off ruby. What's the point? What are they useful for?

<comment><USER9> giving a name to things without going into the full complex structure of a string.

Think like error code or Enumeration, but with a name that makes sense.

<comment><USER10> Except you have to be careful with symbols in Elixir. They don't get cleaned up until a crash. That means in things like Phoenix you aren't supposed to use symbols as parameter maps in your controllers as a user could easily blow up your memory by making tons o' calls.

EDIT: I would also add that they are the preferred key for Maps when using internal Map structures (ones that you have complete control over and users don't)

<comment><USER11> That's a "problem" with the erlang vm actually, you have a limit number of allowed atoms (I think 2 million). When receiving user input, you should not let users create arbitrary atoms because this would allow a atom exhaustion attack.

In these cases, what we do is assing a "string" map, something like :input["arbitrary_key"]

ETA: default is 1 million atoms actually. It can be increased but it's usually a smell/something to be investigated.

<comment><USER10> Good point that this isn't Elixir specific but any language that runs on the BEAM.

</comment></comment></comment></comment></comment><comment><USER12> Why 3 articles?</comment>


TDD Is a Tool, Not a Religion - <AUTHOR> https://thomasbandt.com/tdd-is-a-tool-not-a-religion

<comment><USER2> In my experienced years of development: \- with TDD

\- implementation first and then tests

\- just implementation without test,

I recently came to the following conclusion:

If you perform TDD, your specification that you try to implement are the business requirements / the goals you like to achieve.

If you don't perform TDD, your specification becomes the algorithm/thing itself you are developing and a (potentially fuzzy) idea in your head.</comment>


Early Adopters Are Useless - <AUTHOR> http://technosailor.com/2008/05/16/early-adopters-are-useless/ <comment><USER2> Early adopters are useless for a company like Amazon which can advertise the Kindle on their front page to several million people each day. If you don't have that kind of existing customer base you need the early adopters to push your products for you.</comment>


Linkedin faces heat from social dining websites - <AUTHOR> http://timesofindia.indiatimes.com/tech/careers/job-trends/LinkedIn-facing-heat-from-social-dining-websites/articleshow/19690700.cms

<comment><USER2> When did lunch become dinner? Is this some kind of reference to the time difference?</comment>