Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Post
  • Reply
ShaunO
Jan 29, 2006

I hope this is the right place for this kind of question, if it isn't please point me in the right direction, hopefully this all makes sense.. tldr: IT department fell apart in small/medium business with large key clients with a heavy reliance on software.. last man standing needs a kick in the right direction about long term planning of a medium sized software project(s).

I've been working at this company for 4 years now, developing with Microsoft technologies for data collection (web), data reporting (web) and operational management apps (winforms), all in C#/.Net.
About 1.5 years ago, the lead developer resigned after 10 years and a new guy was hired in. Well... we took on a major new client and he decided that the entire current codebase, frontend and persistence (MSSQL) data structures needed to be completely rewritten to support a few extra basic features, instead of refactoring (or even getting up to speed) with the current codebase.
So now we have 2 of all of the above apps.. with only a single (very important client) on the newer version.

Some more interesting things happened over his time here, our maintenance developer, sysadmin and application support/ad-hoc data dude all resigned under our new boss all within a few months of each other. Leaving just me and my boss. Thing is the boss just spent all his time on this new system leaving me to maintain/support/develop ongoing functionality in the current/old system. About 1 month into the new system actually being used (with about 0.001% of the functionality of the old and about 10% of the functioanlity actually meant to be delivered at all), he resigned and ran for the hills leaving a monstrous mess for this poor company and myself to clean up.

So here I am, I know all the databases reasonably inside-out, most of the codebase, I know the business intimately and functioanlity that should be required.
One problem is I have no staff, I can hire one which I'm writing up a job ad for now but I don't have any project plan or really know where to begin to start formalising these things.
I'm reasonably good at prioritising work as per the business' needs but I'm still currently cleaning up a lot of mess and implementing functionality that should've been done over a year ago.

I guess what I'm looking for is some guidance/links/books/documents/tools/anything about how to manage projects and development teams. I have a loose agile-style of development with regular releases planned around 2~weeks but some of the required functionality is so large I have to do a lot of dividing and conquering so I regularly miss these. My weaknesses are planning features/functionality into units of work, planning the roadmap of the applications, defining the functionality more formally, things like that. I don't know what I don't know unfortunately so I'm hugely naive in terms of what my actual weaknesses probably are, so a jumping off point would be nice. I know roughly how I want to approach the software situation but I need a way to put that onto paper so that it can be followed, management can rest easy knowing what's coming and my (eventual) team have a grasp on what we're trying to achieve.

So, any tips for someone thrown right in the deep end? I'm capable, I just took on a huge amount at once and just need to fill in some holes in my knowledge and skillset. Thanks for reading this far.

ShaunO fucked around with this message at 08:09 on Jun 22, 2012

Adbot
ADBOT LOVES YOU

rolleyes
Nov 16, 2006

Sometimes you have to roll the hard... two?
Honestly I can't really help you that much, other than to say that your problem is probably worthy of a thread all to itself and you might get more answers that way. I hope you get it sorted because that sounds like an utter nightmare.

stubblyhead
Sep 13, 2007

That is treason, Johnny!

Fun Shoe

the talent deficit posted:

At a raw http level, you can shove whatever you want in the Allow header. I could claim my endpoint implements the 'PARTY' method. At a framework level you'd hope these would have some sort of constraint placed on them that verifies the Allow header in a 405 return isn't a filthy liar, but most frameworks are crap. In short, it's probably the API devs, not you.

I was pretty sure it worked something like that, thanks for the confirmation. It's not too surprising that things are inconsistent, as this product is pretty poo poo all around.

shrughes
Oct 11, 2008

(call/cc call/cc)

ShaunO posted:

So, any tips for someone thrown right in the deep end? I'm capable, I just took on a huge amount at once and just need to fill in some holes in my knowledge and skillset. Thanks for reading this far.

The company now has a large amount of money sitting around that used to go towards paying people, and the information in your head is extremely valuable to them. Ask for a large raise and leave if you don't get it.

