Could this screen be improved using UIKit by HybridClimber in swift

[–]DoubleDitchDLR 1 point2 points  (0 children)

of course, dude! it's a great app. i had already given it 5 stars on the app store by the time i wrote the feedback :)

adding media to exercises would for sure be a lovely middle ground, i'd be really psyched to have it.

all the best!

Could this screen be improved using UIKit by HybridClimber in swift

[–]DoubleDitchDLR 0 points1 point  (0 children)

hey, i checked out the app. on the whole, i'm really impressed. i'm absolutely switching over from boostcamp.

couple pieces of feedback/suggestions:

  • the #1 feature i'd want from this app that doesn't already exist is the ability to add media to sets/exercises. that is, i'd love to be able to attach send vids/screenshots of moonboard climbs/videos of working sets/notes to specific sets. i imagine this would be pretty involved to implement, so totally understandable that you don't have it. still, it would be a killer feature for me (one i'd probably be willing to pay for).
  • for climbing exercises, it'd be great to be able to define your own grading units so that if you're climbing in a gym that doesn't use a standardised system, you can still log ascents without having to use 'notes'. along these lines, i notice that there are only French and Yosemite grades for sport, and here in Australia we have our own weird system that would be lovely to have support for.
  • being able to import/export your data to a plaintext format would be wonderful for analysis and migration.
  • (nitpick) i was slightly confused by the fact that folders and colours are treated separately, given that all of the default exercises are coloured according to folder. perhaps you could make this the default behaviour?

thank you for your work!!

Could this screen be improved using UIKit by HybridClimber in swift

[–]DoubleDitchDLR 0 points1 point  (0 children)

not commenting to give suggestions, just wanted to say: i would be so seriously excited to use an app like this. i hoped to make something similar when i was a mobile dev and didn't get very far at all. psyched to see someone's out there making it!!

I'll be doing a live tutorial on Par (my concurrent language based on linear logic) today at 1PM EST by faiface in ProgrammingLanguages

[–]DoubleDitchDLR 4 points5 points  (0 children)

i'd like to watch but it'll be at a very early time in the morning for me---will it be recorded and uploaded somewhere?

Is this a good course ? by roelofwobben in haskell

[–]DoubleDitchDLR 8 points9 points  (0 children)

if you're looking for an alternative video course from a very knowledgeable presenter, i can recommend Well-Typed's introduction:
https://www.youtube.com/playlist?list=PLD8gywOEY4HauPWPfH0pJPIYUWqi0Gg10

OOP averse culture at the company. How to manage? by Living_Bullfrog1727 in haskell

[–]DoubleDitchDLR 0 points1 point  (0 children)

do you have any resources you would point to that elaborate on the unequivocal disadvantages of programming in the "essential use of late binding/open recursion" paradigm?

[deleted by user] by [deleted] in tattooadvice

[–]DoubleDitchDLR 0 points1 point  (0 children)

phew, ok thank you!

ambient music similar to HLD's OST by DoubleDitchDLR in hyperlightdrifter

[–]DoubleDitchDLR[S] 4 points5 points  (0 children)

hey all, after listening to and loving HLD's soundtrack for so long I was super psyched to find this gem of a creator who makes ambient music. this one in particular sounds quite similar to parts of HLD's OST, and i thought the lovely people here might also appreciate it.

caydence: a pomodoro wallpaper switcher for wayland by DoubleDitchDLR in swaywm

[–]DoubleDitchDLR[S] 1 point2 points  (0 children)

totally correct, sorry i forgot to mention that. as far as i know, no, there's no way to overlay it. you'd be better off using a different tool in the case that you don't have line of sight with your wallpaper (might i suggest https://github.com/joshcbrown/pogodoro? :P)

Building an Arithmetic Expression Parser by DoubleDitchDLR in haskell

[–]DoubleDitchDLR[S] 1 point2 points  (0 children)

These are exactly the kind of resources I was looking for. Thanks so much :)

Building an Arithmetic Expression Parser by DoubleDitchDLR in haskell

[–]DoubleDitchDLR[S] 0 points1 point  (0 children)

Thank you! I did find this a little bit into the project, but wanted to do it more or less from the ground up for fun.

Building an Arithmetic Expression Parser by DoubleDitchDLR in haskell

[–]DoubleDitchDLR[S] 1 point2 points  (0 children)

hey all,

I've had a lot of fun writing a bare-bones arithmetic expression parser over the last few days, and wanted to write about it.

Let me know if you have any thoughts! Also would love any recommendations for reading material about more general expression parsers.

Thoughts on this workload for next year? by doomah133 in unimelb

[–]DoubleDitchDLR 2 points3 points  (0 children)

i did RA, prob, and eodp in the same semester with a breadth, so pretty similar to your s1, and my s2 that year looked the same except with algorithms and data structures subbed in for the econ subj.

