HNHacker News
TopNewBestAskShowJobs

penpapersw

569 karma · joined January 28, 2017

Software developer for hire

Wrote cleancoders.com

Portfolio: https://sdegutis.com/

LinkedIn: https://www.linkedin.com/in/steven-degutis/

GitHub: https://github.com/sdegutis

Email: sbdegutis (gmail)

submissionscomments
penpapersw··on How I created a $980-per-post social network in just 2 days for $10
Very good point.
penpapersw··on Way Cooler tiling window manager
Also Win+Arrows moves windows to sides/corners. It can do up to a 2x2 grid. Not full featured but better than nothing.
penpapersw··on Average App Store Review Times
The review times have gotten better and overall the process of going from "New Project..." to "Ready for Sale" is much smoother than it was 10 years ago when I made my first iPhone OS app.

But the market is pretty hard to get into. You can add real value with a well-executed unique idea (like we did with Bubble Maker, look it up) but unless you're a big name or an established player, there just seems to be no chance of getting your foot in the door.

penpapersw··on D Language accepted for inclusion in GCC
I assume the idea is to be able to reuse libraries like Box2d etc where it's mostly concrete code, and that other libraries where it's mostly templates kind of just have to be rewritten.
penpapersw··on The Decline of Imgur on Reddit and the Rise of Reddit's Native Image Hosting
Imgur has developed a very active community and they have a MINIMUM of $20,000 per "promoted post" (ad). Considering how often I see new ads on there (at least once a month), I'd say they've finally figured out how to actually monetize an img hosting site. Whether they can avoid throwing away all that money on inefficiency and poor management is another story though. If anyone here knows how to scale an imgur clone properly, and can do it as a one or two person team, you'd probably have an amazing startup right there.
penpapersw··on Show HN: Fast C-based HTML 5 parsing for Python
Yep. Similar to how we used to write the high performance code in ASM and the business logic in C. Now we write the high performance code in C (or equiv. low-level language) and the high performance code in a slow but expressive dynamic language. My favorite is writing high-level code in some kind of Lisp (previously Clojure, lately Racket) because REPL-driven development makes it incredibly fast to iterate and experiment and then cement/polish it into production code all while having the same state in memory.
penpapersw··on Cell – A self-driving web app framework
In my experience, this kind of minimalism is great on paper, but in practice if you throw out at least some of that complexity, you also have to rewrite so many things yourself. Sometimes that's a good thing but some features are too complex to get right every time and it's worth reusing a good quality version of them, which unfortunately sometimes requires using a bunch of questionably designed build/dev tools.
penpapersw··on Things that Idris improves things over Haskell
Idris style/semantics question: why does the last line of the first example in the article use parentheses[1] instead of another dollar sign[2]?

[1]

    caesar_cipher : Int -> String -> String
    caesar_cipher shift input =
      let cipher = chr . (+ shift) . ord
      in pack $ map cipher (unpack input)
[2]

    caesar_cipher : Int -> String -> String
    caesar_cipher shift input =
      let cipher = chr . (+ shift) . ord
      in pack $ map cipher $ unpack input
To me the second one seems more readable. Are there semantic differences? Performance differences?
penpapersw··on The relationship between mindset and getting old
> "I can't image a better time to EVER have lived."

I dunno. The other day, my wife and our 5 children and I were all having a relaxing evening together as a family in the living room, and something my 4 year old daughter said accidentally set off Siri who said "sorry I didn't catch that" and my daughter said "never mind" and we all had a good laugh. Then my daughter said "I love you, Siri." My heart sank. I'm probably not giving enough context to explain it, but she seemed to genuinely think Siri was a real (and neglected) person in the family.

penpapersw··on Designing a macOS window manager in Racket
Would love feedback on this plan from anyone familiar with Racket!
penpapersw··on Wal-Mart will pay employees to deliver packages on their way home
For one thing, sometimes you can't get it when you need it. In our area, there's an 8 year waiting list on housing assistance.
penpapersw··on Wal-Mart will pay employees to deliver packages on their way home
Most of our local friends work at Walmart, because there's honestly not much other choice for them.

Our economy is so broken that the only people who win are people who know how to abuse the system, and who have designed the system to be easier to abuse and harder to survive by honest hard work.

I read once that Walmart uses their resources to take advantage of current (broken) laws to allow them to keep paying pennies for hard work, and forcing the government to pay the rest of a living wage. (Most of our friends are also receiving at least one or two forms of public aid.) I wouldn't be surprised if they also use their resources to "influence" laws to ensure that it stays this way.