Johnny Cache Hit
Oct 17, 2011

Hi, welcome to a failed company.

First things first, accept that fact but don't worry too much. Most of us have probably been there before. Mine was a startup that ran out of money. You'll be OK because you're a programmer and everyone wants to hire programmers.

Now, a question - you said management is letting you hire "one" -- does that mean "a staff", or "one programmer"? Because if it's the latter, you need to start updating your resume right now.

In your situation, I'd focus on getting some good developers in, and give them very small, very fast things to do. My last boss gave me some sage advice - it'll be at least 3 months before the average programmer starts producing meaningful code. And you've got two large, possibly hosed up codebases to work with, so the learning curve is plenty steep.

Be honest with yourself & with management - you have to try & keep the customers from leaving until you can get a team up up to speed, and you don't have the resources to do much beyond emergency fixes & tiny changes. Put any new features on hold. Customers get pissed if you say you can't give them a new feature, but they are infuriated when the system just doesn't work period.

And seriously, update your resume, because this ship is sinking fast. But until it goes under you are the new CIO and you should be paid as such.

Blotto Skorzany
Nov 7, 2008

He's a PSoC, loose and runnin'
came the whisper from each lip
And he's here to do some business with
the bad ADC on his chip
bad ADC on his chiiiiip

Kim Jong III posted:

In your situation, I'd focus on getting some good developers in, and give them small, fast things to do.

This is eminently reasonable, it's good to start people off with a sense of momentum and ease them in to how the code base is organized etc.

Kim Jong III posted:

My last boss gave me some sage advice - it'll be at least 3 months before the average programmer starts producing meaningful code.

I don't think this is the sort of number that can be sensibly applied to code bases of arbitrary size and complexity, eg. someone with a bunch of experience in the field might be able to make useful contributions to a medium-sized, well-organized codebase from day one, whereas someone diving into gcc might take 6-9 months to be able to do anything.

Johnny Cache Hit
Oct 17, 2011

Otto Skorzeny posted:

I don't think this is the sort of number that can be sensibly applied to code bases of arbitrary size and complexity, eg. someone with a bunch of experience in the field might be able to make useful contributions to a medium-sized, well-organized codebase from day one, whereas someone diving into gcc might take 6-9 months to be able to do anything.