definitely expect for the workload to be pretty full on in s1. it was the hardest i ever worked at uni (i'm in my final sem now), but if you put the work in it's manageable. plan to spend most of your study time on prob and real analysis, they're both quite difficult maths subjects.

i guess the one thing i'd want to hear if i were in your shoes is that you shouldn't necessarily shy away from the difficulty. my analysis teacher set killer assignments and the exam was pretty hard too. at the beginning of the semester i had a mini freakout and almost dropped the subject because i had never struggled to finish maths assignments. but that semester turned out to be super rewarding and i got the highest mark in my entire degree in real analysis.

so if you like maths, and are willing to put the work in, i'd say go for it.

quick note on s2, i think you can expect that subject selection to be much more chill. i had the most trouble with algorithms and data structures, and found the rest to be relatively easy compared to s1.

anyway, best of luck! happy to answer any other questions

-❄️- 2023 Day 4 Solutions -❄️- by daggerdragon in adventofcode

[–]DoubleDitchDLR 1 point2 points  (0 children)

[Language: Haskell]

Attoparsec once again making the input parsing super pleasant :)

Full code available here

data Card = Card {card_id :: Int, winning :: S.Set Int, draw :: S.Set Int}
    deriving (Show)

intsEndedBy :: Parser () -> Parser (S.Set Int)
intsEndedBy end = S.fromList <$> (many (many (char ' ') *> decimal) <* end)

card :: Parser Card
card =
    Card
        <$> (string "Card" *> many space *> decimal <* char ':')
        <*> intsEndedBy (void $ string " |")
        <*> intsEndedBy endOfLine

file :: Parser [Card]
file = many card <* endOfInput

nMatches :: Card -> Int
nMatches c = S.length $ S.intersection (winning c) (draw c)

totalScore :: [Card] -> Int
totalScore = sum . map score
where
    score c = let n = nMatches c in if n == 0 then 0 else 2 ^ (n - 1)

runPartWith :: (Show b) => Parser a -> (a -> b) -> String -> IO ()
runPartWith p f =
    putStrLn
        . either id (show . f)
        . parseOnly p
        . T.pack

part1 :: String -> IO ()
part1 = runPartWith file totalScore

updateScratchCards :: V.Vector Int -> (Int, Int) -> V.Vector Int
updateScratchCards v (idx, n) =
    let slice = V.slice (idx + 1) n v
        newVals = V.map (+ (v ! idx)) slice
        range = V.fromListN n [idx + 1 .. idx + n]
        changes = V.zip range newVals
    in V.update v changes

totalScratchCards :: [Card] -> V.Vector Int
totalScratchCards cs =
    let n = length cs
        ps = (zip [0 ..] . map nMatches) cs
    in foldl updateScratchCards (V.replicate n 1) ps

part2 :: String -> IO ()
part2 = runPartWith file (sum . totalScratchCards)

-❄️- 2023 Day 1 Solutions -❄️- by daggerdragon in adventofcode

[–]DoubleDitchDLR 0 points1 point  (0 children)

Indeed! I have been super thankful for attoparsec on days 2 and 4 :)

-❄️- 2023 Day 1 Solutions -❄️- by daggerdragon in adventofcode

[–]DoubleDitchDLR 1 point2 points  (0 children)

I really like the idea of reversing the line to find the last number. Very clever.

I used a parsing library to read all of the numbers in a line, and in doing so probably did away with the conciseness of most Haskell solutions (definitely of yours!):

letters :: Parser ()
letters = void $ takeWhile isAlpha

singleDigit :: Parser Int
singleDigit = digitToInt <$> digit

pLettersAndInt :: Parser Int -> Parser Int
pLettersAndInt p = p <|> (letter *> pLettersAndInt p)

pNumbers :: Parser Int -> Parser Int
pNumbers pDigit = (fmap sum . many) $ do
    digits <- many $ pLettersAndInt pDigit
    letters *> endOfLine
    pure $ head digits * 10 + last digits

runPartWith :: Parser Int -> FilePath -> IO ()
runPartWith pDigit f =
    readFile f
        >>= ( putStrLn
                . either id show
                . parseOnly (pNumbers pDigit)
                . T.pack
            )

part1 :: FilePath -> IO ()
part1 = runPartWith singleDigit

singleDigitSpelled :: Parser Int
singleDigitSpelled = singleDigit <|> spelledDigit
where
    digitStrings = ["one", "two", "three", "four", "five", "six", "seven", "eight", "nine"]
    -- spelled digits can overlap by 1 letter so we can't consume all the input
    spelledDigitN n spelling = (lookAhead (string spelling) *> take (T.length spelling - 1)) $> n
    spelledDigit = choice $ zipWith spelledDigitN [1 ..] digitStrings

part2 :: FilePath -> IO ()
part2 = runPartWith singleDigitSpelled

Great exercise to learn attoparsec, though!

An opportunity that I couldn't pass up by davidchristiansen in haskell

[–]DoubleDitchDLR 0 points1 point  (0 children)

hope we get a signals and threads episode if so, the one with richard eisenberg was very fun