penpapersw··on Notes on debugging Clojure code
But at what cost!? Every time I write Haskell code it reads like a mathematical proof that's beyond my ability to comprehend! Whereas my Ruby, Python, and Clojure programs read like a poem I might have written in third grade.
penpapersw··on Ask HN: Ex-Founder. Should I take lowball buyout offer?
My advice was to have perspective that things could be worse. To have that perspective is never bad advice. ;)
penpapersw··on Ask HN: Ex-Founder. Should I take lowball buyout offer?
[EDIT] I suggest looking at your situation from this perspective: $100,000 is a lot of money and can last you and your family over a year in certain places.
penpapersw··on Readable Clojure
I've been bitten before trying to use (if (some? (thing))) instead of just (if (thing)) for the sake of readability, because as (defn thing ...) evolved, it ended up returning a function call that sometimes returned false instead of just nil, so the conditions were sometimes inverting in subtle ways and it was really hard to track down why.
penpapersw··on Faster Command Line Tools in D
Honest question: what strengths does Go have over D? I became very proficient at Go several years ago, and was reading about D for hours and hours last night, and it looks like D is overall a much better language.
penpapersw··on Writing a Lisp: Continuations
That kind of feels like cheating though. I mean, the complicated part of a continuation is that it restores the same context and state that the app had right before the plunge. But Haskell inherently doesn't have "floating" state, it's all self-contained within each parameter. So in Haskell it's more or less a fancy goto-statement.
penpapersw··on Writing a Lisp: Continuations
Ruby has `#callcc` which produces first-class continuations AFAIK https://ruby-doc.org/core-2.2.0/Continuation.html
penpapersw··on Writing a Lisp: Explicit Stack and Stacktraces
Back when I wanted to write a Lisp interpreter, I thought Haskell would be one of the best languages for it because of its type system. But looking at this code, although I'm sure it's probably very good, it just doesn't strike me as very intuitive or readable. Is this something you get used to over time, like reading Lisp code? Or is it just inherently harder for non-mathematically-minded people to read?
penpapersw··on Emacs is sexy
Meh, I've customized emacs enough to make it really attractive. Well at least within a matrix style aesthetic. It's not that hard especially on Mac.
penpapersw··on Redesigning Apple Music after Being Rejected
I've found it pretty hard to just say "I like this song, show me more like it" and then to be able to listen to each one, and conveniently add ones I like to one of a small set of playlists.

Instead, I have to right-click a song and choose "play a radio-station-thingy based on this song" (which usually is a stretch anyway and most of them are nothing like what I'm looking for), and for the few songs I do want to keep, I have to right-click them, find the "add to playlist menu", find the submenu item for the right playlist and click that, and try to re-find my place again in the song queue to start this all over again with the next song.

Maybe it's because I'm used to 90s software still and so I just don't know where the right buttons are, and I'm just clicking the wrong things, who knows.

penpapersw··on Get started making music
I don't remember where I read it, but one of the big reasons was that Imperial units are much easier to divide in ways that make a lot of sense in practical usage, whereas Metric is designed to make conversions easier for doing science, which puts practical usage on a lower priority. But take this with a grain of salt.
penpapersw··on Get started making music
That's something I've done time and time again, and seen others do too. It's easy to look at something and think you understand it well enough to know how it can be improved. But when you find out the rationale and reasons it is the way it is, it's kind of humbling. Like how it surprised me to learn that there's a lot of valid, practical reasons to use the Imperial measurement system over Metric.
penpapersw··on Redesigning Apple Music after Being Rejected
Personally I'm both a nomad and a hoarder. About once a year I'll go on a week long spree finding new music and creating new playlists. The rest of the year I just listen to all those playlists plus my old ones. Neither Apple Music nor Spotify have a workflow specifically designed for this. Am I that unusual?
penpapersw··on The tragedy of 100% code coverage (2016)
I'd say they are "succeeding" in the sense that they continue to make money. Whether they're truly successful in the sense of providing proper value to their customers to justify that money, and treating their programmers right, is another story, and I've seen enough cases where they don't do either of these, while the executives make plenty of money to live comfortably for years by exploiting both customers and their own programmers.
penpapersw··on The tragedy of 100% code coverage (2016)
Sometimes the right test is just occasional manual testing. And sometimes it's even just the fact that no users have complained about something obvious not being completely wrong.
penpapersw··on The tragedy of 100% code coverage (2016)
I think a bigger epidemic is we're putting too much emphasis on "do this" and "do that" and "if you don't do this then you're a terrible programmer". While that sometimes may be true, much more importantly is to have competent, properly trained professionals, who can reason and think critically about what they're doing, and who have a few years of experience doing this under their belt. Just like other skilled trades, there's a certain kind of knowledge that you can't just explain or distill into a set of rules, you have to just know it. And I see that in the first example in this article, where the junior programmer is writing terrible tests because he just doesn't know why they're bad tests (yet).
penpapersw··on T3X – a minimal procedural language
Very cool! I love minimalistic languages.

How is this able to omit basic type information? Is everything just an int?

> "It is a statement rather than a production tool."

What's the statement supposed to be?

penpapersw··on My son died in 1994 but his heart only stopped beating this year
I've felt the same way all too often in the past. In my experience, gratitude is the best cure. Being grateful for hot showers, for tasty food, for a good night's sleep, for anything good or enjoyable really, these have really helped me to change my perspective so that I do enjoy life, I recommend trying it to anyone feeling that way.
← PreviousPage 3 of 4Next →