I didn't rightly convey the tone in his warning, I don't think. Internet, poor medium, yadda yadda. My bad :(

He didn't literally mean "3 months, rain or shine". What he was getting at is that there's a ramp up period between when you hire a programmer and when they are able to contribute at a high level, and it's almost always going to be longer than you expect.

And in the case of a company literally everyone else has fled, my gut says the ramp up period is going to be way longer than expected.

Blotto Skorzany
Nov 7, 2008

He's a PSoC, loose and runnin'
came the whisper from each lip
And he's here to do some business with
the bad ADC on his chip
bad ADC on his chiiiiip

Kim Jong III posted:

I didn't rightly convey the tone in his warning, I don't think. Internet, poor medium, yadda yadda. My bad :(

He didn't literally mean "3 months, rain or shine". What he was getting at is that there's a ramp up period between when you hire a programmer and when they are able to contribute at a high level, and it's almost always going to be longer than you expect.

And in the case of a company literally everyone else has fled, my gut says the ramp up period is going to be way longer than expected.

I was being moderately pedantic and curmudgeonly :3:

Johnny Cache Hit
Oct 17, 2011

Otto Skorzeny posted:

I was being moderately pedantic and curmudgeonly :3:

:respek: Someone's gotta do it.

ShaunO
Jan 29, 2006

shrughes posted:

The company now has a large amount of money sitting around that used to go towards paying people, and the information in your head is extremely valuable to them. Ask for a large raise and leave if you don't get it.

They already gave me a chunky raise after my boss quit and they didn't want me to bail.

Kim Jong III posted:

Hi, welcome to a failed company.

First things first, accept that fact but don't worry too much. Most of us have probably been there before. Mine was a startup that ran out of money. You'll be OK because you're a programmer and everyone wants to hire programmers.

Now, a question - you said management is letting you hire "one" -- does that mean "a staff", or "one programmer"? Because if it's the latter, you need to start updating your resume right now.

In your situation, I'd focus on getting some good developers in, and give them very small, very fast things to do. My last boss gave me some sage advice - it'll be at least 3 months before the average programmer starts producing meaningful code. And you've got two large, possibly hosed up codebases to work with, so the learning curve is plenty steep.

Be honest with yourself & with management - you have to try & keep the customers from leaving until you can get a team up up to speed, and you don't have the resources to do much beyond emergency fixes & tiny changes. Put any new features on hold. Customers get pissed if you say you can't give them a new feature, but they are infuriated when the system just doesn't work period.

And seriously, update your resume, because this ship is sinking fast. But until it goes under you are the new CIO and you should be paid as such.

The company is definitely not a sinking ship, this is not an IT/software company but the reliance on the software has gotten larger and larger over the years (ie. moving from paper to electronic). The current systems are reasonably stable and serving the business pretty well and will for a long time to come. As shrughes said, there is some money from all the people that left and it's up to me to decide what kind of staff member I hire and if I was really confident, I could probably get two.

The customers aren't going anywhere, we have a stable product and new features aren't often requested besides small incremental things throughout the year. The customer is mainly internal but I've managed to stave off any of the crazy salespeople from selling non-existent functionality. So I'm in a reasonably good position I just have way too big of a workload for myself so firstly need to spread the work at least a little bit so I even have time to think about the next 6 months.

Seems sensible giving small fast tasks to do to get them more and more involved in the codebase.

Hughlander
May 11, 2005

What's the latest and greatest for Javascript IDEs? I don't do JavaScript often so I mostly just ssh to a toy VPS I own and use vi and hit a page with a browser. But now I got a project I'd like to work on that's full of javascript buzzwords, AJAX, Bookmarklet, page injection etc... and I'd probably kill myself if I had to continue to do vi.

actionjackson
Jan 12, 2003

I would like to run my SAS programs on Windows but using Unix commands out of the terminal since they are so much more convenient. For example instead of

>"c:\program files\SAS\SASFoundation\9.2\sas.exe" -sysin program.sas

I'd like to just do

>sas program.sas

Is there an emulator I can use with win7 to do this? Cygwin?

Impotence
Nov 8, 2010
Lipstick Apathy

actionjackson posted:

I would like to run my SAS programs on Windows but using Unix commands out of the terminal since they are so much more convenient. For example instead of

>"c:\program files\SAS\SASFoundation\9.2\sas.exe" -sysin program.sas

I'd like to just do

>sas program.sas

Is there an emulator I can use with win7 to do this? Cygwin?

You can use cygwin and toss a bash script, put /path/to/your/sas script in your PATH=, and then make it launch that using the argument

There is probably a better way though (maybe powershell, idk)

OnceIWasAnOstrich
Jul 22, 2006

actionjackson posted:

I would like to run my SAS programs on Windows but using Unix commands out of the terminal since they are so much more convenient. For example instead of

>"c:\program files\SAS\SASFoundation\9.2\sas.exe" -sysin program.sas

I'd like to just do

>sas program.sas

Is there an emulator I can use with win7 to do this? Cygwin?

The -sysin is a product of the executable itself so it isn't going to go away unless you write a script wrapper, which you could easily do with a batch file (Or Powershell script file). Unix will get away with just running 'sas' without a path because it is in the PATH. You can do that on Windows too, just add the 'sas.bat' folder or the sas directory (if you don't mind the -sysin) to your path.

actionjackson
Jan 12, 2003

I'm not really a programmer, just a statistician - so whatever program I'm doing would just have it's own batch file with that command in it?

ToxicFrog
Apr 26, 2008


actionjackson posted:

I'm not really a programmer, just a statistician - so whatever program I'm doing would just have it's own batch file with that command in it?

Well, there's really two things you're asking here -
- how do I run SAS by typing "sas" rather than needing the whole "C:\Program Files\..." malarkey
- how do I automatically add the "-sysin" to the command
And these have different answers.

For the former, when you enter a command, windows searches every directory listed in the environment variable %PATH% for a file of that name. This is, for example, why you can just type in "notepad" and have it work - one of the directories in %PATH% contains notepad.exe. (There are some minor differences, but Linux and OSX also have a $PATH variable with similar behaviour.)

So, you can get the first half just by adding "C:\Program Files\SAS\SASFoundation\9.2\" to your %PATH% (using the "Environment Variables" control panel thinger, if I remember correctly). Then, when you type in "sas -sysin program.sas", that's one of the directories it'll look in, and it'll find sas.exe there.

For the latter, you'd need to create a wrapper script (let's say, sas.bat) that adds that for you, for example, a .bat file containing the following:
code:
"C:\Program Files\SAS\SASFoundation\9.2\sas.exe" -sysin %1%
Run it as 'sas.bat program.sas' and the %1% will get replaced with the file you named (program.sas). Or, if the "program.sas" bit is hard-coded as well, just use that instead of "%1%" and run it as 'sas.bat' with no arguments!

