HNHacker News
TopNewBestAskShowJobs

ahilss

417 karma · joined May 12, 2010

https://dj.app https://wavacity.com

amhilss at gmail

submissionscomments
ahilss··on DJ With Apple Music launches to enable subscribers to mix their own sets
I’m the developer of Transitions DJ (https://dj.app/). If anyone can connect me with the team at Apple Music, I would be interested in doing an integration.
ahilss··on Wavacity – a FOSS port of Audacity to the web
Wavacity developer here. I released this a year ago under the name "wavvy" but needed to rename the project because of a trademark conflict.

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

ahilss··on Show HN: Wavvy – web-based audio editor (Audacity port)
On the M1 Mac I actually measured lower CPU usage during audio playback on WASM compared to the native desktop version which uses Rosetta. I'm not sure if the slowness is due to Rosetta or a performance bug on the Mac port.
ahilss··on Show HN: Wavvy – web-based audio editor (Audacity port)
It's probably the most visible project using the wxWidgets framework and in the audio domain which fits well with my experience building the DJ app.
ahilss··on Show HN: Wavvy – web-based audio editor (Audacity port)
It is rendering using the 2D canvas API. There's a device context class (wxDC) for each wxWidgets port that implements primitive drawing ops (DrawLine, DrawText, etc). For the WASM port, I created a glue library in javascript [1] that wxDC calls into for each primitive.

[1] https://github.com/ahilss/wxWidgets-wasm/blob/master/build/w...

ahilss··on Show HN: Wavvy Audio Editor – WebAssembly port of Audacity
I originally developed a WASM port of wxWidgets for https://dj.app/. When it came time to open source wxWidgets-wasm, I decided to port another complex app as a test case, and Audacity seemed like the obvious choice. In the process, I also needed to write a new host API for PortAudio for playback and recording in the browser.

https://github.com/ahilss/wxWidgets-wasm

https://github.com/ahilss/portaudio-wasm

https://github.com/ahilss/wavvy

ahilss··on Signal processing to music audio -- synthesis, effects, and analysis.
For a simple and straightforward FFT implementation, I would recommend taking a look at the Kiss FFT source code. http://sourceforge.net/projects/kissfft/
ahilss··on Google Buying Manhattan Office Building for $1.9 Billion
Regardless of whether the building looks dumpy, the view of Midtown is magnificent: http://picasaweb.google.com/lh/photo/iU0pdqJt5xOtzMhGIbrfbg?...
ahilss··on Startup Ideas Every Nerd Has (That Never Work)
And another: Algorithm to predict football scores.
ahilss··on Genetic algorithm demo: finding optimal vehicle design (in Flash)
I believe they are using a non-standard crossover operator in this implementation. A standard crossover operator will generate some permutation of the genes of the two parents: either you inherit the gene from your mother or your father. This implementation creates a new gene that is a weighted average of the genes of the two parents. This will probably cause rapid convergence of the gene pool, which may or may not be intended. Changing Math.random() to Math.round(Math.random()) in crossVars would change this to the standard crossover operator. I'd be interested to see how this affects performance.
ahilss··on Your competitors Twitter followers = your next contact list
I would target people who are not completely satisfied with the competitor's product. If I see people tweeting competitors asking for feature X, where my product already has X, I will send them a message.
ahilss··on A Google Interviewing Story
I haven’t tried a Bloom filter, but I think for my application, the simple bit array might give better performance. The nice thing about the bit array is it works great on the worst-case. After the user has typed in 3 or 4 characters of their query, the search space has been narrowed enough where the performance isn't an issue. It’s that first or second character when the search space is large that gives problems. Using the bit array in the single character case, the 1 to 1 mapping of characters to bits gives the result directly.
ahilss··on A Google Interviewing Story
I recently used this algorithm for speeding up an iTunes style search function. Originally I did a strstr over every item in the database, but it wasn't quite fast enough. I precomputed a 32-bit mask - 1 bit per alphabetic char, 5 bits per digits, and the last bit for special characters - for every database item, and used that as an initial search filter. I only needed to use the more costly strstr on items that made it through this filter.