Combine these and you can have this batch file somewhere in your %PATH%, so when you run 'sas', it finds the batch file in %PATH%, and executes that, which then executes the real program with the correct arguments.


Note that you can also do all of this with Cygwin, but this is also something you'd still have to worry about with Cygwin - you'd just change $PATH by editing .bashrc rather than through the control panel, and you'd create a Bash shell script rather than a batch file.

actionjackson
Jan 12, 2003

Thanks, that's very helpful. I'll call them Monday and see if they know how to add it to the context menu, otherwise I'll try your suggestion. Does it recognize "sas" because it's called sas.exe?

Here's how to do the environment variables thing

http://geekswithblogs.net/renso/archive/2009/10/21/how-to-set-the-windows-path-in-windows-7.aspx

actionjackson fucked around with this message at 16:28 on Jun 23, 2012

ToxicFrog
Apr 26, 2008


actionjackson posted:

Thanks, that's very helpful. I'll call them Monday and see if they know how to add it to the context menu, otherwise I'll try your suggestion. Does it recognize "sas" because it's called sas.exe?

Yes, in fact! There is actually a separate environment variable, %PATHEXT%, which is a list of extensions it should look for when when you enter a command. So, if you enter 'sas', not only does it seach every directory in %PATH% for 'sas', it also looks for sas.com, sas.exe, sas.bat, sas.cmd, sas.vbs, and many others. I believe Cygwin also respects this.

This is not the case on Linux/OSX, where the command you enter is the exact name of the file you search for - the system determines the file type (binary executable, shell script, python script, etc) by reading its contents rather than by checking the extension.

a cat
Aug 8, 2003

meow.
I'm having some trouble wrapping my head around how to represent images and thumbnails in a database. Note: I'm not actually storing images in the database, just metadata.

I have a DB entity we'll call a Thing, and another entity Image. Each Thing will have multiple Images associated with it, ie in a 1:many relationship.

Each Image will need to be available in multiple sizes. Thumbnails, medium, full eize, etc. The sizes available shouldn't really change that much but I'd still like some flexibility.

Is it acceptable to not model the various image sizes for a given image in the database? Like, to just basically have the image filename as an attribute for Image, and then organize the image sizes in the file system with a different directory for each image size, with the directories set via config variables? And then I could maybe just have a function that gives me the appropriate image path for a given image and filename. This would also mean I don't have to store the actual full image path with the image metadata, just the filename. Is there any reason that I'm missing that this is a bad idea?

Would it be better to relate Images to another table Image_Sizes in a many:many relationship so that I could be able to tell if an image size exists without having to do file stuff? Would this be necessarily or strictly better only if some images will not be available in all sizes, or is it a good idea in general to add flexibility to the app in the future?

Lastly, let's say there's another entity User which will also have a couple images associated with it. Should these images be stored in the same exact manner and in the same table as the Thing Images? Or should there be separate image tables for each? Should all images for all entities be stored in one table?

Sorry for the mass of kind of vague questions. I know there's like a million ways I could hack this together but I'm trying to get a sense of what the best practices are for this.

Edit: Woops I meant to post this in the SQL megathread, not sure how I botched that one. I guess it's semi-general enough to not be wholly out of place here. Sorry!

a cat fucked around with this message at 17:50 on Jun 23, 2012

karms
Jan 22, 2006

by Nyc_Tattoo
Yam Slacker

jjttjj posted:

Is it acceptable to not model the various image sizes for a given image in the database? Like, to just basically have the image filename as an attribute for Image, and then organize the image sizes in the file system with a different directory for each image size, with the directories set via config variables? And then I could maybe just have a function that gives me the appropriate image path for a given image and filename. This would also mean I don't have to store the actual full image path with the image metadata, just the filename. Is there any reason that I'm missing that this is a bad idea?
Yes, this is reasonable. Not, this is not a bad idea. Only save such information in a db when availability changes per entry (in this case, a Thing). Even then, you'd only add boolean columns, one for every size. But remember, don't invent problems! If you don't need it now, don't put it in.

jjttjj posted:

Would it be better to relate Images to another table Image_Sizes in a many:many relationship so that I could be able to tell if an image size exists without having to do file stuff? Would this be necessarily or strictly better only if some images will not be available in all sizes, or is it a good idea in general to add flexibility to the app in the future?
This is dumb. See above.

jjttjj posted:

Lastly, let's say there's another entity User which will also have a couple images associated with it. Should these images be stored in the same exact manner and in the same table as the Thing Images? Or should there be separate image tables for each? Should all images for all entities be stored in one table?

3 tables.

Entity : all the columns you need for entities, plus id
Images : all the columns you need for images, plus id, plus filename
EntityImages : A junction table that has both entity_id and image_id, plus any specific columns that relate to the entity (example: ordering for albums, which image is the avatar, etc.)

Then you can decide in your code whether to save all images in the same folder, a folder per entity, whatever.

Sinestro
Oct 31, 2010

The perfect day needs the perfect set of wheels.
How do I learn more of the algorithmy side of CS without going to college for it? I don't have all that much math, so that makes it hard to use most sources that I have found.

Deus Rex
Mar 5, 2005

Sinestro posted:

How do I learn more of the algorithmy side of CS without going to college for it? I don't have all that much math, so that makes it hard to use most sources that I have found.

MIT OpenCourseWare. You can use it to fill those math holes, too. The Linear Algebra course is brilliant.

ultrafilter
Aug 23, 2007

It's okay if you have any questions.


You might also want to check out the online learning megathread. There are some free online computer science classes out there that might be worth your while to check out.

actionjackson
Jan 12, 2003

ToxicFrog posted:

Yes, in fact! There is actually a separate environment variable, %PATHEXT%, which is a list of extensions it should look for when when you enter a command. So, if you enter 'sas', not only does it seach every directory in %PATH% for 'sas', it also looks for sas.com, sas.exe, sas.bat, sas.cmd, sas.vbs, and many others. I believe Cygwin also respects this.

This is not the case on Linux/OSX, where the command you enter is the exact name of the file you search for - the system determines the file type (binary executable, shell script, python script, etc) by reading its contents rather than by checking the extension.

Can you clarify how I add that batch file to my path?

carry on then
Jul 10, 2010

by VideoGames

(and can't post for 10 years!)

Should be Start> Right click Computer>Advanced Computer Settings>Advanced tab>Environment Variables button> Scroll down to Path in the System variables section and hit edit. Put a semicolon at the end, then put in the full path to the folder the batch file is in.

Sinestro
Oct 31, 2010

The perfect day needs the perfect set of wheels.
Wouldn't it be easier to just add the directory with sas.exe to %PATH%?

carry on then
Jul 10, 2010

by VideoGames

(and can't post for 10 years!)

He doesn't want to have to type -sysin each time, hence the batch file.

actionjackson
Jan 12, 2003

Ok cool - so if I put sas.bat into the same directory as sas.exe, do I only have to put

"C:\Program Files\SAS\SASFoundation\9.2\"

in my path file so I can just type "sas program.sas"? Or would it be "sas.bat program.sas"?

actionjackson fucked around with this message at 04:28 on Jun 24, 2012

carry on then
Jul 10, 2010

by VideoGames

(and can't post for 10 years!)

actionjackson posted:

Ok cool - so if I put sas.bat into the same directory as sas.exe, do I only have to put

"C:\Program Files\SAS\SASFoundation\9.2\"

in my path file so I can just type "sas program.sas"? Or would it be "sas.bat program.sas"?

Likely the latter. If you don't want to type the .bat, put the batch file somewhere other than the location of sas.exe so there isn't a name collision. Since you already have the full path to sas.exe in the batch file, there's no need to have it on the path as long as all you intend to do is call that executable using your batch file.

actionjackson
Jan 12, 2003

carry on then posted:

Likely the latter. If you don't want to type the .bat, put the batch file somewhere other than the location of sas.exe so there isn't a name collision. Since you already have the full path to sas.exe in the batch file, there's no need to have it on the path as long as all you intend to do is call that executable using your batch file.

Okay, that makes sense. Does it matter which order I list the two directories (bat and exe) in the path file?

carry on then
Jul 10, 2010

by VideoGames

(and can't post for 10 years!)

actionjackson posted:

Okay, that makes sense. Does it matter which order I list the two directories (bat and exe) in the path file?

Sorry, I should have said, you should name your batch file something other than sas. If you put both directories on your path, whichever one comes first in the string will win. If they're different you won't have that issue. If you're fine specifying "sas.exe" when you don't want to reference your batch file, go ahead and put the batch file folder first, then the sas folder.

hayden.
Sep 11, 2007

here's a goat on a pig or something
Not sure if this is the best place for this, but does anyone have experience doing programming type jobs on Elance? I've been looking and applying to a few jobs for a few days now but it seems unlikely that I'll ever get hired since I don't have any work history on the site. Every listing also has about a dozen applicants from India or whatever and I have no idea if I could ever compete with them on a price basis.

Hammerite
Mar 9, 2007

And you don't remember what I said here, either, but it was pompous and stupid.
Jade Ear Joe

hayden. posted:

Not sure if this is the best place for this, but does anyone have experience doing programming type jobs on Elance? I've been looking and applying to a few jobs for a few days now but it seems unlikely that I'll ever get hired since I don't have any work history on the site. Every listing also has about a dozen applicants from India or whatever and I have no idea if I could ever compete with them on a price basis.

There's a recent thread about ELance and similar sites. It's partly ranting and partly advice iirc, you might find it interesting. :)

hayden.
Sep 11, 2007

here's a goat on a pig or something
Great, thanks, must have missed it.

unbuttonedclone
Dec 30, 2008
Where do I post about the great app idea I have but don't no how t program? Is there a for hire thread?

Suspicious Dish
Sep 24, 2011

2020 is the year of linux on the desktop, bro
Fun Shoe

thylacine posted:

Where do I post about the great app idea I have but don't no how t program?

Nowhere.

thylacine posted:

Is there a for hire thread?

Yes.

actionjackson
Jan 12, 2003

carry on then posted:

Sorry, I should have said, you should name your batch file something other than sas. If you put both directories on your path, whichever one comes first in the string will win. If they're different you won't have that issue. If you're fine specifying "sas.exe" when you don't want to reference your batch file, go ahead and put the batch file folder first, then the sas folder.

Just wanted to update - I made a batch file called sasbat.bat and put it in the same directory as sas.exe. Once I added this directory to my path I was able to just type "sas program" even without the .sas and it works. Thanks!

fankey
Aug 31, 2001

I've somehow survived for 15 years without needing ( or at least recognizing I needed ) a true 3rd party database. I think I've reached the tipping point but since I don't know anything about them I'm not exactly sure where to start. First, the requirements
  • Edited from a C# WPF GUI locally
  • Edited from same GUI remotely, stored on a Linux machine
  • Read on Linux machine which needs to be notified when remote GUI changes something
  • Transferred between Windows and Linux as a single opaque file
Right now we are using a XML file. When the Windows GUI modifies something it writes the XML out locally or sends it to the Linux machine over HTTP. The Linux machine is watching the file system and reloads the XML when it changes. That's all functional.

The format of the data looks something like
pre:
Root
  Setting 1 
  Setting 2
  Commands
    Command 1 { Code, ... }
    ...
  Users
    User 1
      Name
      Pin
      List of available commands
        Ref to Command A
        Ref to Command B
        ...
    ...
  Stations
    Station
      Name
      Location
      List of Users
        Ref to User 1
      ...
    ...
The issue is that now we need to more carefully validate changing the configuration. One example would be that the listed users are the same ones that can modify the settings - we need a way to limit what they can modify in a secure fashion. Given that, it may be time to delve into learning about databases. I know plenty about data structures, just not real data bases like MySQL.

Searching around, the first database I found that looked interesting was SQLite. Since it's file based and cross platform it seemed like it would likely work. There's even some C# wrappers to allow LINQ. One concern is that since it's file based multiple clients can be an issue. That would only apply to the Linux side of things and I don't need 100s of clients ( < 10 is probably realistic ) but I can't have the change of data corruption. They are a little squirly on exactly what the issue is and whether or not it's possible to make it work correctly at all with multiple clients.

On the Linux side, ideally it'd be something that the Windows GUI can connect to without any modifications and that a Linux process can monitor when it's changed. We plan on running lighttp ( we currently run the web server built into busy box... ) which looks like it might support SQLite + PHP to allow some sort of web access ( since I don't really know what I'm looking for I don't know if this will work ) but since I've never touched PHP and hear loads of good things from the Horrors thread I'm a little leary about that approach. Since this is an embedded Linux machine (actually multiple - x86, ARM, PPC ) I don't want to run full blown Apache.

[b]TLDR:[\b] I know nothing about databases but plenty about programming ( C/C++, C#, lua, ObjC ). Where should I start?

Doctor w-rw-rw-
Jun 24, 2008

fankey posted:

Where should I start?

IIRC, access to SQLite is not threadsafe by design and therefore must be synchronized if it's being used concurrently. So you'll want to set up a server to act as the gatekeeper between the database and clients if you go down that route. I don't know how big your appetite is for abstraction but if you define an API between the data store and the application, then you could have a different data store abstraction - the local one would use SQLite and the remote one would forward the API requests to the central server.

I don't claim this is an optimal solution so of course other suggestions and comments may have critiques of this approach which will likely have truth to them.

Adbot
ADBOT LOVES YOU

nielsm
Jun 1, 2009



Doctor w-rw-rw- posted:

IIRC, access to SQLite is not threadsafe by design and therefore must be synchronized if it's being used concurrently.

SQLite does have its own reader-writer locking giving some minimal concurrency safety. Just don't share database handles between multiple threads in the same process.

  • 1
  • 2
  • 3
  • 4
  • 5
  • Post
  • Reply